1. マイクロサービス入門1. マイクロサービスの誕生マイクロサービスは分割統治の考え方に基づいて進化しました。これまで、従来の大規模で包括的なシステムでは、インターネットの発展に伴う市場の技術需要を満たすことが困難になっていました。そのため、単一アーキテクチャから分散アーキテクチャへ、分散アーキテクチャから SOA アーキテクチャへと進化してきました。マイクロサービス アーキテクチャが誕生するまで、サービスは継続的に分割、分解され、粒度はどんどん細かくなっていきました。 マイクロサービス アーキテクチャは、単一のアプリケーションを一連の小さなサービスに分割し、それらが相互に調整および連携してユーザーに究極の価値を提供することを提唱するアーキテクチャ パターンです。 各サービスは独自の独立したプロセスで実行され、軽量の通信メカニズム (通常は HTTP ベースの RESTful API) を使用して相互に通信します。各サービスは特定のビジネスを中心に構築されており、本番環境、本番に近い環境などに個別に展開できます。また、統一された集中型のサービス管理メカニズムは可能な限り避ける必要があります。特定のサービスについては、ビジネスコンテキストに応じて適切な言語とツールを選択して構築する必要があります。 2. マイクロサービスアーキテクチャとSOAアーキテクチャの違いマイクロサービスは真に分散され、非中央集権化されています。ルーティング、メッセージ解析などのすべての「思考」ロジックをサービス内に配置して、統合された ESB を削除し、サービス間の通信を容易にすることは、SOA よりも徹底した分割です。 マイクロサービス アーキテクチャによって強調される重要なポイントは、ビジネス システムが完全にコンポーネント化され、サービス指向である必要があるということです。元の単一のビジネス システムは、独立して開発、設計、実行、保守できる複数の小さなアプリケーションに分割されます。これらの小さなアプリケーションは、サービスを通じて相互に対話し、統合されます。 3. マイクロサービスアーキテクチャが引き起こす問題ビジネス データ全体がさまざまなサブサービスに分散されるため、最も明白な 2 つの問題が発生します。
技術的な観点から見ると、これらの問題に対処するには一般的に 2 つの選択肢があります。 1 つ目はデータをオンラインで処理すること、2 つ目はデータをオフラインで処理することです。
2番目の方法をお勧めします。 Spring Boot と MongoDB を使用すると、この問題は簡単に解決できます。技術的な手段により、N 個のマイクロサービスに分割されたデータを MongoDB クラスターに同期し、同期プロセス中にデータクリーニングを実行して、企業のさまざまなビジネスニーズを満たすことができます。 マイクロサービス アーキテクチャには、サービス障害の伝播、サービスの分割、分散トランザクションなど、大きな課題があります。 2. CAP理論
分散システムでは、P は基本要件ですが、モノリシック サービスは CA システムであり、マイクロサービス システムは通常、可用性とパーティション耐性の両方を満たす AP システムです。 これは難しい問題を提起します。分散システムでデータの一貫性をどのように確保するか?これは誰もがよく議論する分散トランザクションです。 3. 分散トランザクションマイクロサービス アーキテクチャでは、分散トランザクションのソリューションは2 フェーズ コミットまたは3 フェーズコミットです。どちらを使用した場合でも、トランザクションの失敗が発生し、データの不整合が発生する可能性があり、重要な瞬間にデータを手動で復元する必要があります。
2 フェーズ コミットでは、トランザクションを 2 つの部分に分割することで、分散トランザクションの成功確率を大幅に高めることができます。最初のステージのすべてのステップが成功しても、2 番目のステージのノードが失敗した場合は、依然として不正確なデータが生成されます。これには通常、手動処理が必要になるため、最初のステップでログが記録されます。さらに、分散トランザクションに多数のノードが関与している場合、特定のノードでネットワーク異常が発生するとトランザクション全体がブロックされ、データベースのパフォーマンスが大幅に低下します。したがって、一般的には、分散トランザクションをできるだけ使用しないようにしてください。 4. サービス部門水平分割: 注文、マーケティング、リスク管理、ポイント リソースなどのさまざまなビジネス ドメインに従って分割します。独立したビジネス ドメイン マイクロサービス クラスターを形成します。 垂直分割: ビジネス機能内の異なるモジュールまたはコンポーネントを分割します。たとえば、共通コンポーネントを独立したアトミック サービスに分割し、最下層に沈めて、比較的独立したアトミック サービス層を形成します。このようにして、ビジネスの垂直分割と水平分割を実現できます。 マイクロサービスの階層化をうまく行う必要があります。つまり、コアアプリケーションとパブリックアプリケーションを選別して抽出し、独立したサービスとしてコア機能レイヤーとパブリック機能レイヤーに沈め、フロントエンドアプリケーションが変化する市場の需要に迅速に対応できるように、徐々に安定したサービスセンターを形成する必要があります。 つまり、マイクロサービスの設計は段階的である必要があり、サービス内の凝集度が高く、サービス間の結合度が低いことが一般的な原則です。 マイクロサービスの機能:
1. データベースの課題サービスが分割された後、私たちが遭遇した最大の問題は、バックグラウンドで管理される共同クエリでした。各マイクロサービスには独自の独立したデータベースがあるため、バックグラウンドはどのように処理すればよいでしょうか? 一般的には以下の方法があります。
私は異なる企業でこれら 3 つのソリューションをすべて使用しました。最初のソリューションは、比較的シンプルなビジネスを展開する小規模企業に適しています。 2 番目のソリューションは、元のシステムに基づいて徐々にマイクロサービス アーキテクチャに進化する企業に適しています。 3 番目のソリューションは、大規模で同時実行性の高いインターネット企業に適しています。 5. ヒューズ分散システムの雪崩効果を解決するために、分散システムはヒューズメカニズムを導入します。 一定時間内にサービスに対するユーザー要求の処理失敗回数が設定されたしきい値を下回ると、ヒューズは閉じた状態になり、サービスは正常になります。 一定時間内にサービスがユーザー要求の処理に失敗した回数が設定されたしきい値を超えると、サービスが失敗し、ヒューズが開いていることを意味します。つまり、すべてのリクエストはすぐに失敗し、ビジネス ロジックは実行されません。 ヒューズがオープン状態の場合、一定時間後にセミオープン状態になり、一定数のリクエストが実行されます。残りのリクエストはすぐに失敗します。リクエストの実行が失敗した場合、ヒューズは開いたままになります。成功するとヒューズが閉じられます。 ヒューズはシステムの「雪崩」効果を防ぐだけでなく、次の機能も備えています。
6. サービスゲートウェイマイクロサービス システムでは、API インターフェース リソースは通常、サービス ゲートウェイ (API ゲートウェイとも呼ばれます) によって均一に公開され、内部サービスは API リソースを外部に直接公開しません。利点は、内部サービスを隠し、システムのセキュリティを保護することです。 ゲートウェイ層は通常、クラスターの形で存在します。 Nginx は通常、負荷分散のためにサービス ゲートウェイ層の前に追加されます。 ゲートウェイの意味:
もちろん、これらの機能を実現するにはゲートウェイの可用性を高める必要があります。そうでないと、ゲートウェイがアーキテクチャの成功におけるボトルネックになる可能性があります。最も一般的に使用されるゲートウェイ コンポーネントは、Zuul と Nginx です。 7. サービス構成の統合管理マイクロサービス アーキテクチャでは、SpringCloud Config コンポーネント、Alibaba の Diamond、Baidu の Disconf、Ctrip の Apollo など、構成ファイルを統一的に管理するコンポーネントが必要です。 8. サービスリンクの追跡マイクロサービス アーキテクチャでは、リクエストに関係するサービスと参加順序を追跡するために、分散リンク トラッキングを実装する必要があります。各リクエスト リンクは明確に表示されるため、問題を迅速に特定できます。 一般的なリンク追跡コンポーネントには、Google の Dapper、Twitter の Zipkin、Alibaba の Eagleeye などがあります。 9. マイクロサービスフレームワーク市場で一般的に使用されているマイクロサービスフレームワークは、Spring Cloud、Dubbo、Kubernetesです。
したがって、Dubbo はサービス ガバナンスに重点を置いています。 Spring Cloud は、マイクロサービス アーキテクチャ エコシステムに重点を置いています。10. SpringCloudの共通コンポーネント
上記の 4 つのコンポーネントは Netflix から提供されており、総称して Spring Cloud Netflix と呼ばれます。
Spring Cloud で構築されたシンプルなマイクロサービス システムは、通常、サービス登録センター Eureka、ゲートウェイ Zuul、構成センター Config、および承認サービス Auth で構成されます。 Spring Cloud Netflix の機能:
|
<<: インフラストラクチャ・アズ・コード・テンプレートは、多くのクラウド・インフラストラクチャの弱点の根源です。
>>: RSA イノベーション サンドボックス インベントリ | Obsidian - SaaS アプリケーションにセキュリティ保護を提供するクラウド検出および対応プラットフォーム
Newtudou は 10 月に新製品を発売しました: 香港 VPS は年間 6 米ドル (IPv6...
SEO に携わる人なら、多かれ少なかれ次のような経験をしたことがあるでしょう。記事や複雑な SEO ...
4 月 26 日、毎年恒例の Inspur クラウド データ センター全国パートナー カンファレンス...
2018年最もホットなプロジェクト:テレマーケティングロボットがあなたの参加を待っています以前、グル...
デジタル変革の時代において、企業が産業用インターネットに移行することは必須です。しかし、インダストリ...
モルドバに登録されている alexhost は、「 SRL AlexHost 」という社名で、独自の...
インドネシアで正式に登録された会社である regolithmedia は、2009 年に設立され、7...
spinservers の親会社はハードウェアを販売しているため、常に高構成で低価格のアメリカの独立...
誕生日特別版 KVM VPS を入手しませんでしたか?チャンスが来ました。BlueVM が改訂され、...
Google が 2010 年 3 月 23 日 0:00 に中国本土市場から正式に撤退して以来、中...
先日、広西通宝天下信息技術有限公司傘下の広西イーサネットクラウドコンピューティング有限公司が運営する...
ロイター通信によると、4月30日、マイクロソフトとBesTVは、Xbox Oneが9月に正式に中国に...
最近、工業情報化部は返答書を発表し、次のステップは「ビッグデータ産業発展第14次5カ年計画」の公布を...
[51CTO.com クイック翻訳] Kubernetes は Docker のサポートを廃止しまし...
[[422795]]この記事はWeChat公式アカウント「Xintai Cloud Service」...