Tôi đang sử dụng spymemcached & HashAlgorithm.KETAMA_HASH để kết nối với một nhóm memcached gồm 5 nút.Cách xử lý các nút ghi nhớ khôi phục khi sử dụng spymemcached & HashAlgorithm.KETAMA_HASH
hiểu biết của tôi là khi chúng tôi sử dụng một thuật toán hàm băm ổn định như thế nào, khi một nút là xuống, chúng ta không cần phải lo lắng như là chìa khóa sẽ được tái phân phối (với tác động tối thiểu.)
Sẽ thế nào nếu nút down-ed sẽ tham gia vào nhóm. Tôi cần làm gì?
Tôi có nên đảm bảo xóa dữ liệu cũ? Hoặc chương trình của tôi có cần xử lý đặc biệt cho trường hợp này không?
Sự hiểu biết của tôi là tôi phải xóa tất cả dữ liệu cũ trong tất cả các nút. Tại sao? Bởi vì một số khách hàng có thể nhìn thấy nút down-ed là lên nhưng một số khách hàng vẫn có thể giả định nút là xuống. Vì vậy, cho rằng khách hàng có thể băm khóa vào nút khác nhau, dữ liệu không thống nhất có thể xảy ra. Nhưng vấn đề này là khó khăn, trừ khi chúng ta có một cách để khóa tất cả các nút memcached và thực hiện tuôn ra - để tránh điều kiện chủng tộc. – Howard
Dựa trên ý kiến của tôi, tôi nghĩ rằng nó vẫn an toàn để chỉ tuôn ra nút xuống-ed. Nó sạch sẽ, nếu có bất kỳ yêu cầu nào đến nút, nó sẽ dẫn đến việc bỏ lỡ, thêm thông tin mới và mới. Nếu khách hàng nghĩ rằng nó là xuống, nó sẽ băm vào một nút khác, cũng dẫn đến bỏ lỡ. Nếu điều đó xảy ra, cả hai nút có khóa 'foo' chẳng hạn. Khi nút down-ed trở lại trực tuyến cho khách hàng đó, bạn cần phải xả nó một lần nữa. Đây là một số chi tiết về điều này: http://www.caiapps.com/duplicate-key-problem-in-memcache-php/ –
có nhưng những gì bạn nói chỉ hợp lệ khi bạn có một khách hàng singe nhưng nhiều máy chủ. không có cách nào để điều phối các máy khách khác nhau để sử dụng cùng một tập hợp các máy chủ memcached tại một thời điểm nhất định (giả sử sử dụng băm đồng nhất). – Howard