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: