- vừa được xem lúc

Kafka Static Group Membership

0 0 6

Người đăng: Nguyễn Trung Nam

Theo Viblo Asia

1. Mở đầu

Mặc định, định danh của một consumer như là thành viên của consumer group là tạm thời. Khi các consumer rời khỏi consumer group, các partition đã được phân bổ cho consumer đó sẽ bị thu hồi, và khi nó gia nhập lại, nó sẽ được cấp một ID thành viên mới và một tập hợp partition mới thông qua giao thức rebalance.

2. Phân tích

Tất cả điều này là đúng trừ khi chúng ta cấu hình một consumer với group.instance.id duy nhất, điều này làm cho consumer trở thành thành viên cố định của nhóm. Khi một consumer lần đầu gia nhập vào consumer group với tư cách là thành viên cố định của nhóm, nó sẽ được phân bổ một tập hợp các partition theo chiến lược phân bổ partition mà nhóm đang sử dụng, như bình thường. Tuy nhiên, khi consumer này ngừng hoạt động, nó không tự động rời khỏi nhóm—nó vẫn là thành viên của nhóm cho đến khi phiên làm việc của nó hết hạn. Khi consumer gia nhập lại nhóm, nó sẽ được nhận diện với danh tính cố định của nó và được phân bổ lại các partition mà nó đã giữ trước đó mà không kích hoạt rebalance. Group coordinator lưu trữ phân bổ cho từng thành viên của nhóm không cần kích hoạt rebalance mà chỉ cần gửi phân bổ đã lưu vào bộ nhớ đệm cho thành viên cố định gia nhập lại.

Nếu hai consumer gia nhập cùng một nhóm với cùng một group.instance.id, consumer thứ hai sẽ nhận được lỗi thông báo rằng một consumer với ID này đã tồn tại.

Tình trạng thành viên cố định của nhóm là hữu ích khi ứng dụng của bạn duy trì trạng thái cụ bộ hoặc bộ nhớ đệm được lấp đầy bởi các partition được phân bổ cho từng consumer. Khi việc tái tạo bộ nhớ đệm này mất nhiều thời gian, bạn không muốn quá trình này xảy ra mỗi khi một consumer khởi động lại. Ngược lại, điều quan trọng là phải nhớ rằng các partition thuộc về từng consumer sẽ không được phân bổ lại khi một consumer được khởi động lại. Trong một khoảng thời gian nhất định, không có consumer nào sẽ tiêu thụ các message từ những partition này, và khi consumer cuối cùng khởi động lại, nó sẽ bị tụt lại phía sau so với các message mới nhất trong các partition này. Chúng ta nên chắc chắn rằng consumer sở hữu các partition này sẽ có thể bắt kịp với độ trễ sau khi khởi động lại.

3. Lưu ý

Điều quan trọng cần lưu ý là các thành viên cố định của consumer group không chủ động rời khỏi nhóm khi họ ngừng hoạt động, và việc phát hiện khi nào họ "thực sự biến mất" phụ thuộc vào cấu hình session.timeout.ms. Chúng ta nên thiết lập giá trị này đủ cao để tránh kích hoạt rebalance khi ứng dụng khởi động lại đơn giản, nhưng cũng đủ thấp để cho phép tự động phân bổ lại các partition của họ khi có thời gian ngừng hoạt động đáng kể, nhằm tránh các khoảng trống lớn trong việc xử lý các partition này.

4. Thông tin kết nối

Nếu anh em muốn trao đổi thêm về bài viết, hãy kết nối với mình qua LinkedIn và Facebook:

Rất mong được kết nối và cùng thảo luận!

Bình luận

Bài viết tương tự

- vừa được xem lúc

Kafka là gì?

Apache Kafka® là một nền tảng stream dữ liệu phân tán. . stream data: dòng dữ liệu, hãy tưởng tượng dữ liệu là nước trong 1 con suối. .

0 0 43

- vừa được xem lúc

001: Message-driven programming với Message broker và Apache Kafka

Bài viết nằm trong series Apache Kafka từ zero đến one. . . Asynchronous programming.

0 0 165

- vừa được xem lúc

002: Apache Kafka topic, partition, offset và broker

Bài viết nằm trong series Apache Kafka từ zero đến one. Nói qua về lịch sử, Kafka được phát triển bởi LinkedIn (các anh em dev chắc chẳng xa lạ gì) và viết bằng ngôn ngữ JVM, cụ thể là Java và Scala.

0 0 153

- vừa được xem lúc

003: Gửi và nhận message trong Apache Kafka

Bài viết nằm trong series Apache Kafka từ zero đến one. . . Nếu muốn các message được lưu trên cùng một partition để đảm bảo thứ tự thì làm cách nào.

0 0 224

- vừa được xem lúc

004: Apache Kafka consumer offset, Broker discovery và Zookeeper

Bài viết nằm trong series Apache Kafka từ zero đến one. 1) Consumer offset.

0 0 130

- vừa được xem lúc

Apache Kafka - Producer - Gửi message đến Kafka bằng kafka-python

Overview. Understand how to produce message and send to the Kafka topic. Architecture. .

0 0 65