1. Vấn đề cần giải quyết

2. Kiến trúc tổng quan của hệ thống

2.1. Mô tả tổng quan về hệ thống hiện tại

Untitled

Hệ thống được chia thành các nodepool (nodepool là một nhóm các node có cùng cấu hình chung về CPU, Memory, thiết bị mạng và được dựng trên một phiên bản OS snapshot cố định, ta có thể tạo nhiều máy trong nodepool bằng cách dùng chung một snapshot và liên tục tạo ra các máy chủ mới bằng cùng một snapshot đó). Hiện tại hệ thống được chia thành các nodepool sau:

Hệ thống được chia thành hai kiểu thiết kế: CDC và non-CDC (CDC dịch là Change data capture)

Hệ thống CDC được thiết kế theo CQRS, bao gồm hai thành phần chính:

20.5. Write Ahead Log

Hệ thống non-CDC được thiết kế chỉ gồm các thành phần chính như database (Postgres hoặc MongoDB), một search engine chính (tại Alpaca là Elasticsearch cluster) và một thành phần caching chính (Redis non-persistent).

Hệ thống distributed locking: để quản lý locking giữa các thành phần micro-service và đảm bảo tính đồng đồng bộ, hệ thống được cấu hình dùng redis-persistent để làm distributed locking, về mô tả chi tiết có thể tham khảo qua tài liệu bên dưới

Distributed Locks with Redis