대용량의 작은 파일 다운로드 속도를 높이는 도구
이 프로젝트는 예전에 했던 게임에서 시작되었는데, 버전을 업데이트할 때 작은 파일이 많이 다운로드되는데, 최적화가 안 되어 있어서 속도가 너무 느려서 최적화할 수 있는 방법이 없을까 고민했습니다. 작은 파일이 많은 다운로드 시나리오는 간단한 아이디어에서 나온건데, 작은 파일이 너무 많아 다운로드 속도가 느리기 때문에 결국 하나의 큰 파일에 넣어두시면 됩니다. , 대용량 파일의 다운로드 속도는 이론적으로 전체 대역폭에 도달할 수 있습니다!
프로젝트의 원리는 다수의 작은 파일을 블록 파일에 직접 연결한 후 카탈로그를 생성하는 것입니다. 클라이언트는 카탈로그를 통해 블록 파일을 다운로드하고 파일 크기와 경로를 기반으로 파일을 로컬로 복원합니다. HTTP Range
의 특성상 중단이 발생할 수도 있습니다. 다시 연결하고 파일 기능을 다운로드하려면 클릭하세요.
최신 클라이언트 및 서버 바이너리 빌드를 다운로드하려면 릴리스로 이동하세요.
서버 배포
바이너리 파일을 임의의 디렉터리에 배치하고 동일한 디렉터리에 assets
폴더를 만듭니다.
더 빠르게 다운로드해야 하는 작은 파일을 assets/example
와 같은 assets
폴더 내의 폴더에 배치하세요.
서버를 시작하면 서버가 자동으로 assets
디렉터리의 모든 하위 폴더에 대한 패키징 파일을 생성하고 해당 파일에 대한 catalog.json
생성합니다.
서버는 Server started at http://0.0.0.0:8080
이는 시작이 완료되었음을 의미합니다.
클라이언트를 통해 파일 다운로드
바이너리 파일을 임의의 디렉토리에 배치
파일 다운로드를 시작하려면 client
입력하세요.
은 서버가 시작될 때 자동으로 생성되는 catalog.json
의 다운로드 주소이고 assets/example
카탈로그 주소는 http://localhost:8080/example/catalog.json
라고 가정합니다. http://localhost:8080/example/catalog.json
다운로드한 파일은 자동으로 download
폴더에 저장됩니다.
빌드에는 Golang >= 1.22.2가 필요합니다.
종속성 설치
모드 정리하러 가세요
서버 구축
빌드 ./cmd/server/로 이동
클라이언트 구축
빌드 ./cmd/client/로 이동
패키지 가져오기
go get -u github.com/nijinekoyo/miyako
패키지 지침
패키지/카탈로그
카탈로그를 생성하고 구문 분석하는 데 사용됩니다. API 문서를 참조하세요.
패키지/블록
파일 블록을 생성하고 파일 블록을 다운로드하는 데 사용됩니다. API 설명서를 참조하세요.
이 프로젝트는 MIT License
계약에 따라 배포됩니다.