Kafka là gì? 5 cách sử dụng Kafka phổ biến

  • Sunday 31/10/2021

1. Kafka là gì?

Nếu bạn mới tìm hiểu về Kafka bạn sẽ thấy nhiều điều khá lạ, vì Confluent định nghĩa đây là một nền tảng stream, nhiều bài viết khác cũng đi theo định hướng này; còn nhiều bài viết khác lại nói về Kafka là một message broker.

 

1.1. Apache Kafka là gì?

Apache Kafka là một hệ thống phân tán message – distributed messaging system, Kafka được phát triển và duy trì bởi Apache, vì thế Kafka (message broker) có tên là Apache Kafka.

Giống như những chương trình/ phần mềm message broker khác, nó được phát triển theo mô hình public/subscribe. Bên public dữ liệu được gọi là producer và bên nhận dữ liệu theo các topic sẽ được gọi là consumer.


 

1.2. Kafka stream là gì?

Kafka stream là một nền tảng streaming phân tán sự kiện – distributed event streaming platform. Được phát triển dựa trên nền tảng Apache Kafka distributed messaging system bởi Linkedin vào năm 2011, sau đó trở thành dự án mã nguồn mở của Apache. Cho đến thời điểm hiện tại, nó được phân phối chính thức và đầy đủ nhất bởi Confluent thông qua Confluent Platform.

Nền tảng Kafka stream được viết bởi ngôn ngữ Scala và Java nhằm mục đích cung cấp dịch vụ xử lý sự kiện dựa trên thời gian thực với độ trễ thấp và thông lượng cao. Vì thế, hệ thống được hơn 80% doanh nghiệp trong top 100 của Fortune tin dùng.

1.3. Kafka được sử dụng để làm gì?

Kafka là một kho dữ liệu phân tán được tối ưu hóa để xử lý dữ liệu theo thời gian thực. Nếu là một nền tảng streaming trực tuyến sẽ cần phải xử lý dữ liệu một cách liên tục và tuần tự tăng dần. Sau đây sẽ là 3 chức năng chính Kafka sẽ cung cấp cho người dùng:

  • Publish và subscribe các stream của record (luồng dữ liệu).
  • Khả năng lưu trữ các stream of record một cách hiệu theo thứ tự các record được tạo.
  • Khả năng xử lý stream of record theo thời gian thực

1.4. Vì sao nên sử dụng Kafka?

Vì đây là một dự án mã nguồn mở được đóng gói hoàn chỉnh, với hiệu năng tốt, dễ dàng mở rộng mà không cần phải tạm dừng hệ thống cùng với đó là khả năng chịu lỗi cao.

Nếu bạn đang xây dựng một phần mềm, một trang web hiển thị thông tin cho người dùng theo thời gian thực, Kafka chính là một lựa chọn tối ưu. Bạn có thể sử dụng Kafka để nhập và lưu trữ dữ liệu trong quá trình phát trực tiếp; bạn cũng có thể sử dụng như một phần mềm message broker giúp 2 ứng dụng/ nền tảng có thể giao tiếp với nhau.

Những lợi ích khiến bạn cân nhắc về việc sử dụng Kafka:

  • Khả năng mở rộng: mô hình phân vùng nhật ký của Kafka cho phép dữ liệu của bạn có thể phân phối trên nhiều máy chủ và giúp bạn có thể mở rộng máy chủ mở rộng khi không còn phù hợp.
  • Nhanh: Với cách xử lý tách các luồng dữ liệu, vì thế độ trễ rất thấp làm cho tốc độ trở nên nhanh hơn.
  • Khả năng chịu lỗi và độ bền: Các gói dữ liệu của bạn có thể được sao chép và phân phối trên nhiều server khác nhau. Vì thế, khi có một sự cố xảy ra, dữ liệu của bạn ít bị lỗi hơn và bền hơn.

1.5. Kafka hoạt động như thế nào?

Hệ thống sử dụng kết hợp 2 mô hình chính là queuing và publish-subscribe nhằm cung cấp lợi ích tốt nhất cho người dùng.

  • Queuing cho phép dữ liệu có thể được xử lý phân tán trên nhiều consumer và tạo ra khả năng mở rộng cao.
  • Publish-subscribe sẽ tiếp cận cùng lúc nhiều subscribe và các message sẽ được gửi đến nhiều subscribe, không thể sử dụng để phân tán công việc cho nhiều worker.

2. Các khái niệm cần nắm khi tìm hiểu về Kafka

2.1. Producer

Trước khi xử lý, nó sẽ thực hiện phân loại và lưu trữ các message dựa theo topic của chúng. Producer có nhiệm vụ publish message vào các topic thích hợp. Sau đó, khi dữ liệu được gửi đến partition của topic được lưu trữ tại Broker.
Consumer

Các consumer sẽ được định danh theo từng group name, nhiều consumer có thể cùng nằm trong một topic.

2.2. Partition

Partition là nơi lưu trữ dữ liệu cho các topic, mỗi topic có thể có một hoặc nhiều Partition khác nhau. Mỗi Partition sẽ được gán một ID và lưu trữ dữ liệu có định.

Trong 1 Kafka cluster, một Partition có thể được sao chép thành nhiều bản và có một bản chính leader chịu trách nhiệm đọc ghi dữ liệu; các bản còn lại sẽ có tên là follower. Khi bản chính bị lỗi,sẽ có một bản follower lên thay thế thành leader

2.3. Broker

Kafka cluster là một nhóm các server và mỗi nhóm server này sẽ được gọi là broker.

2.4. Zookeeper

Zookeeper là một chức năng nhằm để quản lý và bố trí lại các broker.

3. Một số Use Case Kafka tiêu biểu

3.1. Sử dụng như một message broker

Bạn có thể sử dụng Kafka để thay thế cho các Message broker như ActiveMQ hoặc RabbitMQ.

3.2. Website Activity Tracking

Đây là một cách thức truyền thống để sử dụng Kafka, bạn có thể sử dụng để xây dựng website và đăng tải nội dung theo thời gian thực. Tất cả các dữ liệu như: lượt xem trang, hoạt động tìm kiếm và bất cứ một hoạt động nào khác trên trang của bạn đều sẽ được tạo thành các topic. Hoạt động theo dõi website này sẽ giúp bạn có thể phân tích được hành vi người dùng trên trang và thu hút nhiều người đọc hơn.

3.3. Đo lường

Bạn có thể sử dụng Kafka để xây dựng dữ liệu giám sát các hoạt động. Đồng nghĩa với việc bạn đang tập hợp số liệu thống kê từ các nguồn phân tán trên trang nhằm tạo ra một nguồn dữ liệu tổng hợp.

3.4. Sử dụng để tạo Log

Tổng hợp log hay nhật ký hoạt động, đây là phương pháp nhiều người sử dụng Kafka nhằm để tóm tắt các chi tiết và cung cấp bản ghi rõ ràng về dữ liệu sự kiện nhằm để xử lý về sau.

3.5. Stream Processing

Đây là cách sử dụng phổ biến nhất ở thời điểm hiện tại của Kafka, là một hệ thống được phát triển để thích hợp với việc xử lý dữ liệu trong thời gian thực. Mỗi khi dữ liệu được thêm mới vào topic sẽ ngay lập tức được ghi vào hệ thống và truyền đến cho bên nhận dữ liệu. Với thư viện Kafka Streams được tích hợp từ phiên bản 0.10.0.0 có khả năng xử lý stream nhẹ nhưng vô cùng mạnh mẽ.

Ngoài ra, bạn cũng có thể sử dụng các công cụ mã nguồn mở khác như: Apache Storm và Apache Samza để xử lý.

Tổng kết lại, bài viết đã giúp bạn hiểu được về Kafka là gì cũng như bạn cũng đã có thể thấy rằng Kafka rất đáng để sử dụng.

——————————————————————————————————————————–

Cách triển khai một Kafka đơn giản như thế nào?

Để triển khai một Kafka đơn giản, trước tiên, bạn cần tài bộ cài đặt Kafka mới nhất về tại đây. Để quá trình triển khai một cách thuận lợi hơn, bạn có thể tham khảo video và bài viết Apache Kafka Quickstart nhé!

Tài liệu tìm hiểu sâu Kafka ở đâu?

Để tìm hiểu và khai thác Kafka hiệu quả hơn, bạn có thể xem bộ tài liệu hướng dẫn chính thức của Kafka tại đây, không chỉ hướng dẫn bạn các khái niệm cơ bản. Kafka sẽ giới thiệu cho bạn nhiều hơn về các API, cách kết nối, thiết kế, cách vận hành và bảo mật Kafka rất đơn giản dễ hiểu. Điều kiện để học tối ưu nhất là bạn phải biết tiếng Anh.

RabbitMQ là gì?

RabbitMQ là một chương trình message broker mã nguồn mở giống với Kafka. Tuy nhiên, khác với Kafka, mỗi message của RabbitMQ chỉ đi đến duy nhất một consumer.

——————-

P.A Việt Nam cung cấp đa dạng các cấu hình Máy Chủ Ảo và Máy Chủ Riêng
Cloud Server
Cloud Server Pro
Máy Chủ Riêng

Tham khảo các ưu đãi: https://www.pavietnam.vn/vn/tin-khuyen-mai/

Đọc thêm các bài viết tại link

 

5/5 - (1 bình chọn)