inflearn logo

Thiết kế bộ nhớ đệm cho thương mại điện tử — cách ứng phó với đột biến lưu lượng giữa bộ nhớ đệm cục bộ, phân tán và cơ sở dữ liệu

Khắc phục các API sản phẩm và sự kiện bị quá tải khi mở bán bằng L1 cục bộ + L2 từ xa + chống cache stampede + cơ chế vô hiệu hóa + kill switch, rồi chứng minh bằng số liệu trước và sau mức giảm băng thông, độ trễ và tải DB dưới cùng một mức tải.

2 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

Node.js
Node.js
PostgreSQL
PostgreSQL
Redis
Redis
k6
k6
cache
cache
Node.js
Node.js
PostgreSQL
PostgreSQL
Redis
Redis
k6
k6
cache
cache

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

  • Tìm các khóa lớn/khóa nóng, lập bảng theo kích thước khóa × số lượt yêu cầu (tính theo byte), rồi báo cáo bằng số liệu hiệu quả của thay đổi bộ nhớ đệm thông qua so sánh trước và sau trong cùng mức tải và cùng khoảng thời gian.

  • Thiết kế bộ nhớ đệm hai tầng gồm L1 cục bộ và L2 từ xa, xác định kích thước và TTL dựa trên cơ sở hợp lý, đồng thời giải thích vì sao bộ nhớ đệm từ xa bị quá tải khi băng thông bị giới hạn.

  • Ngăn cache stampede bằng single-flight, khóa phân tán, làm mới sớm theo xác suất, jitter TTL và bộ nhớ đệm âm; dùng cơ chế vô hiệu hóa theo sự kiện và khóa phiên bản để kiểm soát cửa sổ nhất quán theo chính sách.

  • Phục vụ bảng xếp hạng bằng sorted set, đồng thời thiết kế cơ chế ghi kép, khôi phục, ngắt mạch, công tắc dừng khẩn cấp và hợp đồng phản hồi.

Dưới cùng một mức tải, số lỗi giảm từ 3,567 xuống 0, dữ liệu gửi qua bộ nhớ đệm từ xa giảm từ 200.7MB xuống 4.6MB. Thành quả cuối cùng của khóa học này là trực tiếp khắc phục API thương mại điện tử bị quá tải và chứng minh hiệu quả bằng các con số trước và sau.

Khắc phục các API sản phẩm và sự kiện bị quá tải khi mở bán bằng L1 cục bộ + L2 từ xa + chống stampede + vô hiệu hóa + công tắc ngắt, rồi chứng minh bằng số liệu trước và sau mức giảm của băng thông, độ trễ và tải cơ sở dữ liệu dưới cùng một mức tải.

Đây không phải là khóa học lần lượt giới thiệu từng lệnh hay cấu trúc dữ liệu của Redis. Trong môi trường thực hành Docker, chúng ta sẽ tái hiện lưu lượng truy cập khi mở sự kiện mùa giảm giá của Loop Market, một cửa hàng chuyên về thể thao ảo và đồ dã ngoại do một nhóm phát triển nhỏ vận hành; sau đó đo lường từng nguyên nhân khiến hệ thống vẫn sụp đổ dù đã có bộ nhớ đệm (băng thông do phản hồi lớn, khóa nóng, stampede, khoảng thời gian dữ liệu không nhất quán, xung đột chính sách loại bỏ, noisy neighbor, các mục có chi phí cao) rồi khắc phục chúng. Tất cả số liệu đều được đo trực tiếp trong phần thực hành, và mỗi bài học đều theo trình tự: làm theo → kiểm tra kết quả → cố tình làm hỏng để thử nghiệm.

Sau khi hoàn thành khóa học này

  • Tìm các khóa lớn và khóa nóng, rồi lập bảng theo kích thước khóa × số lượt yêu cầu (tính theo byte).

  • Báo cáo bằng số liệu hiệu quả của việc thay đổi bộ nhớ đệm, so sánh trước và sau trong cùng điều kiện tải và cùng khoảng thời gian.

  • Thiết kế bộ nhớ đệm hai tầng L1 cục bộ + L2 từ xa và xác định kích thước, TTL dựa trên căn cứ cụ thể.

  • Ngăn chặn hiện tượng stampede bằng single-flight, khóa phân tán, làm mới sớm theo xác suất, jitter TTL và bộ nhớ đệm âm.

  • Thu hẹp khoảng thời gian mất nhất quán bằng cách vô hiệu hóa theo sự kiện và dùng khóa phiên bản, đồng thời viết tài liệu chính sách cho từng loại dữ liệu.

  • Phục vụ dữ liệu có thứ tự như bảng xếp hạng bằng tập hợp có sắp xếp, đồng thời thiết kế cơ chế ghi kép, khôi phục và ngắt mạch.

  • Dùng số liệu đo đạc để làm cơ sở tách cache dùng chung thành cache chuyên dụng (xung đột chính sách loại bỏ, noisy neighbor).

  • Xác định cơ chế ngắt chỉ tắt những phần tốn kém và hợp đồng phản hồi.

Dành cho những người sau đây, chúng tôi đề xuất khóa học này.

  • Lập trình viên backend thương mại điện tử thường gặp sự cố cache/DB mỗi khi có đợt giảm giá hoặc sự kiện.

  • Dành cho những người đã thử Redis Cache Aside nhưng còn lúng túng với các bước tiếp theo (băng thông, stampede, vô hiệu hóa)

  • Trưởng nhóm phát triển cần báo cáo hiệu quả của các thay đổi về cache bằng số liệu.

Chương trình đào tạo (9 phần · 32 bài · khoảng 194 phút)

  • Phần 0. Demo mục tiêu cuối cùng — Xem trước kết quả hoàn thiện

  • Phần 1. Môi trường thực hành và đường cơ sở — Khởi chạy môi trường thực hành, API và dữ liệu của Loop Market, công cụ tạo tải và bảng điều khiển, đường cơ sở: DB sụp đổ khi không có bộ nhớ đệm

  • Phần 2. Cạm bẫy của bộ nhớ đệm từ xa — băng thông — Tích hợp bộ nhớ đệm từ xa bằng mô hình cache-aside, phản hồi lớn ngốn băng thông, đo phân bố kích thước khóa, phương pháp đo so sánh trước và sau trong cùng một khung thời gian, nén và phân mảnh không phải là giải pháp triệt để

  • Mục 3. Bộ nhớ đệm hai tầng: L1 cục bộ + L2 từ xa — Dùng bộ nhớ đệm cục bộ làm L1, xác định kích thước và TTL của L1, nhiều instance và cửa sổ nhất quán, so sánh trong cùng một khoảng thời gian trước và sau khi dùng L1, những cạm bẫy của L1.

  • Mục 4. Hot key và stampede — tìm hot key, tái hiện cache stampede, khóa và single-flight, làm mới sớm theo xác suất, jitter TTL và cache âm tính

  • Phần 5. Vô hiệu hóa và cửa sổ nhất quán — Vô hiệu hóa dựa trên sự kiện, khóa phiên bản, sử dụng cửa sổ nhất quán như một chính sách

  • Phần 6. DB và dữ liệu có thứ tự — Bộ nhớ đệm bộ đệm DB nằm ngoài tầm kiểm soát của ứng dụng, phục vụ bảng xếp hạng bằng tập hợp có thứ tự, ngắt mạch và dự phòng

  • Phần 7. Vận hành — Tách biệt, công tắc ngắt và giám sát — Quyết định tách sang cụm chuyên dụng, đo lường hàng xóm gây nhiễu, công tắc ngắt và hợp đồng phản hồi, bảng điều khiển giám sát bộ nhớ đệm.

  • Phần 8. Đồ án tổng kết — Đồ án tổng kết: bật tất cả và chứng minh bằng cùng một mức tải, danh sách kiểm tra tổng thể và tổng kết

Môi trường thực hành

Chỉ với Docker Compose, chúng ta khởi chạy API sản phẩm và sự kiện Loop Market (Node.js, hai máy) + máy chủ tương thích với Redis (dùng Valkey trong bài thực hành), gồm nút chính và nút sao chép + PostgreSQL + công cụ tạo tải k6 + Prometheus·Grafana. Giới hạn băng thông gửi của nút sao chép được mô phỏng bằng tc. Có thể bật/tắt L1, chống stampede, vô hiệu hóa và kill switch bằng cờ tính năng mà không cần build lại; 32 kịch bản script cho phép tái hiện nguyên vẹn mọi kết quả trong khóa học. Cung cấp tài liệu thực hành (ZIP).

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

  • Đã có kinh nghiệm xây dựng API bằng Spring hoặc Node.js.

  • Kiến thức cơ bản về Redis (GET/SET/TTL)

  • Cách sử dụng Docker và terminal cơ bản

Những nội dung không được đề cập trong khóa học này

  • Cài đặt Redis và làm quen với các lệnh cơ bản

  • Cơ chế sharding nội bộ của cluster

  • Thiết lập bảng điều khiển dịch vụ được quản lý trên đám mây

Thông tin hướng dẫn

Lời thuyết minh bài giảng được tạo bằng giọng nói tổng hợp (AI). Tất cả dữ liệu đều là dữ liệu mô phỏng phục vụ mục đích giáo dục, các con số có thể thay đổi tùy theo môi trường thực thi.

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

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

  • Lập trình viên backend thương mại điện tử thường gặp sự cố cache/DB mỗi dịp sale và sự kiện

  • Dành cho những ai đã thử Cache Aside nhưng còn bối rối về băng thông, cache stampede và vô hiệu hóa bộ nhớ đệm.

  • Trưởng nhóm phát triển phải báo cáo hiệu quả của việc thay đổi bộ nhớ đệm bằng các con số.

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

  • Có kinh nghiệm xây dựng API bằng Spring hoặc Node.js.

  • Redis cơ bản (GET/SET/TTL)

  • Cách sử dụng Docker và terminal cơ bản

Xin chào
Đây là dorian05202988

Xác minh sự nghiệp

Tôi là một chuyên gia dữ liệu với hơn 20 năm kinh nghiệm trong lĩnh vực cơ sở dữ liệu và CNTT. Trong vai trò DBA và quản lý nhóm Nền tảng Cơ sở dữ liệu, tôi phụ trách các nền tảng cơ sở dữ liệu, với chuyên môn về MySQL, PostgreSQL, Oracle, MongoDB, tinh chỉnh SQL, AWS, Terraform và Python. Dựa trên kinh nghiệm trong các lĩnh vực trò chơi, tài chính và dịch vụ CNTT, tôi trình bày về cơ sở dữ liệu và kiến trúc đám mây. Tôi đã xuất bản 『Học các mẫu SQL tinh chỉnh thực tế Oracle』 và 『Sổ tay ứng dụng dự án thực tế Oracle Pro*C』, đồng thời thuyết trình về serverless, lựa chọn cơ sở dữ liệu và chiến lược đa cơ sở dữ liệu tại AWS Summit 2018·2019 và sự kiện 데이터야 놀자 2020. Gần đây, tôi tập trung vào phân tích và khuyến nghị tinh chỉnh truy vấn chậm bằng Bedrock LLM, tự động hóa việc tính toán thông số DB, cũng như quy trình tra cứu thông qua máy chủ DB Meta MCP và bot Slack. Tôi giải thích về tự động hóa cơ sở dữ liệu dành cho nhà phát triển và việc ứng dụng AI vào công việc dành cho người không chuyên về phát triển thông qua các bài thực hành phù hợp với đối tượng và mục tiêu của từng khóa học. Thay vì áp dụng nguyên xi các đề xuất của AI, tôi truyền đạt các tiêu chí đánh giá như kiểm tra tính tương đương của kết quả, kế hoạch thực thi và điều kiện quan sát; nếu thiếu căn cứ thì tạm thời chưa áp dụng. Dữ liệu vận hành của công ty và thông tin xác thực không được đưa vào tài liệu giảng dạy.

Thêm

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

Tất cả

32 bài giảng ∙ (3giờ 13phú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 dorian05202988

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

52.800 ₫

41%

1.855.038 ₫