GitHub tối ưu hóa hạ tầng Git: Cầu nối hướng tới quy mô ‘Agent-scale’
GitHub chia sẻ lộ trình chuyển đổi kiến trúc lưu trữ Git nhằm đáp ứng sự bùng nổ của lưu lượng truy cập từ các tác nhân tự động (agent) và tối ưu hóa hiệu suất giữa trung tâm dữ liệu nội bộ với...
- Giọng nữ Bắc
Trong năm qua, lưu lượng truy cập Git trên GitHub đã tăng trưởng theo cấp số nhân. Để giải quyết bài toán quy mô, GitHub đã thực hiện chiến lược di chuyển dữ liệu sang Azure, đồng thời tái cấu trúc hệ thống lưu trữ dựa trên hai nguyên tắc cốt lõi: giảm thiểu sự phối hợp (coordination) và tách biệt lưu trữ khỏi tính toán (compute).
Table Of Content
Thách thức từ độ trễ mạng
Với các kho lưu trữ (repository) bận rộn nhất, vấn đề lớn nhất là độ trễ mạng khoảng 25ms cho mỗi vòng lặp (round trip). Trong kiến trúc cũ, cơ chế quorum yêu cầu sự đồng thuận từ tất cả các bản sao (replica) khỏe mạnh trước khi xác nhận một lệnh ghi. Điều này vô tình biến bản sao chậm nhất thành nút thắt cổ chai, giới hạn băng thông ghi của toàn bộ hệ thống.
Giải pháp: Chuyển đổi từ cấp độ Repository sang cấp độ Reference
Để khắc phục, GitHub đã thay đổi phạm vi của quorum. Thay vì khóa toàn bộ repository, hệ thống giờ đây chỉ thực hiện tuần tự hóa (serialize) trên từng reference riêng lẻ. Điều này cho phép các lệnh ghi vào các nhánh (branch) khác nhau có thể thực hiện song song, loại bỏ tình trạng chờ đợi lẫn nhau không cần thiết. Kết quả thử nghiệm cho thấy băng thông ghi tăng từ 3-4 lần với độ trễ thấp hơn đáng kể.
Tách biệt lưu trữ và tính toán
GitHub đang tiến tới việc tách biệt hoàn toàn giữa lưu trữ và tính toán thông qua các virtual replica:
- Virtual write replica: Đóng vai trò cầu nối với Azure Blob Storage, đảm bảo tính bền vững của dữ liệu trước khi xác nhận lệnh ghi.
- Virtual read replica: Có thể mở rộng linh hoạt theo nhu cầu, tự làm ấm bộ nhớ đệm (cache) từ Azure Blob Storage mà không cần tham gia vào quá trình đồng thuận của quorum.
Cách tiếp cận này cho phép GitHub mở rộng quy mô đọc và ghi một cách độc lập, đồng thời tận dụng tối đa hạ tầng đám mây mà không làm gián đoạn các dịch vụ cốt lõi đang phục vụ hàng tỷ thao tác mỗi ngày.
Hướng tới tương lai
Việc di chuyển dữ liệu sang Azure chỉ là bước đệm. Thách thức tiếp theo mà đội ngũ kỹ thuật GitHub đang đối mặt là tối ưu hóa hơn nữa băng thông ghi, khi mà các tác nhân tự động (agent) ngày càng gia tăng áp lực lên hệ thống. GitHub hứa hẹn sẽ chia sẻ chi tiết hơn về kiến trúc cuối cùng tại sự kiện GitHub Universe sắp tới.
Nguồn tham khảo: GitHub Blog



No Comment! Be the first one.