ทำความเข้าใจ Hinted Handoffs และการจำลองข้อมูลใน Cassandra

เรามีคลัสเตอร์ Cassandra 3 โหนดที่มี RF = 2 ความสอดคล้องในการอ่านและเขียนถูกตั้งค่าเป็น ONE เรากำลังใช้ Vnodes เช่นกัน ให้ติดป้ายกำกับโหนดเหล่านี้เป็น N1, N2 และ N3 สมมุติว่า N3 ลดลง ฉันรู้สึกว่าเมื่อใดก็ตามที่โหนดล่ม โหนดอื่นๆ จะเก็บคำแนะนำ และเมื่อใดก็ตามที่ N3 ปรากฏขึ้น คำแนะนำจะถูกส่งไปยัง N3 ดังนั้นจึงมั่นใจได้ว่าข้อมูลจะสอดคล้องกันในเรพลิกาต่างๆ อย่างไรก็ตาม ขณะที่ฉันกำลังดูเอกสาร ฉันพบพารามิเตอร์ max_hint_window_in_ms ซึ่งมีค่าเริ่มต้นอยู่ที่ 3 ชั่วโมง ดังนั้น หากโหนดไม่ทำงานเป็นเวลานานกว่า 3 ชั่วโมง จะถือว่าโหนดนั้นไม่ทำงานอย่างถาวรและจะไม่มีการจัดเก็บคำใบ้ไว้ จนถึงตอนนี้ดีมาก

ดังนั้น ความเข้าใจของฉันในตอนนี้ก็คือ หากโหนดหยุดทำงานเป็นเวลา 10 ชั่วโมง คำแนะนำสำหรับ 3 ชั่วโมงแรกจะถูกโอนไปยังโหนดนี้เมื่อกลับมาทำงานอีกครั้ง แต่การเขียนสำหรับระยะเวลา 7 ชั่วโมงนี้จะหายไปสำหรับสิ่งนี้ โหนด นอกจากนี้ หากแบบสอบถามการอ่านเริ่มทำงานสำหรับช่วงโทเค็นเฉพาะ และเนื่องจากโหนดนี้ยังมีสิทธิ์ที่จะให้บริการคำขอการอ่านสำหรับช่วงโทเค็น จึงส่งคืนค่า null แทนที่จะเป็นข้อมูลจริงที่จัดเก็บไว้ในโหนดอื่น ความเข้าใจของฉันถูกต้องหรือไม่? แล้วควรทำอย่างไร?


person Ranjeet Ranjan    schedule 30.05.2017    source แหล่งที่มา
comment
สิ่งนี้กำลังถูกทดสอบและพฤติกรรมไม่คาดคิดหรือไม่ หรือคุณกำลังมองหาพฤติกรรมที่คาดหวังหากสถานการณ์เกิดขึ้น เนื่องจากคุณตั้งค่าระดับความสอดคล้องเป็น ONE การอ่าน/เขียนทั้งหมดจึงควรสำเร็จ (สมมติว่าปริมาณงานไม่มาก)   -  person daniel    schedule 30.05.2017
comment
ฉันกำลังพยายามประเมินว่าพฤติกรรมจะเป็นอย่างไรหากหนึ่งในโหนดของฉันหยุดทำงานเป็นเวลานานกว่า 3 ชั่วโมง (ค่าเริ่มต้นคือ max_hint_window_in_ms)   -  person Ankush92    schedule 30.05.2017


คำตอบ (1)


แล้วควรทำอย่างไร?

เอกสารระบุว่าเมื่อคุณนำดาวน์โหนด (N3) กลับมา คุณจะต้องทำการซ่อมแซมโหนดนั้น

จริงๆ แล้ว ในคลัสเตอร์ส่วนใหญ่ของเรา ฉันพบว่าการลบโหนดออก (ในขณะที่โหนดไม่ทำงาน) นั้นง่ายกว่า จากนั้นบูตใหม่ลงในคลัสเตอร์ ซึ่งมักจะเร็วกว่าการคำนวณแผนผัง Merkle และการสตรีมข้อมูลการซ่อมแซม แต่ถ้าคุณมีข้อมูลต่อโหนดไม่มาก (เช่น น้อยกว่า 20GB) การเรียกใช้การซ่อมแซมก็ไม่น่าจะเจ็บปวดเกินไป

person Aaron    schedule 30.05.2017
comment
ฉันเดาว่าคุณพูดถูก เรามีข้อมูลประมาณ 100 GB ต่อโหนด ซึ่งเพิ่มขึ้นในอัตราประมาณ 5-10 GB ต่อวัน การซ่อมแซมค่อนข้างเจ็บปวด ต้องทิ้งไว้ข้ามคืน แต่เนื่องจากการส่งต่อที่บอกเป็นนัยเป็นส่วนหนึ่งของกระบวนการซ่อมแซม และจะถูกเก็บไว้เพียงระยะเวลา 3 ชั่วโมง (ค่าเริ่มต้น) เราจะยังคงสูญเสียข้อมูลในช่วงเวลาหลังจาก 3 ชั่วโมง แม้ว่าจะดำเนินการซ่อมแซมแล้วก็ตาม - person Ankush92; 30.05.2017
comment
@ Ankush92 ไม่ RF=2 ของคุณช่วยให้แน่ใจว่าจะมีการเขียนแบบจำลองอย่างน้อยหนึ่งรายการ เมื่อคุณซ่อมแซม/บูตสแตรป โหนดเป้าหมายจะใช้เรพลิกานั้นเพื่อสตรีมข้อมูลไปยังโหนดนั้น - person Aaron; 30.05.2017