その他の分散型システムの紹介

1. 分散型システムの概要

        分散システムは、中央の調整または管理ユニットを持たないシステムのクラスです。つまり、システムを調整または管理する単一の中央サーバーはありません。分散型システムには、集中型システムと比較して長所と短所の両方があるため、これら 2 つのトポロジ アーキタイプのどちらをシステムに選択するかは、どちらの利点が必要か、または必要かによって決まります。

        分散型システムは、次の 2 つのカテゴリに分けることができます。

        分散サーバーシステム

        ピアツーピア (P2P) システム

2. 分散サーバーシステム

分散サーバー システムは、クライアント サーバー システムのサーバー側の分散型システムです。たとえば、Cassandra や MongoDB などの分散型データベースです。

分散サーバー システムは通常、システム全体のサーバー部分のみを分散します。全体的なアーキテクチャは依然としてクライアント/サーバー アーキテクチャです。システム内の一部のノードはクライアントであり、他のノードはサーバーです。

        分散型サーバー システムの例は次のとおりです。

        アパッチ カサンドラ

        モンゴDB

        Amazon DynamoDB 

3.ピアツーピアシステム

        ピア ツー ピア ネットワークと呼ばれることもあるピア ツー ピア システム (P2P) は、ネットワーク内のすべてのノードがクライアントとサーバーの両方であるシステムです。各ノード (ピア) は、他のノード (ピア) にサービスを提供するサーバーとして、また他のノードからそのサービスを利用するクライアントとして機能します。したがって、ピア ツー ピア システム内のすべてのノードは互いにピアであり、同じ機能と役割を意味します。以下の図は、すべてのノードが同じレベルの機能と権限を持つ、完全に分散化されたシステムを示しています。そのため、それらはしばしばピアと呼ばれます。つまり、互いに等しいのです。

         P2P ネットワークおよび P2P ネットワーク アルゴリズムとトポロジの例は次のとおりです。

        コード(アルゴリズム)

        カデムリア(アルゴリズム)

        ポリモーフ ポリリング (アルゴリズム)

        Dandelion - 目標は、証明可能な強力な匿名性の保証を提供することです。

        Gnutella - 分散ノードがピアツーピア (P2P) ネットワークを介して通信する方法を定義するファイル共有プロトコル。

4. ブロックチェーンシステム

        ビットコイン、イーサリアム、LBRY などのブロックチェーン システムも、通信とコラボレーションに P2P ネットワークを使用します。これは、ブロックチェーン システム (データベースなど) が分散状態を維持するためです。そのため、ブロックチェーン システム内のノードは、その状態が何であるかについて合意する必要があります。

        注: 一部のブロックチェーン システムのノードは、すべてがまったく同じジョブ/役割を実行するとは限りません。たとえば、一部のノードは「バリデータ ノード」であり、他のノードは「ウォレット ノード」などです。このようなブロックチェーン システムは、純粋な P2P システムではなく、分散型サーバー システムとして分類される可能性があります。ただし、重要なのは、特定のブロックチェーン システムに与える分類ではありません。それがどのように機能するかを理解することが重要です。

5.分散型システムのメリット

        分散型システムは、分散型システムがどのように設計されているかに応じて、集中型システムよりもいくつかの利点があります。

        柔軟性の向上

        分散システムにはシステム全体をダウンさせる単一障害点がないため、適切に設計された分散システムは集中システムよりも回復力があります。分散システム内の 1 つのノードがクラッシュした場合、システム内の他のノードが引き継ぐことができます。

        水平方向のスケーラビリティ

        適切に設計された分散型システムは、通常、水平方向に適切にスケーリングします。つまり、各ノードがより強力なハードウェアを使用する (垂直方向のスケーリング) のではなく、ネットワークにノード (コンピューター) を追加することによるスケーリングです。

        ハードウェア コストの削減

        P2P ネットワークは、エンド ユーザー デバイス (コンピューター、電話、コンソールなど) で排他的かつ直接実行される場合があります。このような場合、エンド ユーザーは、システムを実行するために必要なハードウェアを提供しています。その結果、P2P ネットワークを作成するソフトウェアの作成者は、ハードウェア コストを大幅に節約できます。ハードウェア コストをゼロにすることはおそらく不可能ですが、システムを実行するために使用するすべてのハードウェアに支払う必要がある場合よりもはるかに少ないでしょう。

6.分散型システムの課題

        分散型システムで特定のタイプの機能を実装することは、集中型システムよりも困難です。

        分散型コンセンサス

        分散システムの最大の課題の 1 つは、システム内の複数のノードがその状態への変更を開始できる場合、共有状態について合意に達することです。「状態」は一般に、データベース(すなわち、分散型データベース)に対応するデータに格納された何らかのデータを指す。

        分散システム内の 2 つ以上のノードが両方とも同じ論理オブジェクトの状態を変更しようとしている場合、システムは状態の変更を適用する順序を何らかの方法で決定する必要があります。

        システム内の 2 つのノードの両方が、共有状態にある同じ「クライアント」の「名前」を変更したいと考えているとします。最初のノードが名前を「Satoshi」に変更し、2 番目のノードが名前を「Vitalik」に変更したい場合、クライアントは最終的にどの名前を使用しますか? このシナリオは次のようになります。

         分散コンセンサスと呼ばれることもある分散型コンセンサスは幅広いトピックであり、それを達成する方法はいくつかあります。

        ブロードキャスト、マルチキャスト、ルーティング、ルックアップ

        分散システムのトポロジーによっては、ネットワーク内のすべてのノードまたはノードのサブセットに効果的かつ効率的にメッセージをブロードキャストまたはマルチキャストすることが難しい場合があります。実際には、予想されるすべてのノードが実際にメッセージを受信することを確認することを意味します。効率的とは、メッセージを複数回受信するノードがないことを意味します。分散放送の一部のモデルは、一方を保証できても他方を保証できない場合があります。

        システム内で効率的なメッセージ ルーティングとノードまたはデータのルックアップを実行する際にも、同様の問題が存在します。システム内の他のノードを効率的に検出するにはどうすればよいでしょうか? オブジェクトがシステム内の 1 つのノードにしか格納されていない場合、そのオブジェクトの場所を効率的に見つけるにはどうすればよいでしょうか?

        分散システムで使用されるトポロジーは、これらの問題に大きな影響を与えます。すべてのユースケースに同じ一般的なトポロジを使用するのではなく、特定のニーズを満たすようにシステムのトポロジを設計する必要がある場合があります。

おすすめ

転載: blog.csdn.net/bashendixie5/article/details/124139327