Apache Kafka - WorkFlow
Hiện tại, chúng ta đã thảo luận về các khái niệm cốt lõi của Kafka. Bây giờ chúng ta hãy xem xét quy trình làm việc của Kafka.
Kafka chỉ đơn giản là một tập hợp các chủ đề được chia thành một hoặc nhiều phân vùng. Phân vùng Kafka là một chuỗi các thông báo được sắp xếp theo thứ tự tuyến tính, trong đó mỗi thông báo được xác định bởi chỉ mục của chúng (được gọi là bù đắp). Tất cả dữ liệu trong một cụm Kafka là sự kết hợp rời rạc của các phân vùng. Các tin nhắn đến được viết ở cuối một phân vùng và các tin nhắn được người tiêu dùng đọc tuần tự. Độ bền được cung cấp bằng cách sao chép thông điệp đến các nhà môi giới khác nhau.
Kafka cung cấp cả hệ thống nhắn tin pub-sub và hàng đợi theo cách nhanh chóng, đáng tin cậy, bền bỉ, khả năng chịu lỗi và không có thời gian chết. Trong cả hai trường hợp, nhà sản xuất chỉ cần gửi thông điệp đến một chủ đề và người tiêu dùng có thể chọn bất kỳ một loại hệ thống nhắn tin nào tùy thuộc vào nhu cầu của họ. Chúng ta hãy làm theo các bước trong phần tiếp theo để hiểu cách người tiêu dùng có thể chọn hệ thống nhắn tin mà họ chọn.
Quy trình làm việc của Nhắn tin Pub-Sub
Sau đây là quy trình làm việc khôn ngoan từng bước của Nhắn tin Pub-Sub -
Các nhà sản xuất gửi tin nhắn đến một chủ đề theo định kỳ.
Nhà môi giới Kafka lưu trữ tất cả các thông báo trong các phân vùng được định cấu hình cho chủ đề cụ thể đó. Nó đảm bảo các thông điệp được chia sẻ đồng đều giữa các phân vùng. Nếu nhà sản xuất gửi hai tin nhắn và có hai phân vùng, Kafka sẽ lưu trữ một tin nhắn trong phân vùng thứ nhất và tin nhắn thứ hai trong phân vùng thứ hai.
Người tiêu dùng đăng ký một chủ đề cụ thể.
Khi người tiêu dùng đăng ký một chủ đề, Kafka sẽ cung cấp phần bù hiện tại của chủ đề đó cho người tiêu dùng và cũng tiết kiệm phần bù trong nhóm Zookeeper.
Người tiêu dùng sẽ yêu cầu Kafka trong một khoảng thời gian đều đặn (như 100 Ms) cho các tin nhắn mới.
Khi Kafka nhận được tin nhắn từ nhà sản xuất, nó sẽ chuyển tiếp những thông điệp này đến người tiêu dùng.
Người tiêu dùng sẽ nhận được tin nhắn và xử lý nó.
Sau khi tin nhắn được xử lý, người tiêu dùng sẽ gửi xác nhận đến nhà môi giới Kafka.
Khi Kafka nhận được một xác nhận, nó sẽ thay đổi giá trị bù đắp thành giá trị mới và cập nhật nó trong Zookeeper. Vì các hiệu số được duy trì trong Zookeeper, người tiêu dùng có thể đọc chính xác thông báo tiếp theo ngay cả khi máy chủ ngừng hoạt động.
Luồng trên sẽ lặp lại cho đến khi người tiêu dùng ngừng yêu cầu.
Người tiêu dùng có tùy chọn tua lại / bỏ qua đến độ lệch mong muốn của một chủ đề bất kỳ lúc nào và đọc tất cả các tin nhắn tiếp theo.
Quy trình làm việc của Nhắn tin Hàng đợi / Nhóm Người tiêu dùng
Trong hệ thống nhắn tin hàng đợi thay vì một người tiêu dùng, một nhóm người tiêu dùng có cùng ID nhóm
sẽ đăng ký một chủ đề. Nói một cách dễ hiểu, người tiêu dùng đăng ký một chủ đề có cùng ID nhóm
được coi là một nhóm duy nhất và thông điệp được chia sẻ giữa họ. Hãy để chúng tôi kiểm tra quy trình làm việc thực tế của hệ thống này.
Nhà sản xuất gửi thông điệp đến một chủ đề trong một khoảng thời gian đều đặn.
Kafka lưu trữ tất cả các thông báo trong các phân vùng được cấu hình cho chủ đề cụ thể đó tương tự như kịch bản trước đó.
Một người tiêu dùng đăng ký một chủ đề cụ thể, giả sử
Chủ đề-01
vớiID
Nhóm
làNhóm-1
.Kafka tương tác với người tiêu dùng theo cách giống như Nhắn tin Pub-Sub cho đến khi người tiêu dùng mới đăng ký cùng chủ đề,
Chủ đề-01
với cùngID
nhóm
vớiNhóm-1
.Khi người tiêu dùng mới đến, Kafka sẽ chuyển hoạt động của mình sang chế độ chia sẻ và chia sẻ dữ liệu giữa hai người tiêu dùng. Việc chia sẻ này sẽ tiếp tục cho đến khi số lượng người phản đối đạt đến số lượng phân vùng được định cấu hình cho chủ đề cụ thể đó.
Khi số lượng người tiêu dùng vượt quá số lượng phân vùng, người tiêu dùng mới sẽ không nhận được bất kỳ tin nhắn nào nữa cho đến khi bất kỳ người nào trong số người tiêu dùng hiện tại hủy đăng ký. Kịch bản này nảy sinh vì mỗi người tiêu dùng ở Kafka sẽ được chỉ định tối thiểu một phân vùng và một khi tất cả các phân vùng được chỉ định cho những người tiêu dùng hiện tại, những người tiêu dùng mới sẽ phải chờ đợi.
Tính năng này còn được gọi là
Nhóm người tiêu dùng
. Theo cách tương tự, Kafka sẽ cung cấp những gì tốt nhất của cả hai hệ thống một cách rất đơn giản và hiệu quả.
Vai trò của ZooKeeper
Một phụ thuộc quan trọng của Apache Kafka là Apache Zookeeper, là một dịch vụ đồng bộ hóa và cấu hình phân tán. Zookeeper đóng vai trò là giao diện phối hợp giữa các nhà môi giới Kafka và người tiêu dùng. Các máy chủ Kafka chia sẻ thông tin qua một cụm Zookeeper. Kafka lưu trữ siêu dữ liệu cơ bản trong Zookeeper, chẳng hạn như thông tin về chủ đề, nhà môi giới, phần bù của người tiêu dùng (người đọc hàng đợi), v.v.
Vì tất cả thông tin quan trọng được lưu trữ trong Zookeeper và nó thường sao chép dữ liệu này trên toàn bộ nhóm của nó, lỗi của Kafka broker / Zookeeper không ảnh hưởng đến trạng thái của cụm Kafka. Kafka sẽ khôi phục trạng thái sau khi Zookeeper khởi động lại. Điều này giúp cho Kafka không có thời gian chết. Bầu cử lãnh đạo giữa nhà môi giới Kafka cũng được thực hiện bằng cách sử dụng Zookeeper trong trường hợp lãnh đạo thất bại.
Để tìm hiểu thêm về Zookeeper, vui lòng tham khảo Zookeeper
Hãy để chúng tôi tiếp tục tìm hiểu thêm về cách cài đặt Java, ZooKeeper và Kafka trên máy của bạn trong chương tiếp theo.