- vừa được xem lúc

Part 1 - Apache Kafka: Khái niệm cơ bản

0 0 10

Người đăng: Toni Dev

Theo Viblo Asia

Hellu các bạn, mình là Toni Dev và đây là bài viết đầu tiên của mình trên Viblo 😄

Hiện tại trên "gu gồ" đã có rất nhiều bài viết chia sẻ về Apache Kafka, nhưng đây sẽ là những kiến thức basic nhất mà mình tổng hợp được về Kafka dành cho những ai chưa biết Kafka là gì. Không vòng vo nữa, chúng ta cũng nhau đến với nội dung chính.

1. Apache Kafka là gì?

  • Real-time data ở thời điểm hiện tại có giá trị đặc biệt quan trọng đối với các doanh nghiệp, nó giúp cải thiện dịch vụ khách hàng, quản lý sản phẩm và tối ưu hóa vận hành. Vì vậy, những công cụ có khả năng thu thập và lưu trữ dữ liệu real-time càng ngày càng phổ biến. Apache Kafka chính là một trong những công cụ đó.
  • Apache Kafka là một event streaming platform được phân phối (distributed), có thể mở rộng (scalable), thông lượng cao (high-throughput), độ trễ thấp (low-latency) và có hệ sinh thái rất lớn.
  • Hiểu một cách đơn giản thì nó là một platform để xử lý việc truyền tải message trên nhiều hệ thống hoặc bất kỳ modules hoạt động nào khác.
  • Apache Kafka platform hoạt động trên nhiều servers, với dữ liệu được sao chép trên nhiều nơi khác nhau. Điều này có nhiệm vụ là khi có một số server bị lỗi thì vẫn có server khác backup và cover để đảm bảo system của mình vẫn hoạt động tốt.

2. Những khái niệm chính trong Kafka

  • Producer: có thể là bất kì application nào có chức năng publish messages (events) vào 1 topic.
  • Messages: trong Kafka cũng có thể gọi là event. Nó chính là data được lưu trữ trong topic (chính xác hơn là ở trong partition) dưới dạng byte array.
  • Cluster: là 1 system bao gồm zookeeper + nhiều broker (tương đương 1 server) cùng làm việc với nhau. Lưu ý là trong 1 cluster thì chỉ có 1 broker chính luôn active, tuy nhiên các broker còn lại cũng đều nhận được bản copy data mà broker chính nhận được.
  • Broker: là server lưu trữ các topic. Sở dĩ có nhiều broker là bởi nếu thằng này hỏng thì có thằng khác cover thay, tránh tình trạng system không thể hoạt động.
  • Zookeeper: có thể hiểu nó như là 1 manager nằm trong cluster được dùng để quản lý và bố trí các broker.
  • Topic: là nơi lưu trữ các record được publish và nó giúp các system nói chuyện được với nhau. Tên topic phải được đặt là UNIQUE name, mục đích chia topic là để data có thể được send & receive đúng đối tượng, tránh lộn xộn.
  • Partition: mỗi topic được chia nhỏ vào các đoạn khác nhau, các đoạn này được gọi là partition.
  • Offset: mỗi 1 partition được chia thành nhiều đoạn nhỏ và mỗi đoạn như vậy gọi là 1 offset. Nó cũng là nơi lưu trữ data, 1 offset sẽ chứa 1 message (event).
  • Consumer: là bất kì application nào có chức năng subscribe vào 1 topic để receive messages.

3. Cách hoạt động của Kafka

Bây giờ mình sẽ miêu tả cách mà 1 message được gửi đi từ Producer đến Consumer nhé.

  • Đầu tiên chúng ta sẽ phải có 1 hệ sinh thái Apache Kafka (Ecosystem) bao gồm 1 cluster, nhiều broker & 1 zookeeper.
  • Tiếp theo cần create 1 topic (create Topic A trong Broker 1)
  • Đến lúc này, Producer đã có thể publish messages vào trong Topic A.
  • Lúc này Topic A đã chứa messages và giờ thì consumer đã có thể subcribe topic A để receive messages.

4. Summary

  • Trên đây là những kiến thức basic nhất về Apache Kafka để giúp các bạn có cái hình tổng quan & hình dung Kafka là gì, từ đó có thể đi sâu hơn để hiểu rõ hơn về Kafka.
  • Phần 2 mình sẽ đi sâu hơn về Kafka Partition, Kafka Offset, Kafka Consumer Group. Dự kiến series Kafka này sẽ có 4 phần (2 lý thuyết + 2 thực hành) để các bạn không chỉ nắm được lý thuyết mà còn ứng dụng nó vào thực hành.
  • Đây là bài post đầu tiên của mình trên Viblo, nếu có information nào thiếu sót hay có gì thắc mắc, thì các bạn cứ comment góp ý để mình upgrade nhé 😁.

Reference:

Toni Dev

Bình luận

Bài viết tương tự

- vừa được xem lúc

Kafka là gì?

Apache Kafka® là một nền tảng stream dữ liệu phân tán. . stream data: dòng dữ liệu, hãy tưởng tượng dữ liệu là nước trong 1 con suối. .

0 0 33

- vừa được xem lúc

001: Message-driven programming với Message broker và Apache Kafka

Bài viết nằm trong series Apache Kafka từ zero đến one. . . Asynchronous programming.

0 0 152

- vừa được xem lúc

002: Apache Kafka topic, partition, offset và broker

Bài viết nằm trong series Apache Kafka từ zero đến one. Nói qua về lịch sử, Kafka được phát triển bởi LinkedIn (các anh em dev chắc chẳng xa lạ gì) và viết bằng ngôn ngữ JVM, cụ thể là Java và Scala.

0 0 141

- vừa được xem lúc

003: Gửi và nhận message trong Apache Kafka

Bài viết nằm trong series Apache Kafka từ zero đến one. . . Nếu muốn các message được lưu trên cùng một partition để đảm bảo thứ tự thì làm cách nào.

0 0 204

- vừa được xem lúc

004: Apache Kafka consumer offset, Broker discovery và Zookeeper

Bài viết nằm trong series Apache Kafka từ zero đến one. 1) Consumer offset.

0 0 118

- vừa được xem lúc

Apache Kafka - Producer - Gửi message đến Kafka bằng kafka-python

Overview. Understand how to produce message and send to the Kafka topic. Architecture. .

0 0 52