Những ứng dụng cùng ưu nhược điểm khi sử dụng Kafka as a Service

Những ứng dụng cùng ưu nhược điểm khi sử dụng Kafka as a Service

Tác giả: [email protected]
14:03 07/09/2023

Trong việc phát triển phần mềm kỹ thuật nói riêng và khi bàn về công nghệ nói chung, cụm từ Kafka thường hay xuất hiện như là một giải pháp truyền dữ liệu real time (thời gian thực). Hiểu một cách đơn giản là khi 1 khách hàng đang mua hàng trên 1 app di động, để họ xem được mặt hàng, gửi đơn hàng tới các bên xử lý một cách nhanh nhất thì luồng dữ liệu đi dưới hệ thống phải được thông suốt càng nhanh càng tốt mà không phải chờ đợi.

Nếu chỉ có một khách hàng giao tiếp với một hệ thống thì sẽ không có chuyện gì để bàn. Nhưng khi có cả triệu khách hàng giao tiếp cùng lúc với một hệ thống, số lượng data truyền xuống từ một khách hàng là vô cùng lớn, chưa kể trong 1 hệ thống thường được cấu thành bởi vô vàn các services, các component khác nhau. Bài toán lúc này không nằm ở việc app đầy đủ thông tin hay được trang điểm đẹp đẽ, mà trở thành làm thế nào để cả triệu khách hàng cùng nhận được thông tin một cách nhanh chóng? Vào ngày 11 tháng 1 năm 2011, Kafka Apache ra đời để giải quyết bài toán trên. Vậy Kafka là gì, FPT Smart cloud cung cấp giải pháp gì liên quan tới Kafka Apache?

Kafka là gì?

Kafka là một nền tảng phân phối sự kiện dữ liệu (message and event) cho phép:

  • Publish và subscribe các luồng sự kiện, message (event stream)
  • Lưu trữ, xử lý và phân phối dữ liệu thời gian thực

Để hiểu được việc phân phối dữ liệu, sự kiện (distributed event streaming) thì trước hết cần hiểu 1 sự kiện (event) là 1 bản ghi 1 action trong hệ thống. Ví dụ khi 1 khách hàng vào app thì sẽ sinh ra 1 event như sau:

  • eventKey: “FPT_Cloud_Kafka”
  • eventValue: “Open Application”
  • EventTimestramp: “Aug.25.2023.13:06”

Event được định nghĩa bởi: user – action – time. Việc phân phối dữ liệu, sự kiện sẽ bắt đầu từ khi bắt được các event như ví dụ trên từ nhiều nguồn khác nhau như database, app mobiles, cloud services, backend services, software application,…

Picture2

Một nền tảng streaming dữ liệu sẽ bắt được các event theo thứ tự và xử lý các dữ liệu này trước khi đưa vào lưu trữ tập trung một cách real time để có thể sử dụng về sau (có thể là ngay lập tức). Các event này sẽ được đưa vào các stream pipeline - các luồng đi của dữ liệu được dựng lên. Dòng chảy này sẽ có các đặc tính sau:

  • Toàn vẹn dữ liệu: dữ liệu từ lúc tiếp nhận cho tới khi đến đích phải nguyên vẹn
  • Thời gian thực: dữ liệu truyền đi ngay khi event được sinh ra
  • Đúng địa chỉ: dữ liệu sẽ phải được truyền tới đúng đích đã setup.

Để làm được điều này Kafka sẽ được dựng trên một cụm cluster trải dài trên nhiều trung tâm dữ liệu (datacenter) và cung cấp các chức năng của nó theo cách phân tán (distributed), khả năng mở rộng và đàn hồi cao (scalable and elastic) cũng như khả năng chịu lỗi tốt và vô cùng bảo mật. Kafka có thể được dựng trên máy chủ vật lý, trên máy trạm ảo, trên các container của K8S hoặc tối ưu nhất là trên các nền tảng cloud.

>>> Xem thêm: Platform là gì? 10 mô hình platform nổi bật và linh hoạt

Lợi ích khi sử dụng Kafka

Sử dụng Apache Kafka mang lại nhiều lợi ích cho việc xây dựng và triển khai các hệ thống xử lý dữ liệu thời gian thực và streaming. Dưới đây là một số lợi ích chính khi sử dụng Kafka:

  • Xử lý Dữ liệu Thời gian thực: Kafka được thiết kế để xử lý dữ liệu thời gian thực và streaming, cho phép bạn đáp ứng nhanh chóng đối với sự kiện mới xảy ra. Điều này rất hữu ích cho việc giám sát, phân tích, và ứng phó tức thì với các tình huống thay đổi.
  • Tính Nhất quán và Độ Tin cậy Cao: Kafka giữ cho bạn tính nhất quán dữ liệu thông qua quá trình sao lưu và sao chép thông điệp giữa các broker. Điều này đảm bảo dữ liệu không bị mất mát và luôn sẵn sàng cho các ứng dụng tiêu thụ.
  • Mở Rộng Dễ Dàng: Kafka có khả năng mở rộng dễ dàng bằng cách thêm các broker vào cluster. Điều này cho phép bạn tăng khả năng xử lý dữ liệu mà không cần thay đổi cấu trúc toàn bộ hệ thống.
  • Dữ liệu Đa Dạng: Kafka không chỉ hỗ trợ dữ liệu thông thường mà còn có khả năng xử lý dữ liệu đa dạng như logs, trạng thái ứng dụng, sự kiện liên quan đến giao dịch tài chính, và nhiều loại dữ liệu khác.
  • Khả năng Chia Lượng Lớn: Nhờ việc sử dụng phân vùng (partitioning), Kafka có khả năng xử lý lượng dữ liệu lớn một cách hiệu quả. Điều này làm cho nó phù hợp cho các tình huống cần xử lý hàng tỷ sự kiện mỗi ngày.
  • Tích hợp linh hoạt: Kafka có khả năng tích hợp với nhiều công nghệ và ứng dụng khác. Bạn có thể sử dụng các ngôn ngữ lập trình khác nhau để viết các ứng dụng producer và consumer, và Kafka cũng hỗ trợ các giao thức truyền tải khác nhau.
  • Lưu trữ Dữ liệu Lâu Dài: Ngoài việc xử lý dữ liệu thời gian thực, Kafka cũng có khả năng lưu trữ dữ liệu lâu dài. Điều này cho phép bạn lưu trữ và truy xuất lại dữ liệu sự kiện trong tương lai để phân tích và kiểm tra.
  • Hệ Thống Log: Kafka hoạt động như một hệ thống log, cho phép bạn lưu trữ và tìm kiếm thông tin sự kiện theo thời gian. Điều này rất hữu ích cho việc gỡ lỗi, phân tích dữ liệu và theo dõi hoạt động hệ thống.

Nhược điểm của Kafka

  • Phức Tạp trong Cài Đặt Ban Đầu: Cài đặt và cấu hình ban đầu của Kafka có thể phức tạp đối với những người mới bắt đầu sử dụng.
  • Yêu Cầu Hiểu Biết Sâu về Hệ Thống: Để triển khai và quản lý Kafka hiệu quả, cần có kiến thức về hệ thống và mạng.
  • Yêu Cầu Tài Nguyên: Kafka yêu cầu một số lượng tài nguyên tương đối lớn để hoạt động tốt, bao gồm bộ nhớ và khả năng xử lý.
  • Khó Để Hiểu và Sử Dụng Cho Người Mới: Với những người mới sử dụng, Kafka có thể đầy thách thức và yêu cầu thời gian để hiểu rõ về cách làm việc của nó.
  • Không Phải Là Giải Pháp Tất Cả Các Trường Hợp Sử Dụng: Mặc dù Kafka rất mạnh mẽ, nhưng nó không phải là giải pháp phù hợp cho tất cả các tình huống. Có những trường hợp sử dụng khác có thể phù hợp hơn.
  • Khả Năng Quản Lý Dữ Liệu Lâu Dài Hạn: Mặc dù Kafka có thể lưu trữ dữ liệu lâu dài, nhưng việc quản lý và tìm kiếm dữ liệu trong các phiên bản sau này có thể đòi hỏi công việc phức tạp và tài nguyên.

>>> Xem thêm: Sandbox là gì? Cách thức thiết lập Sandbox vào ứng dụng

Usecases

Kafka là một nền tảng streaming dữ liệu thời gian thực. Vì thế, nó đượng ứng dụng một cách rộng rãi trong nhiều ngành nghề và tổ chức.

Kafka as a messaging system

Trong ngành tài chính, các khoản payment và transactions khi phát sinh sẽ yêu cầu tốc độ xử lý càng nhanh càng tốt.

  • VD: KH có nhu cầu rút tiền, process này diễn ra chỉ trong khoảng 5 – 10s sau khi nhập hết thông tin order
  • VD: trong chứng khoán, giá của các mã chứng khoán thay đổi trong thời gian thực và nó ảnh hưởng trực tiếp tới giá trị giao dịch của cả ngàn KH một lúc
apache kafka usecases overview

Kafka lúc này sẽ được cài đặt và tinh chỉnh để trở thành 1 hệ thống truyền các message qua lại giữa nhiều hệ thống khác nhau

  • VD: dữ liệu giá từ sở giao dịch tới công ty chứng khoán, dữ liệu mã chứng khoán từ trung tâm lưu ký tới công ty chứng khoán và ngân hàng

Nếu không có kafka, các message sẽ có độ trễ, dẫn tới việc giao dịch có thể bị mất do lúc đó giá trị giao dịch không còn chính xác.

Kafka as activity tracker

Trong khối ngành logistic, một bài toán đặt ra là phương tiện chuyên chở đang đi tới đâu, bao lâu nữa tới nơi. Việc di chuyển diễn ra liên tục dẫn tới nhu cầu kiểm soát đước hoạt động này trở nên khó khăn

0 bBqD NZO6r4vvQqZ
  • VD: Đặt 1 course taxi, người dùng sẽ muốn biết xe đang tới đâu để có thể căn thời gian chuẩn bị, di chuyển tới điểm đón. Việc căn thời gian, đường đi này cần track được đường có đang tắc ở đâu không, có vướng mắc gì trên đường đi hay không

Kafka as data processing

Với trending nhà thông minh, việc ứng dụng IOT (internet on things) trở nên phổ biến hơn bao giờ hết. Để vận hành được thì các vật dụng cảm biến (sensor) trong nhà sẽ cần phải thu thập ược dữ liệu, sau đó phân tích xử lý dữ liệu đó trước khi truyền tới hệ thống để có action tiếp theo.

VD: Khi người dùng nói: “Bật đèn”, micro hứng trong nhà sẽ phải bắt được câu “bật đèn”, xử lý dữ liệu để dịch ra ngôn ngữ hệ thống:

  • eventKey: “guest”
  • eventValue: “turn on the light”
  • EventTimestramp: “Aug.25.2023.13:06”

Sau khi xử lý xong, hệ thống sẽ truyền dữ liệu này tới bộ xử lý IOT. Bộ xử lý IOT sẽ truyền action tương ứng tới hệ thống điện trong nhà để bật đèn.

Apache Kafka The De facto Standard for Real Time Event Streaming 1024x448 1

Kafka sẽ cho phép quá trình thu thập và xử lý data xảy ra một cách nhanh nhất trước khi truyền dữ liệu đi. Nếu không có ứng dụng này, người dùng bình thường có thể mất tới vài lần nói thật to may ra mới bật được đèn một cách tự động

Trong tương lai, việc phân tích và xử lý data có thể tiến tới tầm cao mới. Ví dụ như camera nhìn thấy sắc mặt của chủ nhà để bật nhạc tùy tâm trạng. Để xử lý được khối dữ liệu khổng lồ này thì sẽ cần một nền tảng đủ mạnh như kafka. Tiến tới xa hơn thì kafka hoàn toàn có thể làm xương sống cho việc xử lý big data của các công ty với khả năng xử lý dữ liệu của mình

Ngoài 3 usecase chính về streaming message real time, tracking activity và xử lý data, Kafka còn nhiều ứng dụng khác như connect và storage dữ liệu, stream processing vv.

Từ khi ra đời tới nay, Kafka đã giúp thay đổi bộ mặt của nhiều ngành nghề cũng như ảnh hưởng lớn tới việc số hóa dữ liệu, quy trình và sản phẩm. Nhưng để thực sự hiểu và dựng được lên một cụm cluster kafka thì một người dùng sẽ phải quan tâm tới nhiều khía cạnh khác như tài nguyên, vận hành, cài đặt cũng như theo dõi sửa lỗi, nâng cấp.

Những bài viết liên quan:

Nắm được nhu cầu đó, FPT Smart Cloud cung cấp giải pháp Kafka as a service, đáp ứng được toàn bộ yêu cầu về mặt bảo mật, scaling, high availability, cài đặt, vận hành cũng như có nhiều tính năng bổ trợ để phân quyền, quản lý kafka dễ dàng. Giải pháp FPT Cloud Kafka as a Service sẽ giúp các Developer có thể tự động hóa hoàn toàn việc quản lý, duy trì và mở rộng các cụm Apache Kafka mà không tốn công sức triển khai, dễ dàng quản lý giúp tối ưu chi phí tài nguyên, nguồn lực.

Đăng ký sử dụng thử miễn phí ngay: https://fptcloud.com/lien-he/

Nguyễn Quý Hiếu

Những ứng dụng cùng ưu nhược điểm khi sử dụng Kafka as a Service