Logo Zephyrnet

Xây dựng rsync nhanh hơn từ Scratch In Go

Ngày:

hình ảnh

Để chuyển tệp nhanh chóng giữa hai máy tính, SCP là một chương trình tốt để sử dụng. Tuy nhiên, đối với các bản sao lưu phức tạp, lớn hoặc thường xuyên hơn, công cụ go-to là rsync. Nó nhanh hơn, hiệu quả hơn và có thể sử dụng trong nhiều trường hợp hơn. Đối với tất cả các đặc quyền của nó, [Michael Stapelberg] cảm thấy rằng nó có một điểm yếu lớn: nó là một công cụ được viết bằng C. [Michael] đối lập về mặt triết học với các chương trình được viết bằng C, vì vậy anh ấy bắt đầu triển khai rsync từ đầu trong Go thay vì.

Con đường quyết định giải quyết dự án này của [Michael] là một con đường phức tạp. Gần đây, ISP của anh ấy đã nâng cấp kết nối internet của mình lên 25 Gbit / s, điều đó có nghĩa là bộ định tuyến tùy chỉnh của anh ấy là điểm nghẽn trong mạng của anh ấy. Để giải quyết vấn đề đó, anh ấy đã di chuyển bộ định tuyến của mình sang PC với một số card mạng 25 Gbit / s. Để tận dụng tối đa tốc độ hiện có về mặt lý thuyết, ông đã bắt đầu sử dụng một công cụ có tên là gokrazy, giúp biến các ứng dụng được viết bằng Go thành thiết bị của riêng chúng. Điều đó có nghĩa là thay vì cài đặt bản phân phối Linux đầy đủ để xử lý các tác vụ cụ thể (chẳng hạn như bộ định tuyến), thứ duy nhất được tải trên máy tính về cơ bản là nhân Linux, trình biên dịch Go và các thư viện, sau đó là chính ứng dụng Go.

Với một bộ định tuyến mới có phần cứng có khả năng hỗ trợ những tốc độ nhanh này và chỉ chạy phần mềm được viết bằng Go, bước cuối cùng là xây dựng rsync để hỗ trợ các tác vụ trên mạng của anh ấy. Điều này có nghĩa là bản thân rsync cần phải được xây dựng từ đầu trong Go. Sau khi [Michael] hoàn thành nhiệm vụ cuối cùng này, anh ấy nhận thấy rằng việc triển khai rsync của anh ấy thực sự nhanh hơn nhiều so với phiên bản được xây dựng trong C, nhờ vào sự hiện đại hóa được tìm thấy trong ngôn ngữ Go và thực tế là bộ định tuyến của anh ấy không chạy tất cả các lỗi. được liên kết với một bản phân phối Linux tiêu chuẩn.

Đối với một dự án phần mềm thuộc phạm vi này, chúng tôi thấy quy trình từng bước của [Michael] đáng được lưu ý đối với bất kỳ vấn đề nào mà bất kỳ ai trong chúng tôi cố gắng giải quyết. Không chỉ vậy, việc cấu trúc lại một công cụ nền tảng như rsync là một nhiệm vụ liên quan đến bản thân nó, chứ đừng nói đến việc tạo ra nó chỉ đơn giản là để tăng tốc độ mạng vượt xa tốc độ mà hầu hết chúng ta vẫn coi là nhanh chóng mặt. Chúng tôi đang bỏ qua rất nhiều thông tin chi tiết về bản dựng này, vì vậy chúng tôi chắc chắn khuyên bạn nên xem bài nói chuyện của anh ấy trong video bên dưới.

Cảm ơn [sarinkhan] vì mẹo!

[Nhúng nội dung]

tại chỗ_img

Tin tức mới nhất

tại chỗ_img