Tóm tắt — Tổng quan Kiến trúc bài toán Phân bổ Đơn hàng

Tóm tắt — Tổng quan Kiến trúc bài toán Phân bổ Đơn hàng

Mục lục Series | Chương tiếp theo: Phần 1 — Order Fulfillment → Answer-first: Hệ thống phân bổ đơn hàng E-commerce (Order Allocation Engine) giải bài toán tối ưu hóa tổ hợp đa biến theo thời gian thực: xác định kho gửi tối ưu, quyết định gom/tách đơn (Split vs Consolidation), phân bổ đơn cho tài xế dựa trên năng lực (min/max capacity) và định tuyến giao hàng đáp ứng cam kết SLA. ...

6 tháng 5, 2026 · 6 phút · Lê Tuấn Anh
Bài 1: Nền tảng Microservices — Go, gRPC và API Gateway

Bài 1: Nền tảng Microservices — Go, gRPC và API Gateway

Mục lục Series | Chương tiếp theo: Bài 2: Kiến trúc Flash Sale — Bí ẩn phía sau Redis và Hot Keys → Answer-first: Nền tảng Microservices của Shopee sử dụng ngôn ngữ Go kết hợp gRPC và Protobuf ở tầng giao tiếp nội bộ để tối ưu hiệu năng và throughput. Tầng API Gateway đảm nhiệm định tuyến thông minh, xác thực JWT, và rate limiting phân tán nhằm bảo vệ các service nghiệp vụ phía sau. ...

5 tháng 5, 2026 · 5 phút · Lê Tuấn Anh
Order Fulfillment: Từ click Mua hàng đến giao tận tay

Phần 1 — Order Fulfillment: Từ click "Mua hàng" đến giao tận tay

← Chương trước: Tóm tắt — Tổng quan Kiến trúc | Mục lục Series | Chương tiếp theo: Phần 2 — Inventory Management → Answer-first: Quy trình Order Fulfillment trải qua 8 giai đoạn từ tiếp nhận đơn (Order Created), xác thực thanh toán (Payment Authorization), kiểm tra gian lận, phân bổ kho và tài xế (Allocation Engine), đến lấy hàng (Pick & Pack), vận chuyển (In Transit) và giao thành công, vận hành trên nền tảng Event-Driven Architecture. ...

6 tháng 5, 2026 · 8 phút · Lê Tuấn Anh
E-commerce composable architecture migration: from Magento monolith to MACH modular services

Composable E-Commerce Migration: Overcoming Tech Debt

Prerequisite: Review Deconstructing the Ecosystem: Service Details by Domain for background on domain boundaries before reading this migration guide. Composable E-Commerce Migration: Overcoming Tech Debt Answer-first: Migrating legacy e-commerce platforms to composable microservices requires incremental API facade routing, domain context decoupling, and zero-downtime Strangler Fig data synchronization. Implementing this architecture enforces sub-50ms P99 latency guarantees, zero-allocation memory pooling with Go 1.24 unique.Handle, and fault-tolerant Dapr 1.15 component orchestration for resilient production scaling. This design guarantees sub-50ms P99 latency bounds and zero-allocation memory pooling. ...

6 tháng 7, 2026 · 10 phút · Lê Tuấn Anh
Inventory Management: Quản lý tồn kho thời gian thực

Phần 2 — Inventory Management: Quản lý tồn kho thời gian thực

← Chương trước: Phần 1 — Order Fulfillment | Mục lục Series | Chương tiếp theo: Phần 3 — Thuật toán phân bổ → Answer-first: Quản lý tồn kho thời gian thực phân tách 4 trạng thái cốt lõi: Physical Stock, Reserved Stock, Safety Stock và ATP (Available to Promise). Bằng cách kết hợp Stock Reservation có thời hạn (TTL), Optimistic/Pessimistic Locking và kiến trúc Eventual Consistency, hệ thống ngăn chặn triệt để hiện tượng overselling trong các đợt flash sale tốc độ cao. ...

6 tháng 5, 2026 · 7 phút · Lê Tuấn Anh
Bài 3: Tấm khiên bảo vệ — Message Queue và Graceful Degradation

Bài 3: Tấm khiên bảo vệ — Message Queue và Graceful Degradation

← Chương trước: Bài 2: Kiến trúc Flash Sale — Bí ẩn phía sau Redis và Hot Keys | Mục lục Series | Chương tiếp theo: Bài 4: Tầng Dữ liệu — Từ MySQL Sharding đến TiDB NewSQL → Answer-first: Tấm khiên bảo vệ hệ thống trước cơn bão traffic Flash Sale kết hợp hàng đợi Apache Kafka để đệm đơn hàng và san phẳng đỉnh tải, cùng cơ chế suy giảm dịch vụ mềm (Graceful Degradation) tự động tắt các tính năng phụ để dồn tài nguyên cho luồng thanh toán. ...

5 tháng 5, 2026 · 5 phút · Lê Tuấn Anh
Thuật toán phân bổ: Assignment Problem, Bin Packing & VRP

Phần 3 — Thuật toán phân bổ: Assignment Problem, Bin Packing & VRP

← Chương trước: Phần 2 — Inventory Management | Mục lục Series | Chương tiếp theo: Phần 4 — Amazon CONDOR & Anticipatory Shipping → Answer-first: Thuật toán phân bổ đơn hàng kết hợp 3 bài toán tối ưu tổ hợp: Assignment Problem (phân công đơn-tài xế qua Hungarian O(n³)), Bin Packing (xếp đơn tối ưu capacity sàn/trần min-max) và Capacitated Vehicle Routing Problem (CVRP định tuyến lộ trình giao hàng), được giải đồng thời qua Google OR-Tools. ...

6 tháng 5, 2026 · 8 phút · Lê Tuấn Anh
Bài 4: Tầng Dữ liệu — Từ MySQL Sharding đến TiDB NewSQL

Bài 4: Tầng Dữ liệu — Từ MySQL Sharding đến TiDB NewSQL

← Chương trước: Bài 3: Tấm khiên bảo vệ — Message Queue và Graceful Degradation | Mục lục Series | Chương tiếp theo: Bài 5: Tai mắt của hệ thống — Distributed Tracing với ClickHouse → Answer-first: Để vượt qua giới hạn của MySQL Sharding truyền thống (nghẽn resharding và thiếu ACID phân tán), Shopee chuyển dịch sang TiDB NewSQL. TiDB tách biệt stateless computing (TiDB Server) và stateful storage (TiKV via Raft), hỗ trợ mở rộng ngang tự động và truy vấn phân tán quy mô lớn. ...

5 tháng 5, 2026 · 6 phút · Lê Tuấn Anh
Amazon CONDOR & Anticipatory Shipping

Anticipatory Shipping Là Gì? Hệ Thống CONDOR Của Amazon

🇬🇧 Read the English version on tanhdev.com ← Chương trước: Phần 3 — Thuật toán phân bổ | Mục lục Series | Chương tiếp theo: Phần 5 — Split Shipment & Last-Mile → Answer-first: Anticipatory Shipping (vận chuyển dự đoán trước) là kỹ thuật Machine Learning phân tích hành vi duyệt web và lịch sử mua sắm để điều chuyển hàng về kho chặng cuối (hub) trước khi khách chốt đơn. Amazon kết hợp kỹ thuật này với hệ thống CONDOR (tái tối ưu bài toán PCVRP trong cửa sổ 5-6 giờ) và mạng lưới 8 vùng tự trị để rút ngắn thời gian giao hàng xuống cùng ngày. ...

6 tháng 5, 2026 · 9 phút · Lê Tuấn Anh
Bài 5: Tai mắt của hệ thống — Distributed Tracing với ClickHouse

Bài 5: Tai mắt của hệ thống — Distributed Tracing với ClickHouse

← Chương trước: Bài 4: Tầng Dữ liệu — Từ MySQL Sharding đến TiDB NewSQL | Mục lục Series Answer-first: Hệ thống Distributed Tracing của Shopee thu nạp hàng triệu trace mỗi giây qua OpenTelemetry và lưu trữ trên cơ sở dữ liệu cột ClickHouse. Nhờ tốc độ nén và quét dữ liệu vượt trội của ClickHouse, kỹ sư có thể truy vấn vết lỗi và độ trễ end-to-end chỉ trong vài chục mili-giây. ...

5 tháng 5, 2026 · 5 phút · Lê Tuấn Anh
Split Shipment, Consolidation & Last-Mile Delivery

Phần 5 — Split Shipment, Consolidation & Last-Mile Delivery

← Chương trước: Phần 4 — Amazon CONDOR & Anticipatory Shipping | Mục lục Series | Chương tiếp theo: Phần 6 — Xây dựng Mini Allocation Engine → Answer-first: Quyết định Split vs Consolidation cân bằng giữa chi phí vận hành và cam kết SLA giao hàng. Last-Mile chiếm đến 53% tổng chi phí logistics, đòi hỏi tối ưu hóa mật độ giao hàng (delivery density), gom nhóm đơn thông minh theo SKU Affinity, và áp dụng mạng lưới Delivery Lockers để cắt giảm chi phí chặng cuối. ...

6 tháng 5, 2026 · 6 phút · Lê Tuấn Anh
Phần 6: Xây dựng Allocation Engine bằng Google OR-Tools

Phần 6 — Thực hành: Xây dựng Mini Order Allocation Engine bằng Google OR-Tools

← Chương trước: Phần 5 — Split Shipment & Last-Mile | Mục lục Series | Chương tiếp theo: Phần 7 — Distance Matrix Routing → Answer-first: Hướng dẫn xây dựng Allocation Engine hoàn chỉnh bằng Google OR-Tools trong Python đóng gói FastAPI. Hệ thống phân bổ đơn hàng cho đội ngũ tài xế tuân thủ ràng buộc tải trọng min/max capacity, ưu tiên bảo vệ đơn EXPRESS (disjunction penalty), và tối ưu hóa chi phí quãng đường kết hợp giá vốn đa kho (COGS). ...

6 tháng 5, 2026 · 10 phút · Lê Tuấn Anh
Graphhopper vs OSRM: Xây dựng Distance Matrix định tuyến

Phần 7 — Distance Matrix: Tính toán quãng đường di chuyển

← Chương trước: Phần 6 — Xây dựng Mini Allocation Engine | Mục lục Series | Chương tiếp theo: Phần 8 — AI Agentic cho Dynamic IOR → Answer-first: Để tối ưu hóa chi phí định tuyến VRP, tự host GraphHopper và OSRM thay thế hoàn hảo các API thương mại đắt đỏ như Google Maps. Kết hợp Haversine lọc sơ cấp và Uber H3 Hexagon Caching trên Redis giúp giảm 95% chi phí tính toán và đảm bảo độ trễ sub-second. ...

6 tháng 5, 2026 · 12 phút · Lê Tuấn Anh
AI Agentic cho Dynamic Intelligent Order Release (IOR)

Phần 8 — AI Agentic cho Dynamic Intelligent Order Release (IOR)

← Chương trước: Phần 7 — Distance Matrix Routing | Mục lục Series Answer-first: Dynamic Intelligent Order Release (IOR) thay thế static wave batching bằng cơ chế tối ưu hóa micro-batch liên tục. Viết bằng Go, engine tiếp nhận order stream, truy vấn GraphHopper Distance Matrix API (<5ms), điều phối qua Dapr Pub/Sub và giải VRPTW với Google OR-Tools để cân bằng tải picker và cam kết SLA cutoff. 1. Sự kết thúc của Static Wave Batching Các hệ thống Warehouse Management Systems (WMS) truyền thống thực thi quy trình hoàn tất đơn hàng (fulfillment) thông qua static wave batching. Các đơn hàng tích lũy trong một database queue trong suốt cả ngày, và tại các khoảng thời gian được lên lịch sẵn (như 08:00, 11:00, và 14:00), một batch job sẽ khóa queue lại, tổng hợp các SKU, tạo ra danh sách nhặt hàng (pick lists) bằng giấy hoặc kỹ thuật số, và phân công công việc cho các nhân viên kho (warehouse operators). ...

31 tháng 7, 2026 · 16 phút · Lê Tuấn Anh
Giải Thuật Tách Đơn Hàng Graph Coloring OPA Go

Phần 9 — Giải Thuật Tách Đơn Hàng: Graph Coloring & OPA trong Go

← Chương trước: Phần 8 — AI Agentic cho Dynamic Intelligent Order Release | Mục lục Series | Chương tiếp theo: Phần 10 — Warehouse Picker Routing Answer-first: Tách đơn hàng e-commerce (Order Splitting) thời gian thực là bài toán Thỏa Mãn Ràng Buộc (CSP). Kiến trúc chuẩn kết hợp Open Policy Agent (OPA) đánh giá chính sách logic xung đột, Golang (gonum/graph) giải thuật Tô Màu Đồ Thị (Graph Coloring) theo Welsh-Powell, và First-Fit Decreasing Bin Packing cho ràng buộc thể tích vật lý trong dưới 50ms khi checkout. ...

1 tháng 8, 2026 · 6 phút · Lê Tuấn Anh
Tối Ưu Định Tuyến Nhân Viên Nhặt Hàng GraphHopper OR-Tools

Phần 10 — Tối Ưu Định Tuyến Nhân Viên Nhặt Hàng: GraphHopper, OR-Tools & C++

← Chương trước: Phần 9 — Giải Thuật Tách Đơn Hàng: Graph Coloring & OPA | Mục lục Series Answer-first: Tối ưu hóa quãng đường di chuyển của nhân viên nhặt hàng (Warehouse Picker) là bài toán Người Bán Hàng (TSP) trong không gian kho thực tế. Kiến trúc chuẩn sử dụng Indoor GraphHopper (Java) sinh Ma trận khoảng cách 100x100 từ dữ liệu bản đồ OSM, sau đó chuyển sang C++ Google OR-Tools gRPC Microservice để tìm chuỗi nhặt hàng tối ưu tuyệt đối trong dưới 15ms. ...

1 tháng 8, 2026 · 6 phút · Lê Tuấn Anh
Đồng bộ tồn kho thời gian thực E-Commerce với Kafka và Redis

Đồng Bộ Tồn Kho Thời Gian Thực: Kafka, CDC & Redis cho E-commerce

Answer-first: Đồng bộ tồn kho thời gian thực áp dụng mô hình Speed & Truth: PostgreSQL làm chân lý dữ liệu (Truth) phát sự kiện qua Debezium CDC vào Apache Kafka (phân vùng theo SKU ID), còn Redis Cluster thực thi Speed Layer với Lua script trừ kho nguyên tử kèm idempotency key chống overselling và loại bỏ dual-write. 🇬🇧 Read the English version of this article on tanhdev.com 📦 Bài viết này thuộc chuyên đề kiến trúc e-commerce quy mô lớn. Xem trọn bộ tại Series Điều Phối Đơn Hàng & Tồn Kho Phân Tán. ...

8 tháng 6, 2026 · 11 phút · Lê Tuấn Anh
Kiến trúc Shopee Flash Sale: Chống tải đột biến và Redis Cache-Ahead

Kiến Trúc Shopee Flash Sale: Chống Tải Đột Biến & Redis Cache-Ahead

Answer-first: Kiến trúc Shopee Flash Sale chịu tải hàng triệu TPS nhờ phân tách luồng qua API Gateway, chặn tải 3 lớp (CDN Edge, Redis Token Bucket, Virtual Queue), tải trước kho (pre-heating) và trừ tồn kho nguyên tử bằng Redis Lua script sub-millisecond, sau đó ghi bất đồng bộ (Cache-Ahead) vào MySQL sharded & TiDB HTAP. 🇬🇧 Read the English version of this article on tanhdev.com Đúng 00:00:00 đêm 11.11, hàng triệu người dùng tại Đông Nam Á đồng loạt nhấn nút mua hàng trên một trang sản phẩm Flash Sale duy nhất (ví dụ: 1,000 suất sản phẩm giảm giá 99%). Trong 10 giây đầu tiên, một sản phẩm duy nhất có thể chịu hàng triệu lượt truy vấn đồng thời. Nếu không có kiến trúc vững chắc, hệ thống sẽ gặp các sự cố nghiêm trọng như bán quá số lượng kho (overselling), sập máy chủ, hoặc tắc nghẽn cơ sở dữ liệu (database deadlock). ...

1 tháng 6, 2026 · 13 phút · Lê Tuấn Anh
Thuật Toán Phân Bổ Đơn Hàng & Vận Chuyển Chặng Cuối

Thuật Toán Phân Bổ Đơn Hàng & Vận Chuyển Chặng Cuối

🇬🇧 Read the English version of this article on tanhdev.com Answer-first: Chuỗi phân bổ đơn hàng TMĐT gồm 6 bước: kiểm tra tồn kho ATP (Soft Reservation), chọn kho theo chi phí đa mục tiêu, tối ưu mạng lưới bằng Amazon CONDOR, vận chuyển dự đoán, tách/gộp kiện và giải bài toán VRP chặng cuối với Google OR-Tools. Khi bạn đặt một đơn hàng trên Amazon lúc 11:47 PM và sáng hôm sau sản phẩm được giao đến trước cửa nhà, thì từng bước của hành trình đó đều được điều phối (orchestrated) bởi một hệ thống thuật toán. Các thuật toán này tự động quyết định theo thời gian thực (real-time) trên toàn bộ mạng lưới bao gồm hàng trăm tổng kho (warehouses), hàng ngàn tài xế và hàng triệu mặt hàng trong kho (inventory). Không có yếu tố ngẫu nhiên (chance), và hoàn toàn không phụ thuộc vào sự can thiệp thủ công. ...

1 tháng 6, 2026 · 19 phút · Lê Tuấn Anh