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

ADR 0003: Ngôn ngữ Go cho agent và collector ​

Go cho cả hai thành phần.

Ngày quyết định
30/09/2026
Chấp nhận
30/09/2026
Phạm vi
Collector
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 ​

Agent chạy trên Linux và Windows, phải nhỏ, ít tài nguyên, dễ phân phối. Collector phải chịu hàng trăm request mỗi giây với độ trễ thấp.

Lựa chọn ​

Go, Rust, C#/.NET, Python, PHP (để tận dụng đội Laravel).

Quyết định ​

Go cho cả hai thành phần.

Lý do ​

  • Biên dịch chéo dễ, binary tĩnh một tệp, không phụ thuộc runtime (khác Python, .NET, PHP).
  • Mức dùng bộ nhớ và CPU thấp, đáp ứng NFR-09.
  • Thư viện hệ thống chín (gopsutil, golang.org/x/sys/windows, dịch vụ Windows qua x/sys/windows/svc), hệ sinh thái Prometheus, NATS, Redis đều viết bằng Go.
  • Đồng thời (goroutine) phù hợp máy chủ ingest.
  • Dùng cùng ngôn ngữ ở hai repo cho phép dùng chung mã giao thức.

Hệ quả ​

  • Nhóm Laravel cần thời gian làm quen Go (rủi ro R12), giảm bằng cấu trúc dự án đơn giản và review.
  • Go từ 1.21 bỏ Windows 7, 8, Server 2012 R2 trở xuống (xem ma trận hỗ trợ).
  • Tắt CGO để có binary tĩnh (quy tắc này áp dụng cho Agent, do dự án Agent quy định).
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-collector lúc 10:57, 03/10/2026. Khi tài liệu và mã khác nhau, mã thắng.