分散システムを構築するには、次のシステム容量を増やすために、システムの可用性を向上させます。それはビジネスに不可欠な保護の流れに大したです。
-
大規模なトラフィック処理、大規模な同時要求にクラスタリング技術により、異なるマシン上の負荷を分散します
-
ビジネスに不可欠な保護ドミノ効果(アバランシェ効果)を防止するために、障害分離をバックオフィスサービスの可用性を向上させます。
実行する必要がある。まず、全体的なアーキテクチャのスループットを向上させ、より多くの同時フローを提供し、そして第二に、システムの安定性を向上させるために、これより高いシステムの可用性ことをします。パフォーマンス・アーキテクチャを改善
パフォーマンス・アーキテクチャを改善
システム性能を向上させるための一般的な手法
- キャッシュシステム。追加しましたキャッシュシステムが効果的にシステムにアクセスする能力を向上させることができます。クラスタ内の分散キャッシュでは、プロキシのキャッシュの断片化とルーティングを行うには、このクラスタの必要性を必要とされます。
- システムの負荷分散。主要技術の水平展開、複数のマシンが流れ要求の一部を共有することができます
- 非同期呼び出し。誘導システムは、主に、要求キューを処理するために、メッセージキューを介して行わピーク遠位要求を「平坦化」、要求を処理することができ、それらの速度の後端部によって処理されます。スループット増加しますが、リアルタイムの貧しいです。同時に、メッセージの損失の問題を紹介しますが、メッセージは永続性が「ステートフル」ノードになりました
- データ・パーティショニングとデータミラーリング。**データ・パーティションが特定の方法(例えば位置による)のデータを複数の領域に分割され、異なるデータ領域は、異なるゾーンのトラフィックを共有します。これは、データ・ルーティング・ミドルウェアが必要です。クロスデータベース操作で結果として得られる複雑になります。データのミラーリングは、複数の部分に同一のデータをミラーリングするデータベースであるので、ミドルウェアのNOルートデータでなく、データの一貫性の問題を導入します。
アーキテクチャの安定性を向上させます
システムの安定性を改善するための一般的な手法
- スプリットサービス。第二は、サービスモジュールを再利用することで、障害を隔離するために、最初に:スプリットサービスは、主に2つの目的があります。サービスコールの間にこの紹介の依存関係(オリジナル問題解決サービスへの呼び出しは、あなたが複数の関連サービスを呼び出す必要があります)
- サービスの冗長性。サービスの冗長性は、単一障害点を削除してもよく、伸縮性、サポートサービス、およびフェイルオーバーします。これらのサービスの冗長性が得られステートフルサービスは、高い複雑さにつながります。ときは伸縮性、ときにデータの移行だけでなく、他のマシンへのデータ移行をコピーまたは再スライスを検討してください。
- ダウングレードを制限します。ときにシステムは、サービスの一部をオフにダウングレードすることが制限または機能によって、圧力を運ぶ、または構造全体がハングアップしないことを保証するために、ユーザーの一部を拒否することができませんでした。
- 高可用性アーキテクチャ。一般的に障害のない単一点について、可用性を保護するための冗長アーキテクチャの観点から言えば。。例えば、マルチテナントの分離、災害復旧のライブ
- 高可用性の運用・保守。高可用性の運用・保守は、CI / CD(継続的インテグレーション/連続展開)でDevOpsチームを指します。
分散システムのキーテクノロジー
分散システムの導入は、技術的な問題の束を以下の観点から対処する必要があります紹介します。
- サービスガバナンス。スプリットサービス、サービスコール、サービス検出、サービスは、サービスのガバナンスに起因......キーが定義されているサービスに依存します。サービスガバナンスの最大の意義は、ソートサービス、サービス呼び出しチェーン、および重要なサービス間の依存関係から、その1です。2、これらのサービスのパフォーマンスと可用性管理の側面。
- インフラ管理ソフトウェア。バージョン管理の必要性、全体的なインフラストラクチャのライフサイクル管理、およびサービスのオーケストレーション、集約、トランザクション処理や他のサービススケジューリング機能の必要性によって形成された総合的なサービスアーキテクチャ。
- DevOpsチーム。ビルド環境、継続的インテグレーション、連続展開を含みます。
- 自動化された運用・保守。自動的にスケーラブルなサービス、障害の移行、構成管理、状態管理と自動化された運用・保守の一連の
- リソーススケジューリングの管理。自動化されたアプリケーション層の動作および保守は、IaaSの層、ストレージ、ネットワークの分離、および管理を計算するリソーススケジューリングあるベース層を支持するようにスケジュールされる必要があります。
- 全体的なアーキテクチャを監視します。良いモニタを使用すると、自動化は良い運用・保守スケジューリングとリソース管理することができます。監視ニーズ(アプリケーション層、ミドルウェア層、ベース層)の3層システムを監視します。
- フロー制御。フロー制御、負荷分散、ルーティング、ヒューズ、降格、電流制限およびトラフィック関連のスケジューリング
分散システム「ギャング」
ある分散システム、の5つの重要な技術があります。
- フルスタックのシステム監視。
- サービス/リソーススケジューリング。
- トラフィックスケジューリング;
- ステータス/データスケジューリング。
- 開発・運用・保守の自動化。
自動化の開発・運用・保守、前者は4つの前提条件としてそれを行っているが必要です。これは、その最も重要な4つの技術で、全体的なアプリケーションの監視、リソースやサービスのスケジュール、ステータスとデータトラフィックのスケジューリングとディスパッチ、彼らは分散システムに物事の最もコアを構築しています。
参考文献:
風(オタク時間)に、左耳リスニングリンク:
http://gk.link/a/10f5D
GitHubのリンク:
https://github.com/lichangke/LeetCode
ほとんどの個人的なホームページを知っている:
https://www.zhihu.com/people/lichangke/
CSDNホーム:
https://me.csdn.net/leacock1991
へようこそ我々は話ができ