Các trường hợp ứng dụng Kafka trong thực tế

Đây là khóa học tập trung vào khái niệm để học về việc 'khi nào và tại sao nên truyền dữ liệu qua event' thay vì chỉ học thuộc lòng cú pháp Kafka. Lấy dự án xuyên suốt là trung tâm mua sắm 'On-Market', bạn sẽ được học về luồng sự kiện và nguyên lý của 10 ví dụ thực tế như đặt hàng, tồn kho, thông báo, tìm kiếm, phân tích, đồng thời nuôi dưỡng tầm nhìn bao quát toàn bộ hệ thống từ Topic, Partition, Consumer Group cho đến Event Sourcing, CQRS và tính lũy đẳng (Idempotency).

23 học viên đang tham gia khóa học này

Độ khó Trung cấp trở lên

Thời gian Không giới hạn

Spring Boot
Spring Boot
Reactive Programming
Reactive Programming
Kafka
Kafka
MSA
MSA
Celery
Celery
Spring Boot
Spring Boot
Reactive Programming
Reactive Programming
Kafka
Kafka
MSA
MSA
Celery
Celery

Bạn sẽ nhận được điều này sau khi học.

  • Giải thích các khái niệm cốt lõi của Kafka (Topic, Partition, Offset, Consumer Group) thông qua hình vẽ và tìm hiểu nguyên lý hoạt động của kiến trúc hướng sự kiện (Event-driven Architecture).

  • Khả năng thiết kế luồng sự kiện và đánh giá áp dụng cho các trường hợp thực tế theo 10 miền (domain) khác nhau như đặt hàng, tồn kho, thông báo, tìm kiếm, phân tích, v.v.

  • Thiết lập chiến lược đảm bảo độ tin cậy trong giai đoạn vận hành như Event Sourcing, CQRS, tính lũy đẳng (Idempotency), DLT, quản lý schema, v.v.

🤔 Có bao giờ bạn gặp phải trường hợp như thế này chưa?

Chỉ mới nhấn một nút đặt hàng thôi mà phía sau đó, các khâu thanh toán, kho hàng, vận chuyển, tích điểm và thông báo phải đồng loạt thức giấc. Cách làm quen thuộc là dịch vụ đặt hàng sẽ trực tiếp gọi lần lượt sáu tác vụ này. Tuy nhiên, nếu dịch vụ thông báo bị chậm, toàn bộ quá trình đặt hàng sẽ bị đình trệ, và nếu dịch vụ tích điểm tạm thời bị lỗi, đơn hàng đã hoàn tất thanh toán cũng sẽ bị đảo ngược thành thất bại. Mỗi khi thêm một tính năng, phương thức đó lại dài thêm một dòng và trở nên mong manh hơn một chút.

"Nghe nói dùng Kafka là được..." nhưng khi thực sự mở ví dụ ra, chỉ thấy tràn ngập các thuật ngữ như topic, partition, offset, consumer group, còn việc nên dùng nó vào đâu trong hệ thống của mình và tại sao phải dùng thì vẫn còn rất mơ hồ. Khóa học này được tạo ra để xua tan màn sương mù đó.

📌 Trước tiên, hãy làm rõ đặc điểm của bài giảng này

Khóa học này là khóa học giải thích về khái niệm và nguyên lý. Đây không phải là dạng thực hành cầm tay chỉ việc gõ theo từng dòng mã.

Trong thời đại lập trình bằng AI đang trở nên phổ biến như hiện nay, việc hiểu rõ các khái niệm bao quát toàn bộ hệ thống và công nghệ đã trở nên quan trọng hơn nhiều so với các phương pháp lập trình chi tiết. Thay vì chỉ 'biết cách sử dụng' Kafka, 'khả năng phán đoán khi nào và nên sử dụng nó như thế nào' mới chính là năng lực thực sự.

Vì vậy, khóa học này cung cấp tài liệu giảng dạy và giải thích từng bước các khái niệm thông qua hình ảnh slide được xây dựng dựa trên tài liệu đó. Các ví dụ mã nguồn sẽ được trình bày cùng nhau như một căn cứ để hiểu "tại sao đoạn mã này lại có cấu trúc như vậy".

✨ Lý do tại sao bài giảng này đặc biệt

🗺️ 1. Xuyên suốt 10 ví dụ với một dự án duy nhất mang tên 'OnMarket'

Đây không phải là một tập hợp các ví dụ rời rạc. Xuất phát từ một trang mua sắm Monolithic bình thường mang tên OnMarket, mỗi bài học sẽ thêm vào một ví dụ thực tế để phát triển nó thành một hệ thống dựa trên sự kiện (Event-driven). Từ đặt hàng, thanh toán đến Event Sourcing kho hàng, giao tiếp bất đồng bộ, thông báo, chỉ mục tìm kiếm, phân tích hành vi, thu thập log, đường ống dữ liệu (data pipeline), phát hiện gian lận tài chính cho đến IoT — dù các domain hoàn toàn khác nhau, nhưng khi bóc tách lớp vỏ bên ngoài, cùng một mô hình sẽ luôn lặp lại. Bức tranh lớn đó sẽ tự nhiên thấm sâu vào tư duy của bạn.

🎯 2. Từ khái niệm đến vận hành, bao quát toàn bộ vòng đời

Không chỉ dừng lại ở "cách tạo ra". Từ các thiết kế về độ tin cậy như tính lũy đẳng (idempotency), thử lại (retry), DLT (Dead Letter Topic), outbox, cho đến hiệu suất và mở rộng thông qua khả năng tương thích schema với JSON·Avro và tăng thông lượng bằng partition·consumer group, cùng các bài kiểm tra sử dụng EmbeddedKafka·Testcontainers — tất cả các kỹ năng vận hành thực tế cần thiết trước khi đi vào làm việc sẽ được hệ thống hóa ở cấp độ khái niệm.

🃏 3. Tiết lộ cả "Khi nào không nên sử dụng"

Đây chính là bí quyết thực sự của bài giảng này. Có rất nhiều bài giảng về Kafka, nhưng hiếm có bài giảng nào thẳng thắn chỉ ra rằng "trường hợp này dùng Kafka là quá mức cần thiết" ở phần cuối. Đối với các yêu cầu-phản hồi đơn giản, lượng tin nhắn ít hoặc các dịch vụ nhỏ, các công cụ nhẹ nhàng hơn sẽ tốt hơn. Tiêu chuẩn đánh giá một kỹ sư giỏi không phải là 'có thể sử dụng hay không' mà là 'lợi ích mang lại có lớn hơn chi phí vận hành hay không' — tôi sẽ giúp bạn có được cái nhìn cân bằng này để ngăn ngừa việc thiết kế quá mức (over-engineering).

🧭 4. Mọi ví dụ đều hội tụ về một nguyên tắc duy nhất

Có một câu nói xuyên suốt toàn bộ 20 bài giảng.

"Đừng gọi trực tiếp, hãy để sự kiện tuôn chảy."

Dù có mười ví dụ thì nguyên lý vẫn chỉ có một — 'Phát hành sự thật rằng một việc gì đó đã xảy ra, và bên nào cần thì đăng ký để lấy về.' Khi lối tư duy này đã thấm nhuần, bạn sẽ không bị lung lay ngay cả trước những lĩnh vực (domain) mới gặp lần đầu.

🎓 Những điều bạn có thể làm sau khi hoàn thành khóa học này

  • Bạn có thể giải thích lý do tại sao Kafka không chỉ đơn thuần là một hàng đợi tin nhắn mà là một 'con đường sự kiện trung tâm' thông qua việc lưu trữ log và đa đăng ký (multi-subscription).

  • Có thể giải thích mối quan hệ giữa Topic, Partition, Offset, Producer, Consumer và Consumer Group bằng cách vẽ sơ đồ.

  • Bạn có thể tự mình vẽ luồng sự kiện cho 10 ví dụ như đặt hàng, tồn kho, thông báo, tìm kiếm, phân tích, tài chính, IoT, v.v.

  • Bạn có thể phân biệt được tại sao cần và khi nào nên sử dụng Event Sourcing, CQRS, Projection và Replay.

  • Nắm bắt bức tranh lớn về độ tin cậy vận hành bao gồm tính lũy đẳng, thử lại, DLT, khả năng tương thích schema và mở rộng.

  • Trên hết, bạn có thể đưa ra căn cứ để phán đoán xem "trong tình huống này Kafka là quá mức hay phù hợp".

👥 Đề xuất cho những đối tượng sau

⭐ Phù hợp nhất với những đối tượng sau

  • Nhà phát triển backend đã có kiến thức cơ bản về Java·Spring Boot nhưng vẫn còn mơ hồ về việc nên sử dụng Kafka ở đâu và tại sao

  • Những nhà phát triển muốn nắm bắt bản đồ khái niệm trước khi chuyển sang kiến trúc hướng sự kiện (EDA) hoặc MSA

Cũng rất hữu ích cho những đối tượng sau

  • Người thực hành đã từng sử dụng Kafka một cách rời rạc nhưng cảm thấy thiếu cái nhìn tổng thể và quan điểm vận hành

  • Tech lead/Kiến trúc sư, những người cần đưa ra quyết định có nên áp dụng hay không.

Kiến thức tiên quyết

  • Chỉ cần nắm vững cú pháp cơ bản của Java và hiểu biết cơ bản về cấu trúc ứng dụng Spring Boot là đủ.

  • Không cần kiến thức tiền đề về Kafka. Chúng ta sẽ cùng nhau xây dựng từ những khái niệm cơ bản nhất.

🚀 Lời kết

Kafka là một công cụ mạnh mẽ nhưng cũng đòi hỏi chi phí vận hành tương xứng. Chính vì vậy, khả năng phán đoán còn quan trọng hơn cả cú pháp. Sau khi kết thúc khóa học này, thứ bạn nhận được không chỉ là vài câu lệnh Kafka, mà là một câu hỏi có thể đặt ra trước bất kỳ hệ thống nào.

"Chuyện gì đã xảy ra ở đây,
và phải thông báo sự thật đó cho ai."

Cảm giác trả lời câu hỏi đó bằng các sự kiện — hãy cùng Onmarket tạo nên cảm giác đó.

Khuyến nghị cho
những người này

Khóa học này dành cho ai?

  • Nhà phát triển backend đã có kiến thức cơ bản về Java và Spring Boot nhưng còn lúng túng không biết nên áp dụng Kafka vào đâu và tại sao.

  • Các nhà phát triển cấp Junior và Middle muốn nắm vững bản đồ khái niệm trước khi chuyển đổi sang EDA·MSA

  • Tech lead, nhà phát triển cấp cao (senior) và kiến trúc sư hệ thống cần đưa ra quyết định áp dụng Kafka và thiết kế kiến trúc.

Cần biết trước khi bắt đầu?

  • Hiểu về cú pháp cơ bản của ngôn ngữ lập trình Java và các khái niệm hướng đối tượng

  • Kinh nghiệm sử dụng cơ bản framework Spring Boot và kinh nghiệm phát triển REST API

  • Khái niệm cơ bản về cơ sở dữ liệu quan hệ (RDBMS) và khả năng viết truy vấn SQL

Xin chào
Đây là oncoding

703

Học viên

13

Đánh giá

20

Trả lời

4.3

Xếp hạng

8

Các khóa học

Chương trình giảng dạy

Tất cả

22 bài giảng ∙ (7giờ 26phút)

Tài liệu khóa học:

Tài liệu bài giảng
Ngày đăng: 
Cập nhật lần cuối: 

Đánh giá

Chưa có đủ đánh giá.
Hãy trở thành tác giả của một đánh giá giúp mọi người!

Khóa học khác của oncoding

Hãy khám phá các khóa học khác của giảng viên!

Khóa học tương tự

Khám phá các khóa học khác trong cùng lĩnh vực!

Ưu đãi có thời hạn, kết thúc sau 5 ngày ngày

354.856 ₫

24%

473.141 ₫