2016-04-03 34 views
0

Şu anda dünyanın dört bir yanındaki müşterileriyle Cassandra'yı idare etmenin en iyi yolunu düşünüyorum. Amerika ve Avrupa'da sunucularım var. Verilerin hangi sunucularda saklandığını etkileyecek bir mekanizma var mı? ABD'deki bir kullanıcı için veriler, amerikan sunucusunda ve Avrupa'da yalnızca bir güvenli kopyada barındırılmalıdır. Genelde belirli bir yer olarak tanımlanabilen UUID'leri düşünüyordum. Örneğin, son bit ayarlanmışsa, ABD'de ve başka bir şekilde Avrupa'da bir sunucuda olmalıdır. Sonra, değeri Amerikan sunucularının menzilindeki bir değere atayan özel bir Partitioner yazmayı düşünüyordum. Örneğin 00-7f ile başlarsa Avrupa ve 80-ff Amerika'dadır. Bu yüzden UUID'deki konum bilgilerine dayanarak ilk biti ayarlayan normal bir Murmur3 kullanabilirdim. Belirli bir sunucunun bölüm aralığını etkileyebilir miyim? Özellikle sanal düğümlerle bu karmaşıklaşabilir, bence. İstenen gibi sunucu konumu tabanlı bölüm seçimi elde etmek için bir yolu var mı? Bu sorunu çözmeye nasıl çalışırdınız?Sunuculardaki veri depoları Cassandra'daki kullanıcı konumuna nasıl yakın gelir?

cevap

1

Şu anda, her bölge için farklı anahtar alanlarına sahip olmanız gerekir. Bir kez bittiğinde, çoğaltma stratejisini NetworkTopologyStrategy olarak ayarlayabilir ve daha sonra veri lokasyonu beklentinize uyacak şekilde çoğaltma faktörünü ayarlamak için NTS'yi kullanabilirsiniz.

Açıkladığınız bir sorunu (CASSANDRA-7306) açıkladığınız şekilde, konumunuzu kontrol etme fırsatını eklemeyi önerdi. Şu anda, çalışmanın yakın olduğuna ya da yakın gelecekte uygulanacağına dair bir işaret yok, bu yüzden bunu gerçekleştirmenin gerçek yolu NetworkTopologyStrategy ile ve çoğaltma faktörünü uygun şekilde yapılandırıyor.