0
0
Lập trình
Harry Tran
Harry Tran106580903228332612117

Cơ Bản Về Kafka cho Kỹ Sư Dữ Liệu

Đăng vào 7 tháng trước

• 4 phút đọc

Giới thiệu về Apache Kafka

Apache Kafka là một nền tảng mã nguồn mở phân tán cho việc phát sóng sự kiện. Được phát triển ban đầu bởi LinkedIn và sau đó mã nguồn mở dưới Quỹ Phần mềm Apache.

Các Khái Niệm Cơ Bản

Sự kiện (Event)

Sự kiện là một bản ghi của một điều gì đó đã xảy ra trong hệ thống, ví dụ như nhấn nút trên website, chèn dữ liệu vào cơ sở dữ liệu, v.v.

Phát sóng (Streaming)

Đây là việc tạo ra, chuyển giao và xử lý dữ liệu liên tục theo thời gian thực.

Phát sóng sự kiện (Event Streaming)

Là việc ghi lại, lưu trữ và xử lý các sự kiện khi chúng xảy ra:

  • Ghi lại dữ liệu theo thời gian thực dưới dạng dòng sự kiện.
  • Lưu trữ các dòng sự kiện để truy xuất sau này.
  • Xử lý, phản ứng với các dòng sự kiện theo thời gian thực.
  • Chuyển hướng các dòng sự kiện đến các công nghệ đích khi cần thiết.

Kiến Trúc Kafka

1. Brokers

Brokers là máy chủ Kafka. Chúng:

  • Lưu trữ các chủ đề (topics) và phân vùng (partitions).
  • Xử lý các tin nhắn đến và đi.
  • Giao tiếp với các nhà sản xuất (producers) và người tiêu dùng (consumers).

Cụm Kafka thường có nhiều brokers để mở rộng quy mô và đảm bảo khả năng chịu lỗi.

2. Zookeeper vs KRaft Mode

Zookeeper
Là một dịch vụ đồng bộ phân tán, giúp quản lý metadata, cấu hình và đồng bộ hóa cho các hệ thống phân tán.

  • Theo dõi tất cả các broker Kafka.
  • Bầu ra broker điều khiển chịu trách nhiệm cho việc phân chia phân vùng.
  • Phát hiện và quản lý các sự cố hoặc khởi động lại broker.

KRaft Mode
Trong chế độ KRaft, Kafka loại bỏ Zookeeper và quản lý mọi thứ bên trong:

  • Các broker xử lý dữ liệu, các controller quản lý metadata bằng cách sử dụng giao thức Raft.

3. Cài đặt và Mở Rộng Cụm

Một cụm là một nhóm các broker Kafka hoạt động cùng nhau. Việc mở rộng được thực hiện bằng cách thêm hoặc gỡ bỏ brokers, điều này kích hoạt việc cân bằng lại phân vùng.

Các bước cài đặt:

  1. Triển khai nhiều phiên bản broker để tăng dung lượng lưu trữ và thông lượng.
  2. Tạo các chủ đề và chia nhỏ chúng thành các phân vùng.
  3. Để đảm bảo khả năng chịu lỗi, sao chép mỗi phân vùng qua nhiều brokers.
  4. Kết nối các ứng dụng khách như producers và consumers đến cụm.

Chủ đề, Phân vùng và Offset

Chủ đề (Topic)

Chủ đề là một danh mục logic hoặc tên nguồn mà các sự kiện (tin nhắn/bản ghi) được công bố.

Phân vùng (Partition)

Phân vùng là một phần nhỏ của các chủ đề Kafka. Đây là đơn vị lưu trữ thực tế nơi các sự kiện được lưu trữ trong một nhật ký không thay đổi.

Offset

Là vị trí của một bản ghi trong một phân vùng. Offset là một số nguyên tăng dần được gán cho mỗi bản ghi trong một phân vùng.

Các Nhà sản xuất (Producers)

Nhà sản xuất là các ứng dụng khách công bố (ghi) sự kiện vào một chủ đề Kafka. Họ có thể chọn phân vùng mà sự kiện sẽ được gửi đến.

Các chế độ xác nhận (acks)

  1. acks=0: Không chờ xác nhận.
  2. acks=1: Chờ xác nhận từ broker lãnh đạo.
  3. acks=all: Chờ xác nhận từ tất cả các bản sao.

Người tiêu dùng (Consumers)

Người tiêu dùng là các ứng dụng khách đăng ký (đọc và xử lý) các sự kiện từ một chủ đề Kafka. Họ có thể đọc từ một hoặc nhiều phân vùng.

Quản lý offset

  1. Cam kết tự động: Kafka tự động xử lý việc cam kết offset.
  2. Cam kết thủ công: Người tiêu dùng tự cam kết offset sau khi đã xử lý.

Nguyên tắc cung cấp tin nhắn

  • At-Most-Once: Tin nhắn có thể bị mất nhưng không bao giờ bị trùng lặp.
  • At-Least-Once: Tin nhắn không bao giờ bị mất nhưng có thể bị trùng lặp.
  • Exactly-Once: Mỗi tin nhắn được cung cấp chính xác một lần.

Chính sách giữ lại

Chính sách giữ lại giúp quản lý dữ liệu được lưu trữ trong các chủ đề Kafka.

  1. Giữ lại theo thời gian: Tin nhắn được giữ lại trong một khoảng thời gian nhất định.
  2. Giữ lại theo kích thước: Giới hạn dung lượng đĩa mà một chủ đề hoặc phân vùng có thể sử dụng.
  3. Làm sạch nhật ký: Giữ lại giá trị mới nhất cho mỗi khóa trong một chủ đề.

Giám sát và Vận hành

Các chỉ số cần theo dõi

  • Consumer Lag: Sự khác biệt giữa tin nhắn cuối cùng được sản xuất và tin nhắn cuối cùng được tiêu thụ.
  • Health của Broker: Theo dõi trạng thái của các broker và các phân vùng chưa được sao chép.

Kết luận

Apache Kafka là một nền tảng mạnh mẽ cho việc phát sóng sự kiện, cung cấp khả năng mở rộng, độ bền và hệ sinh thái phong phú, phù hợp cho các kiến trúc dựa trên sự kiện và đường ống dữ liệu. Hãy bắt đầu khám phá Kafka để tối ưu hóa quy trình xử lý dữ liệu của bạn ngay hôm nay!

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào