忍者ブログ

jvmalkefj10

Bài 6: Hạ Tầng Cơ Sở Dữ Liệu Chịu Lỗi & Cơ Chế Phân Mảnh (Sharding/Replication) Trong Z18

Lời Mở Đầu

Tiếp nối Bài 5 về hạ tầng giám sát thời gian thực và quản trị sự cố, Bài 6 sẽ phân tích lớp lưu trữ dữ liệu cốt lõi của nền tảng Z18: Hạ Tầng Cơ Sở Dữ Liệu Chịu Lỗi (Fault-Tolerant Database Infrastructure) và Chiến Lược Phân Mảnh (Sharding & Replication Strategy).

Để phục vụ hàng triệu người dùng hoạt động đồng thời với lưu lượng đọc/ghi cực lớn mà vẫn duy trì tính toàn vẹn tài chính, https://xhz18.com/ xây dựng mô hình lưu trữ đa tầng (Multi-tier Database Architecture). Mô hình này kết hợp giữa cơ sở dữ liệu quan hệ phân tán CockroachDB, CSDL NoSQL hiệu năng cao ScyllaDB/Cassandra và cụm Redis Enterprise In-Memory.

Phần 1: Ma Trận Lưu Trữ Đa Tầng Của Z18 (Polyglot Persistence)

Z18 không áp dụng một CSDL duy nhất cho toàn bộ ứng dụng mà phân chia theo đặc tính kỹ thuật của từng miền nghiệp vụ (Domain-Driven Data Storage):

                                  [ GATEWAY / SERVICES ]
                                             │
         ┌───────────────────────────────────┼───────────────────────────────────┐
         ▼                                   ▼                                   ▼
[ CRITICAL TRANSACTIONS ]           [ HIGH-THROUGHPUT LOGS ]            [ IN-MEMORY STATE ]
      (CockroachDB)                       (ScyllaDB)                     (Redis Enterprise)
         │                                   │                                   │
  • Wallet & Ledger                   • Bet History & Audits              • Live Bet State
  • User Profiles                     • Device Fingerprints               • Rate Limiting
  • Strict ACID (Serializable)        • Massive Write (W:R = 9:1)         • Session Tokens
CSDL Loại CSDL Miền Nghiệp Vụ Sử Dụng Tiêu Chí Kỹ Thuật
CockroachDB Distributed SQL (NewSQL) Ví tiền, Sổ cái tài chính, Thông tin người dùng. Chuẩn ACID Serializable, Multi-Region Replication, Zero-Downtime Scaling.
ScyllaDB Distributed NoSQL (Cassandra-compatible) Lịch sử cược, Log nhật ký giao dịch, Dấu vết định danh thiết bị. Ghi tốc độ cao (High Write Latency $< 2\text{ms}$), cào dữ liệu append-only, chống nghẽn I/O.
Redis Enterprise Distributed In-Memory Key-Value Phiên cược đang diễn ra, Cụm Rate Limiter, Cache số dư L1. Sub-millisecond response, Active-Active Cross-Region Replication.

Phần 2: Kiến Trúc CockroachDB & Cơ Chế Phân Mảnh Tự Động (Auto-Sharding)

CockroachDB đóng vai trò là "trái tim" lưu trữ các giao dịch tài chính của Z18 nhờ khả năng mở rộng ngang (Horizontal Scaling) mà không cần can thiệp thủ công vào mã nguồn.

1. Phân Mảnh Dữ Liệu Dựa Trên Range-Based Sharding

Dữ liệu bảng user_wallets và ledger_entries được CockroachDB tự động chia nhỏ thành các đoạn dữ liệu liên tục gọi là Ranges (kích thước mặc định $64\text{MB}$):

   [ User Ledger Data ]
            │
            ├── Range 1: [User_00000000 ──► User_00100000] ──► Node A (Leader), Node B, Node C
            ├── Range 2: [User_00100000 ──► User_00200000] ──► Node B (Leader), Node C, Node D
            └── Range 3: [User_00200000 ──► User_00300000] ──► Node C (Leader), Node D, Node A
  • Cơ chế Đồng thuận Raft Consensus: Mỗi Range được sao chép thành $3$ hoặc $5$ Replicas trên các Availability Zones (AZ) khác nhau. Mọi thao tác ghi (INSERT/UPDATE) bắt buộc phải đạt được sự đồng thuận của đa số (Quorum) qua giao thức Raft trước khi Commit.

  • Tự Động Cân Bằng Tải (Auto-Rebalancing): Khi một Node vượt ngưỡng lưu trữ hoặc có Node mới được bổ sung, cụm CSDL tự động di chuyển các Range giữa các Node mà không làm gián đoạn ứng dụng.

2. Chiến Lược Partitioning Theo Vùng Địa Lý (Geo-Partitioning)

Đối với các hệ thống phân tán đa khu vực (Multi-Region), Z18 áp dụng Geo-Partitioning ở cấp độ hàng (Row-level) dựa trên quốc gia/khu vực của người dùng:

SQL
  • Lợi ích: Đảm bảo dữ liệu người dùng tại châu Á sẽ nằm trên các Node máy chủ gần nhất, giúp giảm latency đọc/ghi xuống mức cực thấp ($< 5\text{ms}$) và đáp ứng quy định tuân thủ lưu trữ dữ liệu tại chỗ.

Phần 3: ScyllaDB & Chiến Lược Ghi Tải Cực Cao (High-Throughput Ingestion)

Trong các giờ cao điểm, Core Engine phát ra hàng trăm nghìn sự kiện cược/giây. Việc ghi toàn bộ lịch sử này vào RDBMS truyền thống sẽ gây nghẽn I/O nghiêm trọng. Z18 giải quyết bằng cụm ScyllaDB.

1. Mô Hình Shared-Nothing & Cấu Trúc LSM-Tree

  • Cơ Chế Shared-Nothing (Seastar Engine): ScyllaDB phân bổ mỗi Thread xử lý gắn chặt với từng CPU Core (CPU Affinity). Không có hiện tượng tranh chấp Lock giữa các Cores, cho phép tận dụng $100\%$ hiệu năng phần cứng.

PR

コメント

プロフィール

HN:
No Name Ninja
性別:
非公開

カテゴリー

P R