分散型システムとは、異なるシステム上に配置され、単一のユニットとして動作するために通信する独立したコンポーネントとマシンの集合体を指します。
この完全入門ガイドでは、分散型システムの仕組み、実際の使用例、基本的なアーキテクチャ、利点と欠点、リアルタイム分散ストリーミングの一般的なソリューションについて学びます。
Apache Kafka を生んだ開発者チームにより設立された Confluent は、120以上のデータソースを接続するリアルタイムデータ統合、処理や分析を可能にするあらゆる機能が揃ったデータストリーミングプラットフォームです。
分散コンピューティングや分散データベースとしても知られる分散型システムは、共通の目標達成のために相互にメッセージを共有する、異なるマシン上に配置された独立したコンポーネントの集合体を指します。
こうした性質上、分散型システムは、エンドユーザーにとっては1つのインターフェイスやコンピューターのように見えます。システムが連携して、障害を防ぎながらリソースと情報を最大化できることがこのシステムの特徴で、1つのシステムに障害が発生してもサービスの可用性に影響を与えません。
今日のデータはかつてないほど分散されており、最新のアプリケーションが単独で実行されることはありません。製品やアプリケーションの大部分は分散型システムに依存しています。
分散コンピューティングの最も重要な機能には次のようなものがあります。
最新の分散型システムは、同じ物理マシン上で実行される可能性があるものの、メッセージを相互に交換することで相互作用する自律プロセスを取り入れて進化してきました。
ネットワーク
分散型システムの最初の例は、イーサネットが発明され LAN (ローカルエリアネットワーク) が作成された1970年代に登場しました。コンピューターが初めてローカル IP アドレスを使用して他のシステムにメッセージを送信できるようになります。ピアツーピアネットワークは進化し、電子メール、そしてご存知のとおりインターネットが、今も成長を続ける分散型システムの最大の例であり続けています。インターネットが IPv4 から IPv6 に変化するにつれて、分散型システムは「LAN」ベースから「インターネット」ベースに進化しました。
電気通信ネットワーク
固定電話・携帯電話ネットワークも分散型ネットワークの一例です。固定電話ネットワークは1世紀以上にわたって存在しており、ピアツーピアネットワークの初期の例として始まりました。携帯電話ネットワークは、セルと呼ばれるエリアに基地局が物理的に分散された分散型ネットワークです。固定電話ネットワークが VOIP (Voice over IP) へと進化する中、分散型ネットワークとしての複雑さが増し続けています。
分散型リアルタイムシステム
多くの業界でローカルおよびグローバルに分散されたリアルタイムシステムが使用されています。航空会社はフライト制御システムを使用し、Uber や Lyft は配車システムを使用し、製造工場は自動化制御システムを使用し、物流会社や電子商取引会社はリアルタイム追跡システムを使用しています。
並列処理
かつては、並列コンピューティングと分散型システムの間には区別がありました。並列コンピューティングは、同じデータとメモリにアクセスする複数のスレッドやプロセッサ上でソフトウェアを実行する方法に焦点を当てており、分散型システムとは独自のプロセッサとメモリを備えた個別のマシンを意味していました。最新のオペレーティング システム、プロセッサ、クラウドサービスの台頭により、最近では分散コンピューティングに並列処理も含まれるようになりました。
分散型人工知能
分散型人工知能は、大規模なコンピューティング能力と並列処理を使い、マルチエージェントを使用して非常に大規模なデータセットを学習・処理する方法です。
分散データベースシステム
分散データベースは、複数のサーバーや物理的な場所に配置されたデータベースで、データはシステム間で複製や複写が可能です。
最も一般的なアプリケーションは分散データベースを使用するため、分散データベースシステムにおける同種または異種といった性質を認識することが重要となります。
同種分散データベースでは、各システムが同じデータベース管理システムとデータモデルを備えており、新しいノードと場所を追加することで、パフォーマンスの管理と拡張が容易になります。
異種分散データベースでは、複数のデータモデルと異なるデータベース管理システムの確立が可能になり、ゲートウェイはノード間でデータを変換するために使用され、通常はアプリケーションとシステムを結合した結果として発生します。
分散型システムには、すべてのコンポーネント (マシン、ハードウェア、ソフトウェア) を相互接続し、メッセージを転送して相互通信できるネットワークが必要となります。
これを理解するために、分散アーキテクチャの種類、長所、短所を見てみましょう。
分散型アプリケーションとプロセスは通常、次の4つのアーキテクチャタイプのいずれかを使用します。
__クライアントサーバー : __
初期の分散型システムアーキテクチャは、プリンター、データベース、ウェブサーバーなどの共有リソースとしての1台のサーバーで構成されていました。複数のクライアント (コンピューターを使用するユーザーなど) があり、クライアントが共有リソースを使用するタイミング、使用方法と表示方法、データの変更、サーバーへの送信方法を決定します。git などのコードリポジトリは、コードに変更をコミットする開発者がインテリジェンスを使用する良い例です。
今日、分散型システムアーキテクチャはウェブアプリケーションとともに次のような形に進化しています。
分散型システムの最終目標は、アプリケーションのスケーラビリティ、パフォーマンス、高可用性を実現することです。
主な利点には次のようなものがあります。
エンジニアリング上のあらゆる意思決定にはトレードオフがありますが、分散型システムの最大の欠点はその複雑さです。マシンとメッセージが増大するうえ、より多くのデータがより多くの当事者間で渡されることから、次のような問題が発生します。
Confluent は、クラウド、オンプレミスやハイブリッドクラウド環境に対応する唯一のデータストリーミングプラットフォームです。120を超えるデータソースをエンタープライズグレードの拡張性、セキュリティ、統合機能で接続し、すべての分散型システム全体でリアルタイムの可視性を実現します。
30日間の無料トライアルでわずか数分で利用を開始できます。