Apache Kafka là gì?

Apache Kafka® A DISTRIBUTED STREAMING PLATFORM

Where Apache Kafka Fits In

Hiểu đơn giản là nền tảng về truyền dữ liệu phân tán.

Apache Kafka là distributed event streaming platform có khả năng xử lý hàng nghìn tỷ sự kiện mỗi ngày. Ban đầu được hình thành như một hàng đợi nhắn tin, Kafka dựa trên sự trừu tượng của nhật ký cam kết phân tán. Kể từ khi được tạo và mở bởi LinkedIn vào năm 2011, Kafka đã nhanh chóng phát triển từ hàng đợi nhắn tin đến một nền tảng phát trực tuyến sự kiện đầy đủ.

Một stream platform sẽ có 3 khả năng chính:

  • Publish và subscribe vào các stream của các bản ghi, tương tự như một hàng chờ tin nhắn.
  • Các stream của các bản ghi được lưu trữ bằng phương pháp chịu lỗi cao cũng như khả năng chịu tải.
  • Xử lý các stream của các bản ghi mỗi khi có bản ghi mới.

Kafka thường được sử dụng cho 2 mục đích chính sau:

  • Xây dựng các pipeline stream data theo thời gian thực để nhận data giữa các hệ thống hoặc ứng dụng một cách đáng tin cậy.
  • Xây dựng các ứng dụng stream theo thời gian thực để biến đổi hoặc ánh xạ đến các stream của data.

Tại sao sử dụng Apache Kafka ?

Kafka là dự án mã nguồn mở, đã được đóng gói hoàn chỉnh, khả năng chịu lỗi cao và là hệ thống nhắn tin nhanh. Vì tính đáng tin cậy của nó, kafka đang dần được thay thế cho hệ thống nhắn tin truyền thống. Nó được sử dụng cho các hệ thống nhắn tin thông thường trong các ngữ cảnh khác nhau. Đây là hệ quả khi khả năng mở rộng ngang và chuyển giao data đáng tin cậy là những yêu cầu quan trọng nhất. Một vài use case cho kafka:

  • Website Activity Monitoring: theo dõi hoạt động của website
  • Stream Processing: xử lý stream
  • Log Aggregation: tổng hợp log
  • Metrics Collection: thu thập data

Để rõ hơn về lợi ích của kafka, hãy tưởng tượng một hệ thống có nhiều máy chủ thực hiện các công việc khác nhau, tất cả các máy chủ này đều muốn giao tiếp với database server, vì vậy chúng ta sẽ có nhiều data pipeline kết nối các server khác đến database server này, hình ảnh minh họa như sau:

Campaign
management
Campaign<br>management<br>
Ad Manager
Ad Manager
Analytics
Analytics
us-central
us-central
Database center
Database center

Nhưng trong thực tế, hệ thống thương mại điện tử sẽ còn phải kết nối đến một vài server khác nữa như là

sing-central-cluster
sing-central-cluster
Campaign
management
Campaign<br>management<br>
Ad Manager
Ad Manager
Analytics
Analytics
Database Report
Database Report
Database Ads
Database Ads
Database Center
Database Center

Như bạn thấy ở ảnh trên, data pipeline đang trở nên phức tạp theo sự gia tăng của số lượng hệ thống. Để giải quyết vấn đề này thì kafka ra đời. Kafka tách rời các data pipeline giữa các hệ thống để làm cho việc communicate giữa các hệ thống trở nên đơn giản hơn và dễ quản lý hơn.

sing-central-cluster
sing-central-cluster
Kafka-cluster
Kafka-cluster
Campaign
management
Campaign<br>management<br>
Ad Manager
Ad Manager
Analytics
Analytics
Database Report
Database Report
Database Ads
Database Ads
Database Center
Database Center

Cấu trúc của Apache Kafka hoạt động như thế nào?

Cấu trúc của kafka bao gồm các thành phần chính sau:

  • Producer: Một producer có thể là bất kì ứng dụng nào có chức năng publish message vào một topic.
  • Messages: Messages đơn thuần là byte array và developer có thể sử dụng chúng để lưu bất kì object với bất kì format nào – thông thường là String, JSON và Avro
  • Topic: Một topic là một category hoặc feed name nơi mà record được publish.
  • Partitions: Các topic được chia nhỏ vào các đoạn khác nhau, các đoạn này được gọi là partition
  • Consumer: Một consumer có thể là bất kì ứng dụng nào có chức năng subscribe vào một topic và tiêu thụ các tin nhắn.
  • Broker: Kafka cluster là một set các server, mỗi một set này được gọi là 1 broker
  • Zookeeper: được dùng để quản lý và bố trí các broker.

Cấu trúc kafka đơn giản

Cấu trúc kafka chi tiết

Refer về cách sử dụng Kafka: https://kafka.apache.org/quickstart

Site Footer

Sliding Sidebar

About Me

About Me

Hello, my name is Dũng (Johnny). Welcome to my blog.

As I’m a developer, I write about topics related to the field of programming, mainly from a technical point of view. On this blog you’ll find posts which encourage discussion, information about development trends, case studies, reviews, tutorials, tips on how to improve your effectiveness, and anything else that might be fascinating to people from the IT industry.

  • http://lcdung.top/about/
  • Mail: ledung@8bitbase.com

Time line