Builder Pattern cho object nhiều tham số trong Java
Cách dùng Builder Pattern để tạo object nhiều tham số dễ đọc, immutable và có validation, từ cách viết thủ công đến Lombok @Builder và record.
Design pattern, system design, microservices và các khối xây dựng hệ thống lớn.
Cách dùng Builder Pattern để tạo object nhiều tham số dễ đọc, immutable và có validation, từ cách viết thủ công đến Lombok @Builder và record.
Hiểu và cài đặt hai chiến lược cache phổ biến là cache-aside và write-through, kèm cách chọn TTL hợp lý trong Spring Boot 3.
Hiểu cách Kafka chia partition cho consumer group, khi nào rebalance xảy ra và cách giảm ảnh hưởng của rebalance trong ứng dụng Spring Boot.
Cách tự cài distributed lock bằng SET NX PX và Lua script, dùng Redisson với watchdog, viết test bằng Testcontainers và tránh các lỗi hay gặp.
Cách dùng Saga pattern để giữ dữ liệu nhất quán giữa nhiều microservice mà không cần 2PC, kèm ví dụ orchestration bằng Java 21 và test.
Case study thiết kế hệ thống đấu giá: mô hình dữ liệu, API, xử lý bid đồng thời bằng conditional update, Redis Lua, chống sniping và đóng phiên an toàn.
Case-study thiết kế hệ thống lưu trữ file: yêu cầu, mô hình dữ liệu, API upload theo chunk, chia sẻ, đồng bộ, xử lý tranh chấp và tải đột biến.
Case study thiết kế hệ thống theo dõi đơn hàng và vị trí shipper realtime với Spring Boot, Kafka, Redis GEO và SSE. Bài phân tích tranh chấp, nhất quán và tải đột biến.
Case study thiết kế hệ thống mã giảm giá: không phát vượt giới hạn khi flash sale, dùng atomic UPDATE, Redis Lua, Kafka và cơ chế giữ chỗ có hết hạn.
Tìm hiểu cách PostgreSQL xử lý transaction, bốn isolation level, các hiện tượng như lost update, write skew, và cách cấu hình, retry trong Spring Boot.
Dùng Bloom filter trên Redis (qua Redisson) để chặn request truy vấn key không tồn tại trước khi chúng xuyên qua cache và đập vào database.
Dùng Debezium đọc WAL của PostgreSQL, đẩy mọi thay đổi dữ liệu vào Kafka và tiêu thụ chúng bằng Spring Boot, không cần sửa code ghi dữ liệu.
Dùng Kafka làm event log cho Order: ghi sự kiện bất biến, dựng lại trạng thái bằng replay, tạo read model bằng projection. Kèm các giới hạn cần biết trước khi áp dụng.
Consumer lag là gì, cách đo bằng CLI, AdminClient và Micrometer, các chỉ số broker/producer/consumer nên theo dõi và cách đặt cảnh báo hợp lý.
Cách áp dụng cache-aside với Redis trong Spring Boot, xóa cache sau commit, xử lý race condition và kiểm thử bằng Testcontainers.
Cách nhận diện hot key và big key trong Redis bằng redis-cli, MEMORY USAGE, OBJECT FREQ và cách xử lý bằng tách key, UNLINK, local cache, nhân bản key.
Cấu hình acks, enable.idempotence, batch.size và linger.ms cho Kafka producer để không mất message, không trùng lặp mà vẫn đạt throughput cao.
Ghi database và gửi Kafka cùng lúc rất dễ mất sự kiện. Bài này hướng dẫn cài Outbox pattern với Spring Boot 3 và Kafka để hai bên luôn nhất quán.
Hiểu cách Redis ghi dữ liệu xuống đĩa bằng RDB và AOF, cấu hình từng chế độ, và nhận diện những tình huống vẫn mất dữ liệu dù đã bật persistence.
Dùng Redis Streams và consumer group trong Spring Boot 3 để xử lý sự kiện at-least-once, có ACK thủ công, retry message treo và dead-letter.