Access Hub Agent
Đồng bộ từ mã nguồn lúc 10:57, 03/10/2026
Skip to content
ADR 0002Chấp nhận

ADR 0002. Bộ đệm WAL trên đĩa tự viết, giới hạn dung lượng ​

Tự viết một WAL nhỏ: các đoạn (segment) 1 MiB, mỗi bản ghi gồm độ dài, CRC32 và lô protobuf đã nén. Thêm cuối, đọc đầu, xóa đoạn khi mọi bản ghi đã được xác nhận. Giới hạn cứng buffer.max_bytes (mặc định 50 MB) và buffer.max_age (24 giờ). Khi đầy, bỏ đoạn cũ nhất và đếm vào agent_dropped_samples_total. Khởi động lại quét đoạn, bỏ bản ghi hỏng CRC, cắt đuôi dở.

Ngày quyết định
30/09/2026
Chấp nhận
30/09/2026
Phạm vi
Agent
Người chấp nhận
Chưa ghi
  1. Đề xuất30/09/2026
  2. Chấp nhận30/09/2026
  • Trạng thái: Đã chấp nhận
  • Ngày: 2026-09-30

Bối cảnh ​

Mạng giữa máy chủ và collector có thể gián đoạn. Cần giữ số liệu chưa gửi qua mất mạng và khởi động lại, nhưng không được làm đầy đĩa máy sản xuất, và không thêm phụ thuộc nặng.

Quyết định ​

Tự viết một WAL nhỏ: các đoạn (segment) 1 MiB, mỗi bản ghi gồm độ dài, CRC32 và lô protobuf đã nén. Thêm cuối, đọc đầu, xóa đoạn khi mọi bản ghi đã được xác nhận. Giới hạn cứng buffer.max_bytes (mặc định 50 MB) và buffer.max_age (24 giờ). Khi đầy, bỏ đoạn cũ nhất và đếm vào agent_dropped_samples_total. Khởi động lại quét đoạn, bỏ bản ghi hỏng CRC, cắt đuôi dở.

Gửi bù theo thứ tự thời gian, cũ trước, có giới hạn tốc độ (mặc định tối đa 2 lô bù mỗi lần gửi) để không dồn tải collector sau sự cố dài.

Hệ quả ​

  • Không cần SQLite hay BoltDB, giữ binary nhỏ và không CGO (ADR 0001).
  • Mất tối đa lô đang ghi khi mất điện đột ngột.
  • Số liệu cũ hơn 24 giờ bị bỏ, khớp cửa sổ chấp nhận của collector.
  • Cần kiểm thử ngắt điện, đầy đĩa, fuzz cho bộ đọc.
  • Bộ đệm dùng chung logic ghi cho Linux và Windows, chỉ khác thư mục.

Phương án đã cân nhắc ​

Phương ánLý do không chọn
Chỉ đệm trong bộ nhớMất dữ liệu khi khởi động lại, chiếm RAM
SQLiteCần CGO hoặc thư viện lớn, quá nặng cho hàng đợi thêm cuối và xóa đầu
BoltDB hoặc BadgerDBPhụ thuộc và kích thước lớn hơn nhu cầu
Không đệmMỗi lần mạng gián đoạn ngắn đều mất dữ liệu, tạo lỗ hổng biểu đồ
Trang này có giúp được bạn không?
Sửa trang này

Nội dung đồng bộ từ kho mã access-hub-agent lúc 10:57, 03/10/2026. Khi tài liệu và mã khác nhau, mã thắng.