(ขออภัยหากนี่ไม่ใช่ฟอรัมที่ถูกต้อง StackOverflow ก็ดูไม่ถูกต้องเช่นกัน ฉันคิดว่าเคยมีคำอธิบายในหน้าแรกที่บอกว่าคำถามประเภทใดที่เกี่ยวข้อง แต่วันนี้ฉันหาไม่เจอ)
ฉันมีเซิร์ฟเวอร์หลายเครื่องที่จะจัดการข้อมูลสำหรับชุดไคลเอนต์ ฉันไม่ทราบล่วงหน้าว่าไคลเอนต์ใดจะเชื่อมต่อกับเซิร์ฟเวอร์ใดและไคลเอ็นต์อาจย้ายระหว่างเซิร์ฟเวอร์ ฉันต้องการวิธีสำหรับเซิร์ฟเวอร์ในการแบ่งปันข้อมูลล่าสุดเกี่ยวกับลูกค้า
สมมติว่าฉันมีไคลเอ็นต์ C1, C2, C3 และ C4 และเซิร์ฟเวอร์ S1 และ S2 เซิร์ฟเวอร์เริ่มทำงานและรู้ว่าลูกค้าคือ C1..C4 แต่ไม่รู้อะไรเกี่ยวกับพวกเขา C1 และ C2 เชื่อมต่อกับ S1 และ S1 รักษาสถานะบางอย่างเกี่ยวกับพวกเขา S1 แชร์สถานะปัจจุบันของ C1 และ C2 กับ S2 เป็นระยะๆ เมื่อถึงจุดหนึ่ง C1 จะตัดการเชื่อมต่อจาก S1 และเชื่อมต่อกับ S2 S2 มีสถานะเก่าเล็กน้อยสำหรับ C1 และส่วนใหญ่สามารถรับการจัดการ C1 ได้โดยไม่หยุดชะงัก
ในระหว่างนี้ C3 และ C4 เชื่อมต่อกับ S2 และสิ่งเดียวกันก็เกิดขึ้นมากมาย S2 รักษาสถานะสำหรับ C3 และ C4 และแจ้งให้ S1 ทราบเป็นระยะๆ หาก C3 ย้ายไปที่ S1 แสดงว่ามีสถานะเก่าเล็กน้อยแล้ว
ฉันพิจารณา MQTT และให้แต่ละเซิร์ฟเวอร์เผยแพร่สิ่งที่รู้และสมัครรับข้อมูลที่อาจต้องการทราบ แต่ปริมาณข้อมูลที่ฉันคาดไว้ไม่เหมาะกับกรณีการใช้งานของ MQTT มากนัก (อาจมีไคลเอนต์ 256k หรือมากกว่า FWIW ข้อมูลเฉพาะไคลเอ็นต์คือ ~ 64 ไบต์)
Redis อยู่ในใจ แต่ดูเหมือนจะไม่ถูกต้องนักเนื่องจากการจำลองแบบดูเหมือนจะคัดลอกอินสแตนซ์ทั้งหมดจากต้นแบบไปยังแบบจำลองและที่นี่ฉันมีข้อมูลบางส่วนที่แต่ละเซิร์ฟเวอร์เป็นเจ้าของ (หรืออัปเดตล่าสุด)
หาก Redis ไม่ใช่เครื่องมือที่เหมาะสม ฉันมีตัวเลือกอะไรบ้าง
ทีไอเอ.