SpringCloud(1)-マイクロサービス
マイクロサービスアーキテクチャの4つの中心的な問題
- 多くのサービスがありますが、クライアントにアクセスするにはどうすればよいですか?
- サービスが非常に多い場合、サービスはどのように通信しますか
- 非常に多くのサービスを管理する方法は?
- サービスがハングした場合はどうなりますか?
解決策
SpringCloud 生态
1. Spring Cloud Netflix :一站式解决方案。
API网关:zuul组件
通信:Feign---HttpClient---Http通信方式(同步,阻塞)
服务注册与发现:Eureka
熔断机制:Hystrix
2. Apache Dubbo Zookeeper :半自动,需要整合别人的。
API网关:无
通信:Dubbo
服务注册与发现:Zookeeper
熔断机制:无
3. Spring Cloud Alibaba :一站式解决方案。
--------------------------------------------------------------------------------
万变不离其宗:
1. API
2. HTTP,RPC
3. 服务注册与发现
4. 熔断机制
--------------------------------------------------------------------------------
为什么要解决这四个问题?
网络不可靠!
マイクロサービスアーキテクチャとは
マイクロサービスアーキテクチャは、単一のアプリケーションを一連の小さなサービス(全体を個々のサービス、モジュール)に分割し、各サービスを独自のサービスに分割することを推奨する、アーキテクチャパターンまたはアーキテクチャスタイルです。独自のプロセス(各サービスはプロセス)では、プロセスは互いに調整し、ユーザーに究極の価値を提供するように互いに構成します。これらのサービスは、軽量の通信メカニズム(Http)を使用して相互に通信します。各サービスは特定のビジネスを中心に構築されており、本番環境に個別にデプロイできます。さらに、統合および集中化されたサービス管理は可能な限り避けてください。メカニズム(サービス登録および検出メカニズム)、サービスの場合、ビジネスコンテキスト、それを構築するツール(Maven)に応じて適切な言語を選択する必要があります。これらのサービスを調整するための非常に軽量な集中管理が可能です。サービスはさまざまな言語で記述できます。または、さまざまなデータストアを使用できます。
マイクロサービスアーキテクチャのコアは、ビジネスに従って従来のオールインワンアプリケーション(All In One)を1つずつのサービスに分割し、完全に分離し、各マイクロサービスが単一のビジネス機能を提供し、1つのサービスが1つのことを実行することです。 、プロセスの概念と同様に、独自の独立したデータベースを使用して、個別に開始または破棄できます。
マイクロサービスに関するマーティンファウラーの原文:https : //martinfowler.com/articles/microservices.html
マイクロサービスの長所と短所
利点:
- 各サービスは非常にまとまりがあり、小規模であり、コードは理解しやすく、指定されたビジネス機能またはビジネス要件に集中できます。
- 開発はシンプルで開発効率も高く、サービスは単一責任の原則に特化することができます。
- 小さなチームだけで開発することができます、小さなチームは2-5人かもしれません。
- 開発段階と展開段階の両方で低カップリングは独立しています。
- さまざまな言語で開発できます。
- 開発者が理解、変更、保守を行うのは簡単です。そのため、小規模チームは作業結果にもっと注意を払うことができ、価値を実現するための協力は必要ありません。
- これは単なるビジネスロジックコードであり、HTML、CSS、またはその他のインターフェイスと混合されません。
- 各サービスには独自のストレージ容量があり、独自のデータベースまたは統合データベースを持つことができます。
短所:
-
開発者は、分散システムの複雑さに対処する必要があります。
-
サービスの増加に伴い、管理の複雑さが増し、運用と保守の困難さが増しています。
-
サービス間の通信のコスト。
-
データの整合性。
マイクロサービスの技術スタック
マイクロサービスエントリ | 床テクノロジー |
---|---|
サービス開発 | SpringBoot、Spring、SpringMVC |
サービスの構成と管理 | NetflixのArchaius、Alibabaのダイヤモンド |
サービスの登録と発見 | ユーレカ、領事、ズーキーパー |
サービスコール | 残り、RPC、gRPC |
サービスヒューズ | Hystrix、特使 |
負荷分散 | リボン、Nginx |
サービスインターフェース呼び出し | 嬉しいです |
メッセージキュー | カフカ、RabbitMQ、ActiveMQ |
サービス構成センター管理 | SpringCloudConfig、Chef |
サービスルーティング(APIゲートウェイ) | ズール |
サービスの監視 | Zabbix、Nagios、Metrics、Specatator |
完全なリンク追跡 | ジプキン、ブレイブ、ブレイブ |
サービス展開 | Docker、OpenStack、Kubernetes |
データフロー運用開発キット | SpringClouldストリーム |
イベントメッセージスタック | SpringCloudバス |