Logo Zephyrnet

Khái niệm cơ bản về Kafka: Giới thiệu về Nhóm người tiêu dùng Kafka & Cách sử dụng?

Ngày:

Apache Kafka là gì?

Ảnh: Unsplash

Apache Kafka là một kho dữ liệu phân tán được thiết kế để nhập và xử lý dữ liệu theo thời gian thực. Dữ liệu truyền trực tuyến là dữ liệu được tạo ra liên tục bởi hàng trăm nguồn dữ liệu, thường gửi các bản ghi dữ liệu vào cùng một lúc. Một nền tảng phát trực tuyến phải có khả năng đối phó với dòng dữ liệu liên tục và xử lý nó một cách tuần tự và dần dần.

Người dùng có thể sử dụng Kafka cho ba mục đích khác nhau:

Các dòng hồ sơ được xuất bản và đăng ký.
Các luồng bản ghi phải được lưu trữ theo thứ tự mà chúng đã được tạo.
Thời gian thực xử lý luồng dữ liệu
Kafka được sử dụng phổ biến nhất để tạo các đường ống dữ liệu trực tuyến theo thời gian thực và các ứng dụng thích ứng với các luồng dữ liệu. Nó kết hợp truyền thông, lưu trữ và xử lý luồng để cung cấp cả lưu trữ và phân tích dữ liệu lịch sử và thời gian thực.

Nhóm người tiêu dùng

A Người tiêu dùng Kafka nhóm là một nhóm người làm việc cùng nhau để cung cấp thông tin về một chủ đề nhất định. Người tiêu dùng của nhóm được chia thành các phân vùng cho từng chủ đề. Khi các thành viên mới tham gia vào nhóm và những người cũ rời đi, các phân vùng được chỉ định lại để mỗi thành viên nhận được một phần tương xứng của các phân vùng. Tái cân bằng nhóm là những gì nó được gọi.

Sự khác biệt cơ bản giữa người tiêu dùng “cấp cao” cũ và người tiêu dùng mới là người tiêu dùng trước dựa vào ZooKeeper để quản lý nhóm, trong khi người tiêu dùng sau dựa vào giao thức nhóm do Kafka xây dựng. Một trong những nhà môi giới được chỉ định làm điều phối viên của nhóm trong giao thức này và anh ta hoặc cô ta chịu trách nhiệm quản lý các thành viên của nhóm cũng như nhiệm vụ phân vùng của họ.

Điều phối viên của mỗi nhóm được chọn trong số các nhà lãnh đạo của chủ đề bù trừ nội bộ __consumer, nơi lưu trữ các khoản bù đã cam kết. Về bản chất, ID của nhóm được băm thành một trong các phân vùng của chủ đề và người đứng đầu phân vùng đó được chọn làm người điều phối. Do đó, việc quản lý nhóm người tiêu dùng được phân bổ khá đồng đều trên tất cả các nhà môi giới trong cụm, cho phép số lượng các nhóm phát triển khi số lượng nhà môi giới tăng lên.

Cấu hình người tiêu dùng Kafka

Ảnh: unsplash

Dưới đây là một số cài đặt cấu hình quan trọng nhất, cùng với cách chúng ảnh hưởng đến hành vi của người tiêu dùng.

Thiết lập mặc định

Cài đặt bắt buộc duy nhất là bootstrap.servers, nhưng bạn cũng nên đặt client.id để có thể dễ dàng liên kết các yêu cầu với phiên bản máy khách đã tạo ra chúng. Để thực thi hạn ngạch khách hàng, tất cả người tiêu dùng trong một nhóm nhất định thường sẽ có cùng một ID khách hàng.

Thiết lập một nhóm

Nếu bạn đang sử dụng API gán đơn giản và không cần giữ các hiệu số trong Kafka, bạn nên luôn định cấu hình group.id. Giá trị session.timeout.ms có thể được ghi đè để điều chỉnh thời gian chờ của phiên.
Giá trị session.timeout.ms có thể được ghi đè để điều chỉnh thời gian chờ của phiên. Trong các ứng dụng khách C / C ++ và Java, thời gian chờ mặc định là 10 giây, nhưng bạn có thể kéo dài thời gian chờ để tránh tái cân bằng quá mức do kết nối mạng kém hoặc GC tạm dừng lâu chẳng hạn.

Nhược điểm lớn nhất của việc áp dụng thời gian chờ phiên dài hơn là điều phối viên phải mất nhiều thời gian hơn để xác định khi nào một phiên bản người tiêu dùng bị lỗi, điều này có nghĩa là người tiêu dùng khác trong nhóm sẽ mất nhiều thời gian hơn để thực hiện các phân vùng của nó. Mặt khác, việc ngừng hoạt động bình thường được kích hoạt bởi người tiêu dùng gửi yêu cầu rõ ràng đến điều phối viên để thoát khỏi nhóm, gây ra sự cân bằng lại ngay lập tức.

max.poll.interval.ms là một thuộc tính khác có thể có tác động đến việc tái cân bằng quá mức. Tham số này đặt khoảng thời gian tối đa giữa các lần gọi phương thức thăm dò trước khi quy trình của người tiêu dùng được đánh giá là không thành công. Nếu chương trình của bạn yêu cầu nhiều thời gian hơn để xử lý thông báo so với mặc định là 300 giây, bạn có thể tăng thời gian đó một cách an toàn.

Quản lý bù đắp

Chính sách đặt lại bù đắp và liệu tự động cam kết có được bật hay không là hai tùy chọn quan trọng nhất ảnh hưởng đến quản lý bù đắp. Đầu tiên, nếu enable.auto.commit được đặt thành true (là giá trị mặc định), người tiêu dùng sẽ cam kết bù vào khoảng thời gian được xác định bởi auto.commit.interval.ms. Thời gian chờ được đặt thành 5 giây theo mặc định.
Theo mặc định, người tiêu dùng sẽ bật chế độ bù đắp tự động cam kết. Bạn được gửi “ít nhất một lần” bằng cách sử dụng tính năng tự động cam kết: Mặc dù Kafka đảm bảo rằng không có thư nào bị mất, nhưng vẫn có thể xảy ra trùng lặp. Thuộc tính cấu hình auto.commit.interval.ms hoạt động như một cron với khoảng thời gian do người dùng chọn. Nếu người tiêu dùng gặp sự cố, tất cả các phân vùng do người tiêu dùng gặp sự cố nắm giữ sẽ được đặt lại vị trí của chúng về mức bù đã cam kết cuối cùng sau khi khởi động lại hoặc cân bằng lại. Vị trí đã cam kết cuối cùng có thể cũ bằng chính khoảng thời gian cam kết tự động nếu điều này xảy ra. Mọi thông báo nhận được kể từ lần cam kết trước phải được đọc lại.

Công cụ chỉ huy nhóm người tiêu dùng Kafka

Ảnh: Unsplash

Trạng thái của các nhóm người tiêu dùng có thể được xem bằng tiện ích quản trị Kafka.

Các nhóm theo thứ tự bảng chữ cái

Chức năng kafka-nhóm người tiêu dùng đi kèm với phân phối Kafka có thể được sử dụng để lấy danh sách các nhóm đang hoạt động trong cụm. Điều này có thể mất nhiều thời gian trên một cụm lớn vì nó thu thập danh sách bằng cách kiểm tra từng nhà môi giới.
bin / kafka-Consumer-groups –bootstrap-server host: 9092 –list

mô tả nhóm

Hàm kafka-nhóm người tiêu dùng cũng có thể được sử dụng để thu thập dữ liệu về một nhóm cụ thể. Ví dụ: thực hiện lệnh sau để xem các nhiệm vụ hiện tại cho nhóm foo:
bin / kafka-Consumer-groups –bootstrap-server host: 9092 –describe –group foo

Kết luận

Trong mô tả trên, chúng ta có thể thấy về nhóm người tiêu dùng Kafka và cách nó được sử dụng trong suốt quá trình.

Nguồn: Plato Data Intelligence: PlatoData.io

tại chỗ_img

Tin tức mới nhất

tại chỗ_img

Trò chuyện trực tiếp với chúng tôi (chat)

Chào bạn! Làm thế nào để tôi giúp bạn?