Apache Kafka là một nền tảng xử lý luồng dữ liệu phân tán, mã nguồn mở, được xây dựng để xử lý các luồng dữ liệu theo thời gian thực. Kafka ban đầu được phát triển bởi LinkedIn và sau đó trở thành một dự án của Apache Software Foundation. Kafka được thiết kế để quản lý các dữ liệu lớn với khả năng mở rộng cao, tính sẵn sàng cao và độ tin cậy.

Tags: #kafka, #streaming, #data

Trong bài viết này sẽ giới thiệu những khái niệm tổng quan để bạn đọc có thể hiểu rõ mục đích và ứng dụng của Kafka. Bài viết có tham khảo, tổng hợp từ nhiều nguồn khác nhau. Một số đồ thị mình hoạ có thể được sử dụng lại.

Giới thiệu về Event Streaming



Sự kiện (event) là thông tin của một thay đổi hoặc động được ghi chép lại. Chẳng hạn, khi người dùng đăng nhập ứng dụng, đó là một sự kiện. Khi cảm biến nhiệt độ phát hiện có thay đổi nhiệt độ, hệ thống cũng có thể ghi lại sự kiện này.Event stream là một chuổi các sự kiện liên tục xẩy ra trong một khoảng thời gian dài. Chẳng hạn thệ thống thanh toán sẽ liên tục có các sự kiên thanh toán được gửi lên bởi rất nhiều người dùng khác nhau.Event streaming (dòng sự kiện) có thể so sánh như thần kinh trung ương của cả hệ thống. Nó tiếp nhận tín hiện từ các cảm biến, cơ sở dữ liệu, thiết bị di động, ... và sẽ được lưu trữ và xử lý bởi nhiều hệ thống xử lý thông tin dữ liệu khắc nhau. Event streaming do đó đảm bảo luồng và diễn giải dữ liệu liên tục để thông tin đúng ở đúng nơi, vào đúng thời điểm.Nó là nền tảng công nghệ cho thế giới 'luôn bật', nơi các doanh nghiệp ngày càng tận dụng phần mềm và các hệ thống tự động hoá, nơi mà các phần mềm giao tiếp với nhau.




Chúng mình có tạo Group cho các bạn cùng chia sẻ và học hỏi về thiết kế hệ thống nha 😄😄😄

Các bạn tham gia để gây dựng cộng đồng System Design Việt Nam thật lớn mạnh nhé 😍😍😍

Cộng Đồng System Design Việt Nam: https://www.facebook.com/groups/sydexa




Những ứng dụng của Event Streaming



Event streaming (dòng sự kiện) được áp dụng cho nhiều trường hợp sử dụng khác nhau trong nhiều ngành công nghiệp và tổ chức. Các ví dụ bao gồm:

Xử lý thanh toán và giao dịch tài chính trong thời gian thực, như trong sàn giao dịch chứng khoán, ngân hàng, và bảo hiểm.
Theo dõi và giám sát xe hơi, xe tải, đội xe, và lô hàng trong thời gian thực, như trong ngành logistics và công nghiệp ô tô.
Liên tục thu thập và phân tích dữ liệu cảm biến từ các thiết bị IoT hoặc thiết bị khác, như trong các nhà máy và công viên gió.
Thu thập và phản ứng ngay lập tức với các tương tác và đơn đặt hàng của khách hàng, như trong bán lẻ, ngành khách sạn và du lịch, và ứng dụng di động.
Giám sát bệnh nhân trong bệnh viện và dự đoán thay đổi tình trạng để đảm bảo điều trị kịp thời trong các tình huống khẩn cấp.
Kết nối, lưu trữ và cung cấp dữ liệu do các bộ phận khác nhau của một công ty tạo ra.
Làm nền tảng cho các nền tảng dữ liệu, kiến trúc dựa trên sự kiện và microservices (dịch vụ vi mô).

Apache Kafka® là một nền tảng event streaming?

Kafka kết hợp ba khả năng chính để bạn có thể triển khai các trường hợp sử dụng của mình cho event streaming từ đầu đến cuối với một giải pháp đã được kiểm chứng:

Publish (ghi) và Subscribe (đọc) các dòng sự kiện, bao gồm việc nhập/xuất liên tục dữ liệu của bạn từ các hệ thống khác.
Lưu trữ các dòng sự kiện một cách bền vững và đáng tin cậy. Thường người ta sẽ cài đặt thời gian lưu trữ cho các sự kiên, những sự kiện cũ sẽ bị xoá bỏ để giải phóng dụng lượng ổ cứng.
Xử lý các dòng sự kiện khi chúng vừa xảy ra (online process) hoặc xử lý lại sau (offline process).

Tất cả các chức năng này đều được cài đặt trên hệ thống cách phân tán, có khả năng mở rộng cao, bền bỉ, chịu lỗi và bảo mật. Kafka có thể được triển khai trên phần cứng vật lý, máy ảo, và container, và máy chủ riêng cũng như trên đám mây. Bạn có thể chọn giữa việc tự quản lý môi trường Kafka của mình và sử dụng các dịch vụ được quản lý hoàn toàn do nhiều nhà cung cấp khác nhau cung cấp.

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

Kafka là một hệ thống phân tán bao gồm các máy chủ (servers) và các máy khách (clients) giao tiếp thông qua giao thức mạng TCP với hiệu suất cao. Nó có thể được triển khai trên phần cứng vật lý, máy ảo, và container trong các môi trường tại chỗ cũng như trên đám mây.


Máy chủ (Servers): Kafka chạy như một cụm (cluster) gồm một hoặc nhiều máy chủ có thể trải rộng trên nhiều trung tâm dữ liệu hoặc vùng đám mây. Một số máy chủ này tạo thành lớp lưu trữ, được gọi là broker. Các máy chủ khác chạy Kafka Connect để liên tục nhập và xuất dữ liệu dưới dạng các dòng sự kiện, tích hợp Kafka với các hệ thống hiện có của bạn như cơ sở dữ liệu quan hệ cũng như các cụm Kafka khác. Để cho phép bạn triển khai các trường hợp sử dụng quan trọng, cụm Kafka có khả năng mở rộng cao và chịu lỗi: nếu bất kỳ máy chủ nào gặp sự cố, các máy chủ khác sẽ đảm nhận công việc của chúng để đảm bảo hoạt động liên tục mà không mất dữ liệu.
Máy khách (Clients): Để giao tiếp với máy chủ Kafka, họ đã hỗ trợ nhiều thư viện viết bằng các ngôn ngữ lập trình khác nhau như C++, Java, Go, Python... hỗ trợ các lập trình viên xây dựng các dịch vụ vi mô (micorservices) có khả năng đọc và ghi các dòng dữ liệu song song ở quy mô lớn và có khả năng chị lỗi.

Các Khái Niệm và Thuật Ngữ Chính

Một sự kiện (event) ghi lại thực tế rằng "một điều gì đó đã xảy ra" trong thế giới hoặc trong doanh nghiệp của bạn. Nó cũng được gọi là bản ghi (record) hoặc thông điệp (message). Khi bạn đọc hoặc ghi dữ liệu vào Kafka, bạn thực hiện điều này dưới dạng các sự kiện. Về mặt khái niệm, một sự kiện có một khóa (key), giá trị (value), dấu thời gian (timestamp), và các tiêu đề metadata tùy chọn. Dưới đây là một ví dụ về sự kiện:

Event key: "Alice"
Event value: "Đã thanh toán $200 cho Bob"
Event timestamp: "25 tháng 6, 2020 lúc 2:06 chiều"

Producers là những ứng dụng khách publish (ghi) các sự kiện vào Kafka, và consumers là những ứng dụng subscribe (đọc và xử lý) các sự kiện này. Trong Kafka, producers và consumers hoàn toàn tách biệt và không phụ thuộc vào nhau, đây là một yếu tố thiết kế quan trọng để đạt được khả năng mở rộng cao của Kafka.

Ví dụ: producers không bao giờ cần phải chờ đợi consumers. Kafka cung cấp nhiều đảm bảo khác nhau như khả năng xử lý các sự kiện đúng một lần (exactly-once).

Các sự kiện được tổ chức và lưu trữ bền vững trong các topic. Rất đơn giản, một topic tương tự như một thư mục trong hệ thống tệp tin, và các sự kiện là các tệp tin trong thư mục đó. Một ví dụ tên topic có thể là "payments".

Các topics trong Kafka luôn có nhiều producers và nhiều subscribers: một topic có thể có không, một, hoặc nhiều producers ghi sự kiện vào nó, cũng như không, một, hoặc nhiều consumers đăng ký các sự kiện này.

Các sự kiện trong một topic có thể được đọc bao nhiêu lần tùy thích - khác với các hệ thống Message truyền thống, các sự kiện không bị xóa sau khi tiêu thụ. Có có thể cài đặt thời gian mỗi message được lưu trữ ở trong Kafka.

Sau khoảng thời gian nó nó sẽ được tự động loại bỏ. Hiệu suất của Kafka không phụ thuộc kích thước dữ liệu, vì vậy lưu trữ dữ liệu trong thời gian dài là hoàn toàn ổn.



Topics được phân vùng (partition), có nghĩa là một topic được trải rộng trên một số "bucket" nằm trên các broker Kafka khác nhau. Việc phân bố dữ liệu của bạn theo cách này rất quan trọng để mở rộng vì nó cho phép các ứng dụng khách vừa đọc vừa ghi dữ liệu từ/tới nhiều broker cùng một lúc. Khi một sự kiện mới được xuất bản vào một topic, nó thực sự được thêm vào một trong những phân vùng của topic đó.

Các sự kiện có cùng khóa sự kiện (ví dụ: ID khách hàng hoặc xe) được ghi vào cùng một phân vùng, và Kafka đảm bảo rằng bất kỳ consumer nào của một topic-partition nhất định sẽ luôn đọc các sự kiện của phân vùng đó theo đúng thứ tự như khi chúng được ghi.

Kết luận

Apache Kafka là một nền tảng mạnh mẽ và linh hoạt cho việc xử lý và truyền tải dữ liệu theo dòng sự kiện. Với khả năng mở rộng cao, độ tin cậy và tính chịu lỗi, Kafka đã trở thành lựa chọn hàng đầu cho nhiều doanh nghiệp trong việc xây dựng các hệ thống dữ liệu hiện đại. Từ việc xử lý giao dịch tài chính thời gian thực đến giám sát thiết bị IoT, Kafka cung cấp một giải pháp toàn diện cho các nhu cầu về event streaming. Việc triển khai Kafka có thể được thực hiện trên nhiều môi trường khác nhau, từ phần cứng vật lý đến đám mây, giúp doanh nghiệp dễ dàng tích hợp và mở rộng hệ thống của mình.




Chúng mình có tạo Group cho các bạn cùng chia sẻ và học hỏi về thiết kế hệ thống nha 😄😄😄

Các bạn tham gia để gây dựng cộng đồng System Design Việt Nam thật lớn mạnh nhé 😍😍😍

Cộng Đồng System Design Việt Nam: https://www.facebook.com/groups/sydexa

SYDEXA
We learn, we share, we grow together!

About

  • Sydexa

Resources

  • Docs
  • Sydexa Hub

Contact

  • For Work
  • Report

Members

  • Sign in
  • Sign up
  • Portal
@ Sydexa 2024. All copyrights reserved