แล้วถ้าเป็น Kafka นของลูกค้าจัดงข้อความยาวเกินไปหน่อยเหรอ? จะ Kafka reappoint นี้พื้นที่ดิสก์ต้องอื่นของลูกค้าและจดหมายจะ doubly จัดการ?

0

คำถาม

ว่า Kafka, 1 partition, 2 consumers.(2 ของลูกค้าไม่ได้ทำงานอยู่)

คิดว่าหน่วยที่ 1 ก็คงกลือนกินการส่งข้อความไปจัดการกับอีก 3 บริการและทันใดนั้นก็ทิ้งบนหนึ่งของพวกเขาและคิดถึง Kafka นหมดเวลา.

จะ Kafka reappoint งพื้นที่ดิสก์ต้อง 2 องลูกค้าและจดหมายจะ doubly จัดการ(ว่าหน่วยที่ 1 ก็หนึ่งในที่สุดสำเร็จ)?

1

คำตอบที่ดีที่สุด

1

แล้วถ้าเป็น Kafka นของลูกค้าจัดงข้อความยาวเกินไปหน่อยเหรอ? จะ Kafka reappoint นี้พื้นที่ดิสก์ต้องอื่นของลูกค้าและจดหมายจะ doubly จัดการ?

ใช่นั่นถูกต้อง ถ้า Kafka ของลูกค้าต้องใช้นานเกินไปที่จะจัดการข้อความไว้แล้ว ต่อมาตรวจสอบการ()คือออกช้า,Kafka จะกลัรแต่งตั้งนี่พื้นที่ดิสก์ต้องอื่นของลูกค้าและข้อความจะถูกประมวลผลอีกครั้ง(และอีกครั้ง).

สำหรับมากกว่าความชัดเจนอย่างแรกเราต้องการตัดสินและนิยามคำว่า'ชีวิตอยู่ได้นานแค่ไหนยาวเกินไปหน่อยเหรอ?'.

นี่คือกำหนดไว้โดยทรัพย์สิน max.poll.interval.ms. จาก docs,

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

ของลูกค้ากลุ่มคือ rebalanced ถ้าไม่มีการโทรเพื่อตรวจสอบการ()ในครั้งนี้

มีอีกทรัพย์สิน auto.commit.interval.ms. ที่อัตโนมัติทำแบจจะเป็นชื่อเดียวระหว่างตรวจสอบการ-มันเช็คให้เวลาเวลาที่ใช้ไปเป็นมากกว่าค่าปรับแต่งค่าโดยอัตโนมัติทำตัวเลือกการขอข้อมูลเวลาและถ้าหากผลคือใช่ที่ออฟเซ็ตเป็นคนที่ไว้ใจได้

ถ้า Kafka ของลูกค้ากำลังเหมือนกันมานานเพื่อระบวนการบันทึกออกมาแล้วก็ต่อมาตรวจสอบการ()โทรยังออกช้าและแบกลับมาบนสุดท้ายตรวจสอบการ()จะไม่ยอมรับ ถ้า rebalance เกิดขึ้นในตอนนี้คนใหม่ของลูกค้างลูกค้าได้รับมอบหมายให้มัพาร์ติชันที่จะเริ่มการประมวลผลข้อความของอีกครั้ง

ของลูกค้ากลุ่ม rebalance และผลลัพธ์จากพื้นที่ดิสก์ reassignment สามารถจะหลีกเลี่ยเพิ่มขึ้นค่านี้. นี่จะเพิ่มความที่ได้รับอนุญาตทุกช่วงเวลาระหว่างคุณไปที่นั่นรอผมติดต่อกันให้มากกว่าเวลาที่จะ consumers ต้องรับมือกับการบันทึก(s)กลับมาจากตรวจสอบการ(). ที่ consumers เดียวที่จะเข้าร่วมกับค rebalance ในการโทรเพื่อตรวจสอบการดังนั้นเพิ่มขึ้นแม็กซ์ตรวจสอบการตัวเลือกการขอข้อมูลจะยังหน่วงเวลางกลุ่ม rebalances.

มีอีกปัญหาเพิ่มขึ้นในแม็กซ์ตรวจสอบการตัวเลือกการขอข้อมูลเพื่อนใหญ่เป็นค่า. ถ้าคนของลูกค้าตายสำหรับบางเหตุผลอื่นมันต้องใช้มากกว่าที่ปรับแต่ง max.poll.interval.ms ตัวเลือกการขอข้อมูลเพื่อตรวจจับคนพวกจอมล้มเหลว

session.timeout.ms แล้ว heartbeat.interval.ms สามารถใช้ได้ในกรณีนี้เพื่อตรวจจับคนทั้งหมดความล้มเหลวก่อนหน้านี้เป็นที่สุดเท่าที่จะทำได้

สำหรับรายละเอียดเพิ่มเรื่องพวกค่าพารามิเตอร์:

ได้โปรดโปรดสังเกตว่าค่าปรับแต่งสำหรับ session.timeout.ms คงจะต้องอยู่ใน allowable ช่วงที่ปรับแต่งในการปรับแต่งค่านายหน้าขายประกันโดยคุณสมบัติ

  • กลุ่มมินกลุ่มงาน.หมดเวลา.มิลลิวินาที
  • กลุ่มแม็กซ์.กลุ่มงาน.หมดเวลา.มิลลิวินาที

ไม่อย่างนั้นตามยกเว้นจะถูกโยนลงในขณะที่เริ่มต้นของลูกค้าลูกค้า

Exception in thread "main" org.apache.kafka.common.errors.InvalidSessionTimeoutException:
The session timeout is not within the range allowed by the broker
(as configured by group.min.session.timeout.ms and group.max.session.timeout.ms)

ปรับปรุง:เพื่อหลีกเลี่ยงการจัดการข้อความของอีกครั้ง

มีวิธีอื่นอีกใน KafkaConsumer เรียน commitAsync() กระตุ้นให้ทำแบดำเนินงานการ)กิบัติงานอยู่

ConsumerRecords<String, String> records = kafkaConsumer.poll(Duration.ofMillis(500));
kafkaConsumer.commitAsync();

สำหรับรายละเอียดเพิ่มขึ้น commitSync()และ commitAsync(),โปรดตรวจสอบ ด้านนี้

ทำเป็นช่วงเวลาด้วยตนเองเป็นการกระทำขอบอกว่าช่วงเวลาได้ถูกประมวลผลดังนั้นค Kafka จะไม่ส่งบันทึกสำหรับเดียวกันพื้นที่ดิสก์อีกครั้ง ตอนที่แบมุ่งมั่นที่ด้วยตนเองมันคือสิ่งสำคัญสำหรับโปรดสังเกตว่าหากคนของลูกค้าก็จะตายก่อนที่การประมวลผลบันทึกว่าจะด้วยเหตุผลอะไรก็ตามมันมีโอกาสที่พวกบันทึกของจะไม่ถูกประมวลผลอีกครั้ง

2021-11-25 07:04:25

ขอบคุณมันชัดเจน มีวิธีที่จะหลีกเลี่ยงที่สองจัดการเรื่อ?
J.J. Beam

@เจเจบีมปรับปรุงคำตอบกับที่อยู่เชื่อมโยงกันตัวอย่าง
arunkvelu

ในภาษาอื่นๆ

หน้านี้อยู่ในภาษาอื่นๆ

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................

ดังอยู่ในนี้หมวดหมู่

ดังคำถามอยู่ในนี้หมวดหมู่