大量の小さなファイルのダウンロードを高速化するツール
このプロジェクトは以前プレイしたゲームに由来しており、バージョンを更新すると大量の小さなファイルがダウンロードされるため、速度が非常に低かったため、最適化する方法はないか考えました。多数の小さなファイルをダウンロードするシナリオ。小さなファイルが多すぎてダウンロード速度が遅いため、結局、それらをすべて 1 つの大きなファイルにまとめてしまうという考えを思いつきました。 、大きなファイルのダウンロード速度は理論的には全帯域幅に達する可能性があります。
プロジェクトの原理は、多数の小さなファイルをブロック ファイルに直接リンクし、クライアントがカタログを通じてブロック ファイルをダウンロードし、ファイル サイズとパスに基づいてファイルをローカルに復元することです。 HTTP Range
の特性により、クリックして再接続し、ファイルをダウンロードする機能も実現できます。
「リリース」に移動して、最新のクライアントおよびサーバーのバイナリ ビルドをダウンロードします。
サーバーをデプロイする
バイナリ ファイルを任意のディレクトリに配置し、同じディレクトリにassets
フォルダーを作成します。
より速くダウンロードする必要がある小さなファイルを、 assets/example
などのassets
フォルダー内の任意のフォルダーに配置します。
サーバーを起動します。サーバーが起動すると、 assets
ディレクトリ内のすべてのサブフォルダーのパッケージ ファイルが自動的に作成され、それらのcatalog.json
が作成されます。
サーバーはServer started at http://0.0.0.0:8080
これは、起動が完了したことを意味します。
クライアント経由でファイルをダウンロードする
バイナリファイルを任意のディレクトリに配置します
ファイルのダウンロードを開始するには、 client <CatalogAddr>
を入力します。 <CatalogAddr>
は、サーバーの起動時に自動的に生成される、 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
契約に基づいて配布されています