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, #dataTrong 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.
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
Kênh TikTok: https://www.tiktok.com/@sydexa.com
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:
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:
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 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ộ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:
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.
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
Kênh TikTok: https://www.tiktok.com/@sydexa.com