제퍼넷 로고

Scratch In Go에서 더 빠른 rsync 빌드

시간

영상

두 컴퓨터 간의 빠른 파일 전송을 위해 SCP는 사용하기에 좋은 프로그램입니다. 그러나 더 복잡하거나 대규모 또는 정기적인 백업의 경우 이동 도구는 rsync입니다. 더 빠르고 더 효율적이며 더 넓은 범위의 상황에서 사용할 수 있습니다. 모든 장점에도 불구하고 [Michael Stapelberg]는 한 가지 주요 약점이 있다고 느꼈습니다. C로 작성된 도구입니다. [Michael]은 C로 작성된 프로그램에 철학적으로 반대합니다. 그래서 그는 대신 Go에서 rsync를 처음부터 구현하기 시작했습니다..

[Michael]이 이 프로젝트를 진행하기로 결정한 경로는 복잡합니다. 그의 ISP는 최근 그의 인터넷 연결을 25Gbit/s로 업그레이드했습니다. 이 문제를 해결하기 위해 그는 라우터를 여러 개의 25Gbit/s 네트워크 카드가 있는 PC로 마이그레이션했습니다. 현재 이론적으로 사용 가능한 속도를 최대한 활용하기 위해 Gokrazy라는 도구를 사용하기 시작했습니다. 이 도구는 Go로 작성된 애플리케이션을 자체 어플라이언스로 전환합니다. 즉, 특정 작업(예: 라우터)을 처리하기 위해 전체 Linux 배포판을 설치하는 대신 컴퓨터에 로드되는 것은 본질적으로 Linux 커널, Go ​​컴파일러 및 라이브러리, 그리고 Go 애플리케이션 자체뿐입니다.

이러한 빠른 속도를 지원할 수 있는 하드웨어와 Go로 작성된 소프트웨어만 실행하는 새 라우터를 사용하여 마지막 단계는 마침내 그의 네트워크에서 작업을 지원하기 위해 rsync를 구축하는 것이었습니다. 이것은 rsync 자체가 Go에서 처음부터 빌드되어야 함을 의미했습니다. [Michael]이 이 최종 작업을 완료하고 나면 Go 언어에서 발견되는 현대화와 라우터가 모든 중요한 작업을 실행하지 않는다는 사실 덕분에 rsync 구현이 실제로 C로 빌드된 버전보다 훨씬 빠릅니다. 표준 Linux 배포판과 관련이 있습니다.

이 범위의 소프트웨어 프로젝트에서 [Michael]의 단계별 프로세스는 우리가 해결하려고 시도하는 모든 문제에 대해 주목할 가치가 있습니다. 뿐만 아니라 rsync와 같은 기본 도구를 리팩토링하는 것은 우리 대부분이 이미 엄청나게 빠르다고 생각하는 것 이상으로 네트워크 속도를 증가시키기 위한 생성은 고사하고 자체적으로 관련된 작업입니다. 우리는 이 빌드에 대한 많은 세부 사항을 생략하고 있으므로 아래 비디오에서 그의 연설을 반드시 확인하는 것이 좋습니다.

팁을 주신 [sarinkhan]님 감사합니다!

[포함 된 콘텐츠]

spot_img

최신 인텔리전스

spot_img

우리와 함께 채팅

안녕하세요! 어떻게 도와 드릴까요?