RAID(ディスク)のようなアルゴリズムを使用するプログラムを構築することを考えていました。1 台のコンピューターが停止した場合。次が介入します。その場所に。また、1 台から 1000 台のコンピューターに拡張する必要があります。
アドバイスが必要です。
私が学ぶ必要があるアルゴリズムの名前は何ですか?
ある時点で、git の上にビルドすることは可能だと思いました。
RAID(ディスク)のようなアルゴリズムを使用するプログラムを構築することを考えていました。1 台のコンピューターが停止した場合。次が介入します。その場所に。また、1 台から 1000 台のコンピューターに拡張する必要があります。
アドバイスが必要です。
私が学ぶ必要があるアルゴリズムの名前は何ですか?
ある時点で、git の上にビルドすることは可能だと思いました。
Google ファイル システムに関するこのペーパーを読むことをお勧めします。要約から:
大規模な分散データ集約型アプリケーション向けのスケーラブルな分散ファイル システムである Google ファイル システムを設計および実装しました。安価なコモディティ ハードウェアで実行しながらフォールト トレランスを提供し、多数のクライアントに高い総合パフォーマンスを提供します。
分散ハッシュテーブルが頭に浮かぶ...
1)次のように分散ロック/ミューテックスを使用できます。
前川による分散システムにおける相互排除のためのsqrt(N)アルゴリズム:http://portal.acm.org/citation.cfm?id = 214445
LubowichとTaubenfeldによる分散ロックベースの同期のパフォーマンスについて:http://portal.acm.org/citation.cfm?id = 1946155
2)または、次のようにロックフリーのリンクリストを使用できます。
FomitchevとRupertによるロックフリーのリンクリストとスキップリスト:http ://www.cse.yorku.ca/~ruppert/papers/lfll.pdf
Valoisによるcompare-and-swapを使用したロックフリーのリンクリスト:http: //portal.acm.org/citation.cfm?id = 224988
MapReduceアルゴリズムも確認してください。これは、高度なスケーラビリティを実現するための比較的簡単な方法であり、アルゴリズムの設計者がロックや通信などについて考える必要がありません。たとえば、Apache Foundation によるオープンソースのHadoopなど、いくつかの実装が利用可能です。
Appistry EAFをチェックしてみてください。分散実行プラットフォームです。タスクのすべてのフェールオーバーが処理されるため、コードに組み込む必要はありません。1 つのノードに障害が発生すると、別のノードが自動的に引き継ぎます。また、グリッドとは異なり、これらのタイプのソリューションの単一障害点/ボトルネックを取り除くために、集中型コントローラーはありません。
最大 5 台のマシンまで無料でダウンロードできます。
ビットトレント? :)
memcachedのようなものを構築できます。各ハッシュ エントリは、ファイル ブロックである可能性があります (たとえば、コンテンツに対するブロックの SHA ハッシュ)。