GitHub đã thử nghiệm nội bộ khả năng xử lý 7.200 lượt push mỗi giây trên một kho lưu trữ, trong điều kiện 5.000 AI agent làm việc đồng thời. Push là thao tác gửi mã đã chỉnh sửa lên kho lưu trữ từ xa. GitHub cho biết hệ thống cũng xử lý các yêu cầu đọc với độ trễ thấp.
Ngày 5, GitHub công bố tên kiến trúc lưu trữ Git mới là Rubicon trong blog kỹ thuật chính thức. Công việc thiết kế bắt đầu ngay sau đợt chuyển đổi Azure ban đầu vào tháng 5/2026.
Trong ví dụ GitHub đưa ra, số yêu cầu trung bình mỗi ngày tại một kho lưu trữ tăng từ 44 triệu vào tháng 3/2026 lên 181 triệu vào tháng 5/2026, gần gấp 4 lần.
GitHub cho biết kho lưu trữ bận rộn nhất hiện nay cũng chỉ nhận vài chục lượt ghi mỗi giây trong những khoảng thời gian ngắn. Tuy nhiên, GitHub nhận định hoạt động song song liên tục của các agent có thể biến mức tập trung này thành nhu cầu ghi dữ liệu thường xuyên trong vòng một năm tới.
Lượng push tăng kéo theo không chỉ số yêu cầu ghi. Hệ thống kiểm thử tự động và triển khai sẽ lấy mã mới, trong khi các agent khác cũng đọc phiên bản mới nhất để nắm ngữ cảnh công việc, khiến số yêu cầu đọc tăng theo.
Trước đó, GitHub đã giới thiệu Copilot Projects dưới dạng bản thử nghiệm công khai để điều phối công việc của các agent trên nhiều kho lưu trữ. Phần giải thích kỹ thuật lần này tập trung vào cấu trúc đọc và ghi cần thiết để hỗ trợ hoạt động của các agent.
Git lưu nội dung mã dưới dạng đối tượng mới, thay vì ghi đè lên lịch sử hiện có. Khi push, một tác vụ riêng cần thực hiện là cập nhật trạng thái mới nhất, cho biết mỗi nhánh đang trỏ đến phiên bản nào.
Rubicon quản lý dữ liệu mã và thông tin nhánh ở hai nơi riêng biệt. Các gói dữ liệu mã được lưu trong Azure Blob Storage, còn Ref-CAS, một dịch vụ riêng, quản lý thông tin nhánh và danh sách các gói dữ liệu đã lưu.
Ref-CAS chỉ kiểm tra và cập nhật nhánh mà mỗi tác vụ muốn thay đổi. Các thay đổi ở những nhánh khác nhau có thể được xử lý đồng thời; nếu hai tác vụ cùng thay đổi một nhánh, hệ thống phải xử lý xung đột.
Khi push mã, bản sao ảo trước tiên xử lý gói dữ liệu mới rồi tải lên kho lưu trữ blob. Sau đó, hệ thống ghi vào Ref-CAS một giao dịch cập nhật đồng thời danh sách gói dữ liệu và thông tin nhánh.
Khi nhận yêu cầu đọc, bản sao ảo kiểm tra phiên bản thông tin nhánh trên Ref-CAS rồi tải các gói dữ liệu cần thiết. Nếu phiên bản không thay đổi, hệ thống có thể xử lý yêu cầu bằng một lần so sánh, thay vì tải lại toàn bộ danh sách nhánh.
Các bản sao ảo phụ trách đọc và ghi sử dụng bộ nhớ đệm có thể tạo lại. GitHub thiết kế hệ thống để có thể bổ sung bản sao ảo khi lượng yêu cầu dồn vào một kho lưu trữ tăng cao.
Khi các gói dữ liệu tích tụ sau nhiều lượt push mới, một nút riêng sẽ hợp nhất chúng trong nền. GitHub tách tài nguyên xử lý của các bản sao ảo khỏi tác vụ dọn dẹp để dành cho yêu cầu đọc và ghi; tác vụ thu gom rác, loại bỏ các đối tượng không còn được tham chiếu, cũng do một tiến trình chuyên trách đảm nhiệm.
Ban đầu, GitHub thử xử lý mọi thay đổi nhánh trong một bản ghi duy nhất, nhưng tốc độ ghi chỉ đạt vài trăm lượt mỗi giây. Chia bản ghi thành nhiều phần giúp tăng tốc độ ghi, song việc kiểm tra thay đổi của kho lưu trữ trở nên chậm hơn vì phải truy vấn từng phần.
GitHub cho biết riêng việc cập nhật trạng thái tham chiếu có thể xử lý hàng chục nghìn tác vụ mỗi giây theo kiến trúc mới. Rubicon hiện ở giai đoạn thử nghiệm riêng tư giới hạn; GitHub dự kiến mở rộng phạm vi áp dụng vào đầu năm 2027.
Comment 0