Quay lại danh sách
Tin tức công nghệ

Xây dựng hạ tầng 'Serverless SQLite' phân tán toàn cầu bằng LiteFS trên cụm VPS giá rẻ

26 tháng 5, 2026

Giới thiệu xu hướng và thách thức của dữ liệu biên (Edge Data)

Trong kỷ nguyên của ứng dụng đám mây và kiến trúc Edge Computing, tốc độ phản hồi là yếu tố sống còn quyết định trải nghiệm người dùng. Xu hướng đưa mã nguồn ứng dụng ra gần người dùng hơn thông qua các giải pháp như Cloudflare Workers hay Vercel Edge Functions đã trở nên phổ biến. Tuy nhiên, một bài toán nan giải luôn tồn tại: Dữ liệu nằm ở đâu?

Nếu ứng dụng chạy ở Edge (ví dụ: Tokyo) nhưng cơ sở dữ liệu (CSDL) truyền thống nằm ở trung tâm (ví dụ: Virginia, Mỹ), độ trễ mạng (network latency) sẽ triệt tiêu hoàn toàn lợi thế của Edge Computing. Để giải quyết vấn đề này, các giải pháp "Serverless Database" toàn cầu ra đời nhưng thường đi kèm chi phí đắt đỏ và nguy cơ bị khóa chặt vào nhà cung cấp (vendor lock-in). Bài viết này sẽ hướng dẫn bạn tự xây dựng một hạ tầng 'Serverless SQLite' phân tán trên toàn cầu, tận dụng các VPS giá rẻ và công cụ nguồn mở mãnh liệt: LiteFS.

Tại sao lại là SQLite và LiteFS?

Sức mạnh tiềm ẩn của SQLite

Từ lâu, SQLite đã nổi tiếng là một CSDL nhanh, đáng tin cậy và không cần cấu hình phức tạp (zero-configuration). Với sự ra đời của các ổ cứng NVMe tốc độ cao, việc đọc ghi trực tiếp trên tệp tin cục bộ của SQLite cho hiệu năng vượt trội hơn hẳn so với việc gọi qua mạng của PostgreSQL hay MySQL trong các tác vụ thông thường. Nhược điểm duy nhất của SQLite trước đây là nó chỉ nằm trên một máy chủ duy nhất, không có khả năng mở rộng quy mô (scaling) hoặc sao lưu dự phòng (failover) tự động.

LiteFS là gì?

LiteFS, một dự án nguồn mở được phát triển bởi Fly.io, là một hệ thống tệp FUSE (Filesystem in Userspace) được thiết kế riêng cho SQLite. Thay vì can thiệp vào tầng ứng dụng, LiteFS hoạt động ở tầng hệ điều hành, tự động bắt giữ các giao dịch (transactions) của SQLite và nhân bản (replicate) chúng sang các nút (nodes) khác trong cụm phân tán theo thời gian thực.

LiteFS mang lại khả năng phân tán toàn cầu cho SQLite mà không yêu cầu bạn phải thay đổi một dòng code nào trong ứng dụng hiện tại. Bạn chỉ cần tương tác với SQLite như bình thường, phần còn lại hãy để LiteFS lo.

Kiến trúc hệ thống 'Serverless SQLite' phân tán

Để xây dựng hệ thống này với chi phí tối ưu, chúng ta sẽ sử dụng một cụm gồm ít nhất 3 VPS giá rẻ (ví dụ từ Hetzner, DigitalOcean, hoặc Linode) đặt tại các khu vực địa lý khác nhau (ví dụ: Singapore, Đức, và Mỹ).

Kiến trúc hoạt động theo mô hình Single-Primary/Multi-Replica với cơ chế đồng thuận (Consensus) dựa trên thuật toán Raft (thông qua Consul hoặc LiteFS Cloud):

  • Primary Node (Nút chính): Là nút duy nhất có quyền Đọc và Ghi (Read-Write). Mọi tác vụ ghi dữ liệu từ ứng dụng sẽ được thực hiện tại đây.
  • Replica Nodes (Nút bản sao): Các nút đặt ở các châu lục khác nhau, chỉ có quyền Đọc (Read-Only). LiteFS sẽ truyền phát (stream) các thay đổi từ nút Primary sang các nút Replica này với độ trễ tính bằng mili-giây.
  • Cơ chế định tuyến (Routing): Khi người dùng ở Đức truy cập, ứng dụng tại Đức sẽ đọc dữ liệu ngay tại chỗ (độ trễ gần như bằng 0). Nếu người dùng thực hiện thao tác ghi, ứng dụng sẽ chuyển tiếp (forward) yêu cầu đó sang nút Primary (ví dụ ở Singapore).

Hướng dẫn triển khai chi tiết trên cụm VPS

Bước 1: Chuẩn bị môi trường và cài đặt Consul

Để các nút LiteFS nhận biết được nhau và bầu chọn ra nút Primary tự động khi có sự cố, chúng ta cần một dịch vụ quản lý cấu hình phân tán. Consul của HashiCorp là lựa chọn hoàn hảo. Bạn cần cài đặt Consul trên cả 3 VPS và thiết lập chúng thành một cụm (cluster).

Cấu hình cơ bản của Consul (`/etc/consul.d/consul.hcl`) trên mỗi nút cần định nghĩa rõ danh sách các nút tham gia:

retry_join = ["IP_VPS_1", "IP_VPS_2", "IP_VPS_3"]

Bước 2: Cài đặt và cấu hình LiteFS

Tải xuống và cài đặt LiteFS binary trên tất cả các VPS. Sau đó, chúng ta cấu hình tệp `litefs.yml`. Đây là nơi phép màu thực sự diễn ra. Điểm cốt lõi là cấu hình tầng lưu trữ và liên kết với Consul:

fuse:
  dir: "/var/lib/litefs/mount"

data:
  dir: "/var/lib/litefs/data"

lease:
  type: "consul"
  consul:
    url: "http://localhost:8500"
    key: "litefs/primary"

Trong cấu hình trên, thư mục `/var/lib/litefs/mount` chính là nơi ứng dụng của bạn sẽ nhìn thấy tệp cơ sở dữ liệu SQLite (ví dụ: `db.sqlite`). Khi ứng dụng ghi vào đây, LiteFS sẽ can thiệp và thực hiện nhân bản.

Bước 3: Kết nối Ứng dụng và xử lý chuyển tiếp Ghi (Write Forwarding)

Một trong những thách thức lớn nhất của kiến trúc này là đảm bảo các yêu cầu ghi luôn đến đúng nút Primary. LiteFS đơn giản hóa việc này bằng cách cung cấp một tệp tin đặc biệt tên là `.primary` trong thư mục mount. Tệp tin này luôn chứa địa chỉ IP của nút Primary hiện tại.

Quy trình xử lý trong mã nguồn ứng dụng (ví dụ: Node.js hoặc Go) sẽ như sau:

  1. Nếu là yêu cầu GET (Đọc): Kết nối trực tiếp vào tệp SQLite cục bộ và trả về kết quả ngay lập tức.
  2. Nếu là yêu cầu POST/PUT/DELETE (Ghi): Kiểm tra xem nút hiện tại có phải là Primary không (bằng cách so sánh IP của mình với nội dung tệp `.primary`).
  3. Nếu không phải Primary, ứng dụng sẽ thực hiện một lệnh gọi HTTP proxy (gọi là Write Forwarding) để chuyển toàn bộ request đó sang nút Primary xử lý.

Đánh giá hiệu năng và Tối ưu chi phí

So với việc sử dụng các dịch vụ Cloud managed database truyền thống, giải pháp tự vận hành LiteFS trên VPS mang lại những lợi ích vượt trội về mặt tài chính lẫn kỹ thuật:

Tiêu chí Managed Serverless DB (Ví dụ) Cụm VPS + LiteFS tự dựng
Chi phí hàng tháng $100 - $300+ (Tùy thuộc bandwidth/read/write) ~$12 - $15 (3 VPS giá rẻ $4-$5/tháng)
Độ trễ khi Đọc tại Biên Thấp (nếu có bản sao) hoặc Cao (nếu gọi về vùng chính) Cực kỳ thấp (< 2ms) do đọc từ ổ đĩa cục bộ
Rủi ro Vendor Lock-in Cao (Sử dụng API độc quyền) Không có (Hoàn toàn là SQLite tiêu chuẩn)

Kết luận

Việc kết hợp giữa sự tinh gọn của SQLite và khả năng điều phối phân tán của LiteFS đã mở ra một hướng đi mới cho các kỹ sư hệ thống và lập trình viên độc lập (Indie Hackers). Giờ đây, việc sở hữu một hạ tầng dữ liệu phân tán toàn cầu, có khả năng chịu lỗi cao và tốc độ phản hồi tính bằng mili-giây không còn là đặc quyền của các tập đoàn lớn với ngân sách khổng lồ. Chỉ với vài chiếc VPS giá rẻ và một tư duy kiến trúc đúng đắn, bạn hoàn toàn có thể làm chủ công nghệ và tối ưu hóa chi phí vận hành cho doanh nghiệp của mình.

Xây dựng hạ tầng 'Serverless SQLite' phân tán toàn cầu bằng LiteFS trên cụm VPS giá rẻ | DPTCloud