Các trường hợp sử dụng
Tìm pattern theo loại hệ thống bạn đang xây.
Web API & Microservice
Đang xây service REST/gRPC? Các pattern này giúp nó tin cậy dưới tải.
| Kịch bản | Pattern | Ví dụ thực tế |
|---|---|---|
| Bảo vệ khi downstream gặp sự cố | Circuit Breaker + Retry with Backoff | Netflix Hystrix bọc mọi cuộc gọi HTTP client |
| Rate limit API | Rate Limiter | Stripe cho phép burst 25, refill ở 25/giây |
| Middleware request (auth, log, tracing) | Middleware Chain | Interceptor gRPC, mô hình hành tây Koa.js |
| Khám phá service | Registry | Đăng ký service Consul, etcd |
| Phân tán tải qua các node | Consistent Hashing | HAProxy, phân tán key groupcache |
| Tránh quá tải | Backpressure + Batch Processing | Pipe stream Node.js, consumer group Kafka |
Database & lưu trữ
Các pattern đằng sau PostgreSQL, Redis, LevelDB và mọi storage engine nghiêm túc.
| Kịch bản | Pattern | Ví dụ thực tế |
|---|---|---|
| Khôi phục sau crash | WAL + Checkpointing | PostgreSQL: WAL + checkpoint định kỳ |
| Tải nặng ghi | LSM Tree + Bloom Filter | LevelDB/RocksDB: memtable → SSTable + bloom bỏ qua |
| Truy vấn khoảng trên đĩa | B+ Tree | Chỉ mục btree PostgreSQL, SQLite |
| Đọc/ghi đồng thời | MVCC | Versioning tuple PostgreSQL, revision etcd |
| Xác minh toàn vẹn dữ liệu | Merkle Tree | Checksum block ZFS, kho object Git |
| Gộp key đã sắp xếp | Merge Iterator + Min Heap | Compaction LevelDB |
| Xoá không xoá ngay | Tombstone | Tombstone Cassandra, marker xoá LevelDB |
| Sorted set trong bộ nhớ | Skip List | Sorted set ZADD/ZRANGE Redis |
| Cache trong bộ nhớ | LRU Cache | LRU eviction Redis, Go groupcache |
| Sắp xếp sự kiện không có đồng hồ | Logical Clock | Raft log etcd, version vector DynamoDB |
Frontend & framework UI
React, Vue và browser engine dùng các pattern này mỗi frame.
| Kịch bản | Pattern | Ví dụ thực tế |
|---|---|---|
| Diff virtual DOM | Diff / Patch + Bitmask | Reconciler React: diff cây, áp patch tối thiểu |
| Render phản hồi nhanh | Cooperative Scheduling | React Scheduler: yield mỗi 5ms để giữ dưới 16ms |
| Update state an toàn theo frame | Double Buffering | React Fiber: hoán đổi workInProgress ↔ current tree |
| Tránh re-render không cần | Dirty Flag | shouldComponentUpdate React, layout Chromium |
| Quản lý state | Observer + State Machine | subscribe Redux, trạng thái hữu hạn XState |
| Lập lịch task theo ưu tiên | Min Heap | Queue ưu tiên React Scheduler |
Hệ phân tán
Pattern cho hệ thống trải qua nhiều máy.
| Kịch bản | Pattern | Ví dụ thực tế |
|---|---|---|
| Log đồng thuận | WAL + Logical Clock | Raft etcd: log append-only với term/index |
| Định tuyến chịu phân vùng | Consistent Hashing | Amazon DynamoDB, vòng Cassandra |
| State replicated | State Machine + WAL | Raft: replicated state machine qua log |
| Replication không xung đột | Logical Clock + Tombstone | CRDT, last-write-wins kiểu Dynamo |
| Đồng bộ dữ liệu | Merkle Tree | Anti-entropy repair Cassandra |
| Kiến trúc hướng thông điệp | Actor Model + Backpressure | Cluster Akka, Erlang/OTP |
| Pipeline build/deploy | Dependency Graph + Batch Processing | Đồ thị build Cargo, workspace pnpm |
Runtime & quản lý bộ nhớ
Cách Go, CPython, V8 và game engine quản lý bộ nhớ và thực thi.
| Kịch bản | Pattern | Ví dụ thực tế |
|---|---|---|
| Giảm áp lực GC | Object Pool + Free List | Go sync.Pool, allocator SLUB Linux |
| Cấp phát theo pha | Arena Allocator | Rust bumpalo, Go arena (thử nghiệm) |
| Dọn dẹp xác định | Reference Counting | refcount CPython, Rust Rc/Arc |
| Khử trùng lặp chuỗi | Interning + Flyweight | Symbol interning của Rust compiler, cache số nguyên nhỏ Python |
| Clone hiệu quả | Copy-on-Write | Linux fork(), Rust Cow<T> |
| Phân tán việc qua các core | Work Stealing | Scheduler P/M/G Go runtime, Tokio |
| Ghép kênh I/O | Event Loop + Ring Buffer | libuv (Node.js), Redis single-thread |
| Counter thread-safe | Semaphore | Semaphore kernel Linux, Go x/sync |
Compiler & công cụ ngôn ngữ
Pattern dùng trong LLVM, V8, rustc và compiler Vue/React.
| Kịch bản | Pattern | Ví dụ thực tế |
|---|---|---|
| Duyệt AST | Visitor | LLVM InstVisitor, biến đổi compiler Vue |
| Dispatch động | Vtable | Slot tp_* CPython, Rust dyn Trait |
| Bảng symbol | Interning + Trie | Symbol interning rustc |
| Biến đổi IR | Iterator + Diff / Patch | Adapter Iterator Rust, edit tree-sitter |
| Biểu diễn kiểu | Tagged Union | Con trỏ có tag V8, TensorImpl PyTorch |
| Hệ thống plugin | Registry + Middleware Chain | Plugin Babel, loader webpack |
Mạng & giao thức
| Kịch bản | Pattern | Ví dụ thực tế |
|---|---|---|
| Theo dõi trạng thái kết nối | State Machine | State machine TCP Linux (SYN_SENT → ESTABLISHED → ...) |
| Định tuyến IP | Trie | LC-trie cho FIB IPv4 Linux |
| Đệm gói tin | Ring Buffer | sk_buff Linux, ring DPDK |
| Kiểm soát luồng | Backpressure + Rate Limiter | Flow control TCP, Nginx limit_req |
| Phân giải DNS | Trie + LRU Cache | Tra cứu tên miền + cache response |