記事のディレクトリ
1.マイクロサービスの概要
1.1。マイクロサービスとは
マイクロサービスアーキテクチャ(MicroServicesArchitecture
)は、近年ソフトウェアアーキテクチャの分野で登場している高周波語彙であり、従来のSOAアーキテクチャの進化に基づいたアーキテクチャモデルです。これは、従来のモノリシックアーキテクチャ、または分散アーキテクチャのモノリシックアプリケーションとサービスを、マイクロサービスと呼ばれるより細かいサービスに分割することを提唱しています。この種のサービスは、独立したプロセスで独立して実行され、他のプロセスから分離されます。サービスは通常、Http通信プロトコルに基づいてRestFulAPIと通信されます。各マイクロサービスは、特定のビジネスを中心に構築されます。独立して開発、構築、リリースされ、他の依存ビジネスに影響を与えることなく、本番環境と本番環境にデプロイされます。
Microservice
マイクロサービスの概念()は2012年に登場しました。Webおよびモバイルアプリケーションの開発をスピードアップする方法として、2014年にすべての関係者から注目を集め、2015年は
マイクロサービスの最初の年と言えます。より多くのフォーラム、コミュニティ、ブログ、およびインターネット業界の巨人がマイクロサービスについて議論し、実践し始めるほど、これはマイクロサービスの開発と革新をさらに促進したと言えます。Martin Fowlerは、マイクロサービスの人気に貢献してきました。この老人は奇妙な人で、特に抽象的な誘導と概念の作成が得意です。特に、新しい用語のマイクロサービスには1つの特徴があります。説明するとすぐに理解し、質問するとすぐにはわからず、話し合うとすぐに戦います。
Martin Fowlerは、国際的に有名なOOの専門家であり、アジャイル開発手法の創設者の1人であり、現在はThoughtWorksの主任科学者です。彼は、オブジェクト指向分析と設計、UML、パターン、ソフトウェア開発方法論、XP、リファクタリングなどの世界トップの専門家であり、現在はThoughtWorksのチーフサイエンティストです。ThoughtWorksは、エンタープライズアプリケーションの開発と統合に従事する会社です。1980年代には、ファウラーはオブジェクトテクノロジを使用して多層エンタープライズアプリケーションを構築することを提唱していました。彼は、「エンタープライズアプリケーションアーキテクチャパターン」、「UMLエッセンス」、「リファクタリング」などの古典的な本をいくつか執筆しています。
紙のURL:https://martinfowler.com/articles/microservices.html#MicroservicesAndSoa
中国語の翻訳URL:http://blog.cuicc.com/blog/2015/07/22/microservices/
-
Martin Fowlerのマイクロサービスの一般的な概要は次のとおりです
。現在、マイクロサービス業界の統一された標準的な定義はありません(このアーキテクチャスタイルの正確な定義はありませんが)。しかし、一般的に言えば、マイクロサービスアーキテクチャは、アーキテクチャパターンまたはアーキテクチャスタイルです。単一のアプリケーションを一連の小さなサービスに分割することを提唱します。各サービスは独自の独立したプロセスで実行されます。それらは互いに調整および連携して、ユーザーに究極のサービスを提供します。値。サービスは、軽量の通信メカニズムを使用して相互に通信します(通常はHTTPベースのRESTful API)。各サービスは特定のビジネスを中心に構築されており、本番環境、本番環境のような環境などに個別に展開できます。また、一元化された一元化されたサービス管理メカニズムは可能な限り回避する必要があります。特定のサービスについては、ビジネスコンテキストに応じて適切な言語とツールを選択して構築する必要があります。非常に軽量な一元化された管理を実現できます。これらのサービスを調整します。さまざまな言語を使用してサービスを作成することも、さまざまなデータストアを使用することもできます。
-
技術的な観点からの理解:
マイクロサービスの中核は、従来のワンストップアプリケーションをビジネスに応じて1つのサービスに分割し、それを完全に分離することです。各マイクロサービスは単一のビジネス機能のサービスを提供し、1つのサービスが1つのサービスを実行します。技術的な観点からは、プロセスの概念に似た小さな独立したプロセスであり、それ自体で開始または破棄することができ、独自の独立したデータベースを持っています。
1.2。マイクロサービスの利点
-
単一のサービスの複雑さの軽減
以前に結合された複雑なビジネスは単一のサービスに分割され、元の複雑さの無限の蓄積を回避します。各マイクロサービスは単一の機能に焦点を合わせており、明確に定義されたインターフェースを通じてサービスの境界を明確に表現しています。 -
独立したデプロイ
マイクロサービスには独立した実行プロセスがあるため、各マイクロサービスは独立してデプロイできます。ビジネスが反復的である場合、関連するサービスの反復のみをリリースする必要があります。これにより、テストの作業負荷が軽減され、サービスリリースのリスクも軽減されます。 -
高いフォールトトレランス
マイクロサービスアーキテクチャでは、コンポーネントに障害が発生すると、障害は単一のサービスに分離されます。電流制限や溶断などにより、エラーによる被害を軽減し、本業の正常な運用を確保します。 -
スケーラビリティ
モノリシックアーキテクチャアプリケーションは、水平拡張も実現できます。つまり、アプリケーション全体を異なるノードに完全に複製できます。アプリケーションのさまざまなコンポーネントで拡張要件が異なる場合、各サービスは実際のニーズに応じて個別に拡張できるため、マイクロサービスアーキテクチャはその柔軟性を反映します。
2.一般的なマイクロサービスフレームワーク
2.1。アリババダボ
Aliのオープンソースマイクロサービスフレームワークは、高性能で軽量なオープンソースJava RPCフレームワークであり、インターフェイス指向のリモートメソッド呼び出し、インテリジェントなフォールトトレランスと負荷分散、自動サービス登録と検出の3つのコア機能を提供します。Apacheインキュベーターに正式に参入しました。
公式サイト:http://dubbo.apache.org/zh/
核心概念
Provider 暴露服务的服务提供方
Consumer 调用远程服务的服务消费方
Registry 服务注册与发现的注册中心
Monitor 统计服务的调用次数和调用时间的监控中心
2.3.SpringCloud
SpringCloudは、SpringBootに基づくマイクロサービスを実装するためのフレームワークのセットです。彼は、構成管理、サービスディスカバリ、サーキットブレーカー、インテリジェントルーティング、マイクロエージェント、コントロールバス、グローバルロック、意思決定キャンペーン、分散セッション、およびマイクロサービス開発に必要なクラスター状態管理を提供します。最も重要なことは、Spring Bootフレームワークと一緒に使用すると、マイクロサービスアーキテクチャを備えたクラウドサービスを非常に便利に開発できるようになることです。SpringBootは、製品レベルのSpringアプリケーションとサービスの作成を簡素化し、構成ファイルを簡素化し、組み込みWebサーバーを使用し、すぐに使用できる多くのマイクロサービス機能を含めることを目的としています。
公式サイト:https://spring.io/projects/spring-cloud
コアコンポーネント
Netflix Eureka 服务注册与发现
Netflix Ribbon 客户端负载均衡
Netflix Hystrix 服务熔断
Netflix Zuul 服务网关
Spring Cloud Config 分布式配置
……
2.4.SpringCloudアリババ
SpringCloud Alibabaは、AlibabaGroupのオープンソースマイクロサービスアーキテクチャソリューションです。
マイクロサービスアーキテクチャは、分散システム開発を改善するためにアプリケーションを複数のサブアプリケーションに分割することであり、各サービスは独立して実行できるサブプロジェクトです。これには、サービスガバナンス、構成管理、現在の制限とダウングレード、AliオープンソースエコシステムをサポートするN個のマルチコンポーネント(Dubbo、RocketMQなど)を含む多くのコンテンツが含まれます。
公式ウェブサイト:https://spring.io/projects/spring-cloud-alibaba/
コアコンポーネント
Sentinel:阿里巴巴开源产品,把流量作为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。
Nacos:阿里巴巴开源产品,一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。
RocketMQ:Apache RocketMQ™ 基于 Java 的高性能、高吞吐量的分布式消息和流计算平台。
Dubbo:Apache Dubbo™ 是一款高性能 Java RPC 框架。
Seata:阿里巴巴开源产品,一个易于使用的高性能微服务分布式事务解决方案。
Alibaba Cloud ACM:一款在分布式架构环境中对应用配置进行集中管理和推送的应用配置中心产品。
……