Kafka trong 30 ngày

Docs Kafka: https://kafka.apache.org/documentation/

Docs redpanda: https://docs.redpanda.com/current/home/

Tuần 1: Khám phá Kafka & Redpanda

  • Ngày 1:

    • Sáng: Giới thiệu Kafka (Apache Kafka docs, phần 1.1) & Redpanda (Redpanda docs, "Get Started").

    • Chiều: So sánh Kafka và Redpanda, làm nổi bật điểm mạnh và khác biệt.

    • Bài tập:

      1. Cài đặt Kafka và Redpanda trên môi trường local (docker/kubernetes).

      2. So sánh các tính năng nổi bật của Kafka và Redpanda.

      3. Đọc tài liệu giới thiệu và nêu những ưu điểm chính của Redpanda.

  • Ngày 2:

    • Sáng: Tìm hiểu kiến trúc phân tán của Kafka (Kafka docs, phần 4.1 - 4.5) và kiến trúc của Redpanda (Redpanda docs, "How Redpanda Works").

    • Chiều: Thực hành tạo topic và gửi/nhận dữ liệu với cả Kafka và Redpanda.

    • Bài tập:

      1. So sánh cấu trúc topic và phân vùng trong Kafka và Redpanda.

      2. Thực hiện gửi một lượng lớn dữ liệu vào một topic trong cả hai hệ thống và so sánh hiệu suất.

      3. Viết một chương trình đơn giản để đọc dữ liệu từ một topic trong Kafka và Redpanda.

  • Ngày 3:

    • Sáng: Kafka Producer và Consumer API (Kafka docs, phần 2.1, 2.2) & tương đương trong Redpanda (Redpanda docs, "Produce Data", "Consume Data").

    • Chiều: Xây dựng một ứng dụng đơn giản với Kafka Producer/Consumer và Redpanda Producer/Consumer.

    • Bài tập:

      1. Xây dựng một ứng dụng gửi tin nhắn nhiệt độ giả lập liên tục vào Kafka và Redpanda.

      2. Xây dựng một ứng dụng đọc các tin nhắn này và tính toán nhiệt độ trung bình trong một khoảng thời gian.

      3. So sánh hiệu suất của hai ứng dụng trên cả Kafka và Redpanda.

  • Ngày 4:

    • Sáng: Tìm hiểu Kafka Streams (Kafka docs, phần 9) và các khả năng xử lý luồng của Redpanda (Redpanda docs, "Data Transforms").

    • Chiều: Thực hành với một ứng dụng Kafka Streams đơn giản hoặc Data Transforms của Redpanda.

    • Bài tập:

      1. Viết một ứng dụng Kafka Streams đếm số từ trong một luồng văn bản.

      2. Sử dụng Data Transforms để lọc dữ liệu theo một điều kiện cụ thể.

      3. Nghiên cứu về các khả năng xử lý luồng phức tạp hơn của Kafka Streams và Data Transforms.

  • Ngày 5:

    • Sáng: Kafka Connect (Kafka docs, phần 8) và tương đương trong Redpanda (Redpanda docs, "Connectors").

    • Chiều: Kết nối Kafka/Redpanda với MySQL, PostgreSQL, hoặc một nguồn dữ liệu khác.

    • Bài tập:

      1. Cài đặt và cấu hình Kafka Connect hoặc Redpanda Connect.

      2. Thiết lập một connector để sao chép dữ liệu từ một bảng trong MySQL vào một topic Kafka/Redpanda.

      3. Tìm hiểu về các loại connector khác nhau (source và sink) và cách sử dụng chúng.

Tuần 2: Vận hành, Quản lý & Cấu hình

  • Ngày 6:

    • Sáng: Cấu hình Kafka Broker (Kafka docs, phần 3.1) và Redpanda Broker (Redpanda docs, "Manage").

    • Chiều: Cấu hình topic, partitions, replicas trong cả Kafka và Redpanda.

    • Bài tập:

      1. Thay đổi các tham số cấu hình quan trọng như kích thước phân vùng, thời gian lưu trữ dữ liệu.

      2. Thực hành tăng số lượng phân vùng của một topic trong cả Kafka và Redpanda.

      3. Tạo một topic với cấu hình sao chép (replication) để đảm bảo tính khả dụng cao.

  • Ngày 7:

    • Sáng: Tìm hiểu về ZooKeeper (Kafka docs, phần 6.9) và KRaft (Redpanda docs, "Manage").

    • Chiều: Thực hành quản lý cluster Kafka với ZooKeeper và Redpanda với KRaft.

    • Bài tập:

      1. Sử dụng ZooKeeper CLI để kiểm tra trạng thái của cluster Kafka.

      2. Sử dụng rpk (Redpanda CLI) để quản lý cluster Redpanda.

      3. So sánh vai trò và cách thức hoạt động của ZooKeeper và KRaft.

  • Ngày 8:

    • Sáng: Quản lý tài nguyên và cân bằng cluster trong Kafka và Redpanda.

    • Chiều: Thực hành mở rộng và thu nhỏ cluster Kafka/Redpanda.

    • Bài tập:

      1. Thêm một broker mới vào cluster Kafka và Redpanda.

      2. Tái cân bằng các phân vùng để đảm bảo phân phối dữ liệu đều giữa các broker.

      3. Xóa một broker khỏi cluster Kafka và Redpanda một cách an toàn.

  • Ngày 9:

    • Sáng: Tìm hiểu về bảo mật Kafka (Kafka docs, phần 7) và Redpanda (Redpanda docs, "Security").

    • Chiều: Cấu hình SSL/TLS, xác thực và ủy quyền trong Kafka và Redpanda.

    • Bài tập:

      1. Kích hoạt SSL/TLS cho cả Kafka và Redpanda.

      2. Cài đặt và cấu hình cơ chế xác thực SASL/SCRAM hoặc mTLS.

      3. Thiết lập Access Control Lists (ACLs) để kiểm soát truy cập vào các topic.

  • Ngày 10:

    • Sáng: Giám sát Kafka (Kafka docs, phần 6.8) và Redpanda (Redpanda docs, "Monitor").

    • Chiều: Sử dụng các công cụ giám sát như Prometheus, Grafana, và Redpanda Console.

    • Bài tập:

      1. Thiết lập Prometheus và Grafana để thu thập và hiển thị metrics Kafka.

      2. Sử dụng Redpanda Console để giám sát hoạt động của cluster Redpanda.

      3. Tìm hiểu về các metrics quan trọng cần theo dõi để đánh giá hiệu suất và sức khỏe của hệ thống.

Tuần 3: Vận hành Nâng cao, Bảo mật và Giám sát

Ngày 11:

  • Sáng: Giám sát Kafka (Kafka docs, phần 6.8) và Redpanda (Redpanda docs, "Monitor"):

    • Tìm hiểu về các chỉ số quan trọng cần theo dõi trong Kafka và Redpanda để đánh giá hiệu suất, tình trạng hoạt động, và phát hiện các vấn đề tiềm ẩn.

    • Kafka:

      • Broker metrics: thông lượng, độ trễ, sử dụng đĩa, số lượng request đang hoạt động, v.v.

      • Producer metrics: số lượng bản ghi đã gửi, kích thước bản ghi trung bình, tỷ lệ nén, v.v.

      • Consumer metrics: số lượng bản ghi đã nhận, độ trễ giữa thời gian gửi và nhận, offset lag, v.v.

    • Redpanda:

      • Cluster metrics: thông lượng, độ trễ, sử dụng đĩa, số lượng request đang hoạt động, tình trạng của các node, v.v.

      • Topic metrics: thông lượng, độ trễ, số lượng bản ghi, kích thước bản ghi trung bình, v.v.

      • Partition metrics: thông lượng, độ trễ, số lượng bản ghi, kích thước bản ghi trung bình, v.v.

    • Bài tập:

      1. Liệt kê các chỉ số quan trọng cần theo dõi cho broker, producer, và consumer trong Kafka.

      2. Sử dụng Kafka's built-in metrics reporter để thu thập metrics và xem chúng trên JMX console.

      3. Liệt kê các chỉ số quan trọng cần theo dõi trong Redpanda.

  • Chiều: Thực hành giám sát Kafka và Redpanda:

    • Sử dụng Redpanda Console:

      • Khám phá Redpanda Console, một công cụ giám sát trực quan cho Redpanda.

      • Tìm hiểu cách sử dụng Redpanda Console để theo dõi hoạt động của cluster Redpanda, phân tích các chỉ số về thông lượng, độ trễ, sử dụng tài nguyên, và tình trạng của các broker.

    • Thiết lập Prometheus và Grafana:

      • Cài đặt và cấu hình Prometheus, một hệ thống giám sát mã nguồn mở, để thu thập metrics từ Kafka và Redpanda.

      • Cài đặt và cấu hình Grafana, một công cụ trực quan hóa dữ liệu, để hiển thị các metrics thu thập được từ Prometheus.

    • Tìm hiểu cách tạo dashboard tùy chỉnh trên Grafana:

      • Tìm hiểu cách sử dụng các tính năng của Grafana để tạo các dashboard tùy chỉnh, hiển thị các chỉ số quan trọng và phát hiện các vấn đề tiềm ẩn.
    • Bài tập:

      1. Sử dụng Redpanda Console để giám sát một cluster Redpanda đang chạy.

      2. Thiết lập Prometheus và Grafana để thu thập và hiển thị metrics từ một cluster Kafka hoặc Redpanda.

      3. Tạo một dashboard Grafana đơn giản để hiển thị thông lượng và độ trễ của một topic Kafka/Redpanda.

  • Ngày 12:

    • Sáng: Tìm hiểu về cơ chế bảo mật trong Kafka và Redpanda:

      • Kafka:

        • Xác thực và ủy quyền: tìm hiểu về các phương pháp xác thực khác nhau như SASL/PLAIN, SASL/SCRAM, Kerberos, và cách thiết lập ACL (Access Control Lists) để kiểm soát truy cập vào các topic và consumer group.

        • Mã hóa: tìm hiểu về cách sử dụng SSL/TLS để mã hóa dữ liệu truyền giữa các thành phần Kafka.

      • Redpanda:

        • Xác thực và ủy quyền: tìm hiểu về các phương pháp xác thực như mTLS, SASL/PLAIN, SASL/SCRAM, OAuth2/OIDC, và cách sử dụng RBAC (Role-Based Access Control) để quản lý quyền truy cập.

        • Mã hóa: tìm hiểu về cách sử dụng TLS để mã hóa dữ liệu truyền giữa các thành phần Redpanda.

    • Chiều: Thực hành cấu hình bảo mật trong Kafka và Redpanda:

      • Kafka:

        • Cấu hình SSL/TLS để mã hóa dữ liệu truyền giữa các thành phần Kafka.

        • Thiết lập xác thực SASL/SCRAM cho client và broker.

        • Tạo và quản lý ACL để kiểm soát truy cập vào các topic và consumer group.

      • Redpanda:

        • Cấu hình TLS để mã hóa dữ liệu truyền giữa các thành phần Redpanda.

        • Thiết lập xác thực mTLS hoặc SASL/SCRAM cho client và broker.

        • Tạo và quản lý RBAC để kiểm soát truy cập vào các tài nguyên Redpanda.

    • Bài tập:

      1. Cấu hình xác thực SASL/SCRAM cho một ứng dụng Kafka Producer và Consumer.

      2. Cấu hình xác thực mTLS cho một ứng dụng Redpanda Producer và Consumer.

      3. Tạo một ACL trong Kafka để chỉ cho phép một số người dùng cụ thể đọc từ một topic.

      4. Tạo một vai trò (role) trong Redpanda để chỉ cho phép một số người dùng cụ thể tạo topic.

Tuần 4: KRaft, Lưu trữ Phân lớp, và Tối ưu Hiệu suất

  • Ngày 13:

    • Sáng: Tìm hiểu về KRaft (Redpanda docs, "Manage") và so sánh với ZooKeeper (Kafka docs, phần 6.9):

      • Tìm hiểu về kiến trúc và hoạt động của KRaft, một cơ chế đồng thuận phân tán được sử dụng trong Redpanda để thay thế ZooKeeper.

      • So sánh ưu điểm và nhược điểm của KRaft và ZooKeeper trong việc quản lý trạng thái của cluster Kafka và Redpanda.

    • Chiều: Thực hành di chuyển từ ZooKeeper sang KRaft (Redpanda docs, "Manage"):

      • Thực hiện quá trình di chuyển một cluster Kafka hiện có từ việc sử dụng ZooKeeper sang sử dụng KRaft.

      • Kiểm tra tính ổn định và hiệu suất của cluster sau khi di chuyển.

    • Bài tập:

      1. Giải thích tại sao Redpanda sử dụng KRaft thay vì ZooKeeper.

      2. Liệt kê các bước cần thiết để di chuyển một cluster Kafka từ ZooKeeper sang KRaft.

      3. So sánh hiệu suất của một cluster Kafka sử dụng ZooKeeper và một cluster Redpanda sử dụng KRaft.

  • Ngày 14:

    • Sáng: Khám phá lưu trữ phân lớp (tiered storage) (Redpanda docs, "Tiered Storage"):

      • Tìm hiểu về khái niệm tiered storage, một tính năng cho phép lưu trữ dữ liệu Kafka/Redpanda trên nhiều loại thiết bị lưu trữ khác nhau để tối ưu hóa chi phí và hiệu suất.

      • Tìm hiểu về các chiến lược tiered storage khác nhau và cách chọn chiến lược phù hợp cho ứng dụng của bạn.

    • Chiều: Thực hành cấu hình tiered storage trong Redpanda:

      • Thiết lập một cluster Redpanda với tiered storage, sử dụng bộ nhớ cục bộ (local disk) cho dữ liệu nóng và bộ nhớ đối tượng (object storage) như Amazon S3 hoặc Google Cloud Storage cho dữ liệu lạnh.

      • Cấu hình các chính sách di chuyển dữ liệu giữa các tầng lưu trữ.

    • Bài tập:

      1. Giải thích tại sao tiered storage lại hữu ích cho các ứng dụng Kafka/Redpanda.

      2. Thiết lập một cluster Redpanda với tiered storage và cấu hình chính sách di chuyển dữ liệu.

      3. Đánh giá hiệu quả của tiered storage bằng cách so sánh chi phí và hiệu suất với việc sử dụng chỉ một loại thiết bị lưu trữ.

  • Ngày 15:

    • Sáng: Nâng cao hiệu suất Kafka và Redpanda:

      • Tìm hiểu về các kỹ thuật tối ưu hóa khác nhau cho Kafka và Redpanda, như:

        • Tinh chỉnh các tham số cấu hình (ví dụ: batch.size, linger.ms, compression.type).

        • Sử dụng các kỹ thuật nén dữ liệu hiệu quả.

        • Tối ưu hóa mạng và phần cứng.

    • Chiều: Thực hành tối ưu hóa hiệu suất của Kafka và Redpanda:

      • Thử nghiệm với các cấu hình khác nhau để tìm ra cấu hình tối ưu cho ứng dụng của bạn.

      • Sử dụng các công cụ benchmark để đo lường và so sánh hiệu suất.

    • Bài tập:

      1. Điều chỉnh các tham số cấu hình của Kafka và Redpanda để tối ưu hóa thông lượng và độ trễ.

      2. So sánh hiệu suất của Kafka và Redpanda với các cấu hình khác nhau.

      3. Tìm hiểu về các công cụ benchmark khác nhau và cách sử dụng chúng để đo lường hiệu suất của Kafka và Redpanda.

Tuần 5: Phát Triển Ứng Dụng và Tích Hợp Kafka/Redpanda

  • Ngày 16:

    • Sáng: Kafka Streams nâng cao (Kafka docs, phần 9) & Redpanda Data Transforms (Redpanda docs):

      • Tìm hiểu về các khái niệm nâng cao trong Kafka Streams như state stores, joins, windowing, và cách xử lý các luồng dữ liệu phức tạp.

      • Tìm hiểu về các tính năng nâng cao của Redpanda Data Transforms như xử lý lỗi, quản lý schema, và tích hợp với các hệ thống bên ngoài.

    • Chiều: Thực hành xây dựng ứng dụng Kafka Streams/Redpanda Data Transforms phức tạp:

      • Chọn một bài toán xử lý luồng dữ liệu thực tế (ví dụ: tính toán số lượng sự kiện theo thời gian thực, phát hiện bất thường).

      • Xây dựng ứng dụng Kafka Streams hoặc Redpanda Data Transforms để giải quyết bài toán đó.

    • Bài tập:

      1. Xây dựng một ứng dụng Kafka Streams để tính toán số lượng sự kiện theo thời gian thực, sử dụng windowing và state stores.

      2. Xây dựng một ứng dụng Redpanda Data Transforms để phát hiện các giao dịch bất thường trong một luồng dữ liệu tài chính.

      3. Tìm hiểu về các best practices khi xây dựng ứng dụng Kafka Streams và Redpanda Data Transforms.

  • Ngày 17:

    • Sáng: Tích hợp Kafka/Redpanda với các hệ thống lớn (Kafka docs, phần 8; Redpanda docs, "Connectors"):

      • Tìm hiểu về cách tích hợp Kafka/Redpanda với các hệ thống lớn như Hadoop, Spark, Flink, và các cơ sở dữ liệu khác.

      • Khám phá các công cụ và thư viện hỗ trợ tích hợp, như Kafka Connect, Spark Streaming, Flink Kafka Connector.

    • Chiều: Thực hành tích hợp Kafka/Redpanda với Spark:

      • Sử dụng Spark Streaming để đọc dữ liệu từ Kafka/Redpanda, thực hiện các phép biến đổi và phân tích dữ liệu, và ghi kết quả vào một hệ thống khác (ví dụ: HDFS, Cassandra).
    • Bài tập:

      1. Xây dựng một ứng dụng Spark Streaming để đọc dữ liệu từ một topic Kafka/Redpanda, tính tổng số sự kiện theo một khoảng thời gian, và ghi kết quả vào một bảng Cassandra.

      2. Sử dụng Kafka Connect HDFS Connector để tích hợp Kafka với Hadoop.

      3. Tìm hiểu về các thư viện Kafka/Redpanda client cho các ngôn ngữ lập trình khác nhau (ví dụ: Python, Java, Go).

  • Ngày 18:

    • Sáng: Tìm hiểu về Schema Registry trong Kafka và Redpanda:

      • Tìm hiểu về khái niệm schema và tầm quan trọng của nó trong việc đảm bảo tính nhất quán của dữ liệu.

      • Tìm hiểu về cách sử dụng Confluent Schema Registry (cho Kafka) và Redpanda Schema Registry.

    • Chiều: Thực hành sử dụng Schema Registry:

      • Tạo và đăng ký schema cho các topic Kafka/Redpanda.

      • Sử dụng Schema Registry để kiểm tra tính hợp lệ của dữ liệu trước khi gửi vào Kafka/Redpanda.

      • Tìm hiểu về các tính năng nâng cao của Schema Registry như schema evolution và compatibility checking.

    • Bài tập:

      1. Tạo một schema Avro cho một topic Kafka/Redpanda.

      2. Đăng ký schema đó với Confluent Schema Registry hoặc Redpanda Schema Registry.

      3. Viết một ứng dụng Producer để gửi dữ liệu vào topic đó, sử dụng Schema Registry để serialize dữ liệu.

  • Ngày 19:

    • Sáng: Triển khai Kafka và Redpanda trên Kubernetes (Redpanda docs, "Kubernetes"):

      • Tìm hiểu về cách triển khai Kafka và Redpanda trên Kubernetes, một nền tảng quản lý container phổ biến.

      • Tìm hiểu về các thành phần của một deployment Kafka/Redpanda trên Kubernetes, bao gồm StatefulSets, Services, và Ingress.

    • Chiều: Thực hành triển khai Kafka và Redpanda trên Kubernetes:

      • Sử dụng Helm charts để triển khai một cluster Kafka hoặc Redpanda trên Kubernetes.

      • Cấu hình các tính năng như persistence, networking, và security.

    • Bài tập:

      1. Triển khai một cluster Redpanda trên Kubernetes bằng Helm chart.

      2. Cấu hình persistence cho cluster Redpanda sử dụng Persistent Volumes.

      3. Cấu hình ingress để cho phép truy cập bên ngoài vào cluster Redpanda.

  • Ngày 20:

    • Sáng: Tối ưu hóa Kafka và Redpanda trên Kubernetes:

      • Tìm hiểu về các kỹ thuật tối ưu hóa hiệu suất và khả năng mở rộng của Kafka và Redpanda trên Kubernetes.

      • Tìm hiểu về cách quản lý tài nguyên (CPU, bộ nhớ) cho các pod Kafka/Redpanda.

      • Tìm hiểu về cách sử dụng các tính năng của Kubernetes như Horizontal Pod Autoscaling (HPA) để tự động mở rộng cluster khi cần thiết.

    • Chiều: Thực hành tối ưu hóa Kafka và Redpanda trên Kubernetes:

      • Điều chỉnh các tham số cấu hình của Kafka và Redpanda để tối ưu hóa hiệu suất trên Kubernetes.

      • Cấu hình HPA cho các pod Kafka/Redpanda để tự động mở rộng cluster khi tải tăng.

    • Bài tập:

      1. Điều chỉnh các tham số cấu hình của Redpanda để tối ưu hóa hiệu suất trên Kubernetes.

      2. Cấu hình HPA cho các pod Redpanda để tự động mở rộng cluster khi tải tăng.

      3. So sánh hiệu suất của Kafka và Redpanda trên Kubernetes với các cấu hình khác nhau.

Dự án thực tế: Xây dựng hệ thống giám sát log thời gian thực (Real-time Log Monitoring System)

Ngày 21-25:

  • Ngày 21: Thiết kế hệ thống:

    • Xác định các loại log cần giám sát (lỗi ứng dụng, lỗi hệ thống, lỗi mạng, log hoạt động người dùng, v.v.).

    • Thiết kế cấu trúc dữ liệu cho các bản ghi log (ví dụ: JSON, Avro).

    • Chọn các công cụ và thư viện cần thiết (Kafka/Redpanda, Elasticsearch, Kibana, Filebeat hoặc Fluentd).

    • Bài tập:

      1. Lập danh sách các loại log cần giám sát và các thông tin quan trọng cần thu thập từ mỗi loại log.

      2. Thiết kế schema dữ liệu cho các bản ghi log.

      3. Nghiên cứu về các công cụ thu thập log như Filebeat và Fluentd, so sánh ưu nhược điểm của chúng.

  • Ngày 22: Triển khai cơ sở hạ tầng:

    • Cài đặt và cấu hình Kafka hoặc Redpanda trên môi trường phát triển hoặc thử nghiệm.

    • Cài đặt và cấu hình Elasticsearch và Kibana.

    • Cài đặt và cấu hình Filebeat hoặc Fluentd trên các máy chủ ứng dụng để thu thập log.

    • Bài tập:

      1. Cài đặt và cấu hình một cluster Kafka/Redpanda đơn giản.

      2. Cài đặt và cấu hình Elasticsearch và Kibana.

      3. Cấu hình Filebeat hoặc Fluentd để thu thập log từ một ứng dụng mẫu.

  • Ngày 23: Xây dựng pipeline xử lý log:

    • Cấu hình Filebeat hoặc Fluentd để gửi log đến Kafka/Redpanda.

    • Sử dụng Kafka Connect hoặc Logstash để đọc log từ Kafka/Redpanda, thực hiện các bước xử lý như phân tích cú pháp, làm giàu dữ liệu, và lọc log.

    • Cấu hình Kafka Connect hoặc Logstash để gửi log đã xử lý vào Elasticsearch.

    • Bài tập:

      1. Cấu hình Filebeat hoặc Fluentd để gửi log đến một topic Kafka/Redpanda.

      2. Xây dựng một pipeline xử lý log đơn giản bằng Kafka Connect hoặc Logstash để phân tích cú pháp log và trích xuất các trường quan trọng.

      3. Cấu hình Kafka Connect hoặc Logstash để gửi log đã xử lý vào Elasticsearch.

  • Ngày 24: Xây dựng dashboard trực quan hóa:

    • Sử dụng Kibana để tạo các dashboard trực quan hóa dữ liệu log.

    • Tạo các biểu đồ, bảng và đồ thị để hiển thị các thông tin quan trọng từ log.

    • Thiết lập các bộ lọc và tìm kiếm để phân tích log theo các tiêu chí khác nhau.

    • Bài tập:

      1. Tạo một dashboard Kibana để hiển thị số lượng log theo thời gian, theo loại log, và theo mức độ nghiêm trọng.

      2. Tạo một biểu đồ để hiển thị xu hướng của các loại lỗi khác nhau theo thời gian.

      3. Tạo một tìm kiếm để lọc log theo các từ khóa cụ thể.

  • Ngày 25: Kiểm thử và hoàn thiện hệ thống:

    • Kiểm tra hệ thống với dữ liệu log thực tế từ các ứng dụng.

    • Kiểm tra khả năng mở rộng của hệ thống bằng cách tăng tải trọng log.

    • Điều chỉnh và tối ưu hóa hệ thống dựa trên kết quả kiểm thử.

    • Bài tập:

      1. Triển khai hệ thống trên một môi trường thử nghiệm và kiểm tra với dữ liệu log thực tế.

      2. Thực hiện kiểm thử tải để đánh giá khả năng mở rộng của hệ thống.

      3. Tối ưu hóa hệ thống bằng cách điều chỉnh cấu hình của Kafka/Redpanda, Elasticsearch, và Kibana.

Tuần 6: Chủ đề Nâng cao và Triển vọng Tương lai

  • Ngày 26:

    • Sáng: Kafka và Redpanda trong các kiến trúc microservices:

      • Tìm hiểu về cách sử dụng Kafka và Redpanda để xây dựng các kiến trúc microservices.

      • Tìm hiểu về các mẫu thiết kế (design patterns) phổ biến khi sử dụng Kafka/Redpanda trong microservices.

    • Chiều: Thực hành xây dựng một ứng dụng microservices đơn giản sử dụng Kafka hoặc Redpanda để giao tiếp giữa các dịch vụ.

    • Bài tập:

      1. Thiết kế một kiến trúc microservices đơn giản sử dụng Kafka hoặc Redpanda để truyền dữ liệu giữa các dịch vụ.

      2. Xây dựng một ứng dụng microservices mẫu bao gồm ít nhất hai dịch vụ giao tiếp với nhau thông qua Kafka hoặc Redpanda.

      3. Tìm hiểu về các mẫu thiết kế như event sourcing và CQRS trong bối cảnh microservices.

  • Ngày 27:

    • Sáng: Kafka và Redpanda trong học máy (Machine Learning):

      • Tìm hiểu về cách sử dụng Kafka và Redpanda để xây dựng các hệ thống học máy thời gian thực.

      • Tìm hiểu về các trường hợp sử dụng như thu thập và xử lý dữ liệu huấn luyện, triển khai mô hình, và giám sát mô hình.

    • Chiều: Thực hành xây dựng một ứng dụng học máy đơn giản sử dụng Kafka hoặc Redpanda để truyền dữ liệu huấn luyện và dự đoán.

    • Bài tập:

      1. Nghiên cứu về các thư viện và framework hỗ trợ tích hợp Kafka/Redpanda với các công cụ học máy như TensorFlow, PyTorch.

      2. Xây dựng một ứng dụng đơn giản để huấn luyện một mô hình học máy bằng dữ liệu từ Kafka/Redpanda.

      3. Triển khai mô hình đã huấn luyện và sử dụng Kafka/Redpanda để nhận dữ liệu đầu vào và gửi dự đoán.

  • Ngày 28:

    • Sáng: Tìm hiểu về các tính năng mới nhất của Kafka và Redpanda:

      • Tìm hiểu về các tính năng mới được giới thiệu trong các phiên bản gần đây của Kafka và Redpanda.

      • Đọc các blog và bài viết kỹ thuật để cập nhật những xu hướng mới nhất trong cộng đồng Kafka và Redpanda.

    • Chiều: Thử nghiệm các tính năng mới:

      • Cài đặt và thử nghiệm các phiên bản mới nhất của Kafka và Redpanda.

      • Thử nghiệm các tính năng mới và đánh giá tác động của chúng đến ứng dụng của bạn.

    • Bài tập:

      1. Nghiên cứu về các tính năng mới trong Kafka 3.x và Redpanda 22.x.

      2. Viết một bài tóm tắt về một tính năng mới mà bạn thấy thú vị.

      3. Thử nghiệm một tính năng mới trên một cluster Kafka hoặc Redpanda thử nghiệm.

  • Ngày 29-30: Ôn tập

Ngày 29:

  • Sáng: Ôn tập kiến thức cơ bản về Kafka và Redpanda:

    • Xem lại các khái niệm cơ bản như topic, partition, replica, producer, consumer, consumer group.

    • Ôn lại cách thức hoạt động của Kafka và Redpanda, bao gồm kiến trúc, lưu trữ dữ liệu, và cơ chế sao chép.

    • Xem lại các API cơ bản của Kafka và Redpanda, bao gồm Producer API, Consumer API, và Admin API.

    • Bài tập:

      1. Viết một đoạn văn ngắn để tóm tắt kiến trúc và cách hoạt động của Kafka và Redpanda.

      2. Giải thích sự khác biệt giữa các khái niệm topic, partition, và replica.

      3. Viết một chương trình đơn giản để gửi và nhận tin nhắn từ một topic Kafka/Redpanda.

  • Chiều: Ôn tập các tính năng nâng cao của Kafka và Redpanda:

    • Xem lại các tính năng như Kafka Streams, Kafka Connect, Redpanda Data Transforms, Schema Registry, KRaft, và tiered storage.

    • Ôn lại cách cấu hình và sử dụng các tính năng này trong các ứng dụng thực tế.

    • Bài tập:

      1. Viết một ứng dụng Kafka Streams đơn giản để tính tổng số lần xuất hiện của các từ trong một luồng văn bản.

      2. Cấu hình một Kafka Connect connector để đọc dữ liệu từ một cơ sở dữ liệu và ghi vào Kafka.

      3. Cấu hình tiered storage trong Redpanda để tối ưu hóa chi phí lưu trữ.

Ngày 30:

  • Sáng: Ôn tập về vận hành, giám sát và bảo mật Kafka và Redpanda:

    • Xem lại các bước để cài đặt, cấu hình và quản lý một cluster Kafka/Redpanda.

    • Ôn lại các công cụ và kỹ thuật giám sát Kafka/Redpanda, bao gồm Prometheus, Grafana, và Redpanda Console.

    • Xem lại các phương pháp bảo mật Kafka/Redpanda, bao gồm SSL/TLS, SASL, ACL, và RBAC.

    • Bài tập:

      1. Thực hiện các bước để mở rộng một cluster Kafka/Redpanda bằng cách thêm một broker mới.

      2. Thiết lập một cảnh báo trong Grafana để thông báo khi thông lượng của một topic giảm xuống dưới một ngưỡng nhất định.

      3. Cấu hình SSL/TLS và xác thực SASL/SCRAM cho một cluster Kafka.

  • Chiều: Chuẩn bị cho phỏng vấn:

    • Nghiên cứu các câu hỏi phỏng vấn phổ biến về Kafka và Redpanda.

    • Thực hành trả lời các câu hỏi phỏng vấn.

    • Xem lại các dự án và bài tập đã làm trong suốt khóa học.

    • Bài tập:

      1. Tìm và trả lời ít nhất 10 câu hỏi phỏng vấn về Kafka và Redpanda.

      2. Thực hiện một buổi phỏng vấn giả định với một người bạn hoặc đồng nghiệp.

      3. Viết một bài blog hoặc bài đăng trên LinkedIn để chia sẻ những gì bạn đã học được trong khóa học này.