マイクロサービスとは何ですか? - マイクロサービスモデル、技術、アーキテクチャ()を詳細に説明

まず、マイクロサービスは何ですか

前に次のマイクロサービスの前にMVCフレームワークにおけるモノマーのアプリケーションを説明する必要が言いました。

シングルアプリケーション:

画像

ユーザーは、サーバーが大きくなるアクセスした場合、原因はそれを行う方法をサポートすることはできませんか?プラスプラスサーバーの負荷分散、アーキテクチャは、ケース次のようになります。

画像

その後、静的に依存しないファイルことが判明し、CDNは、他の手段によって加速、対応するモノマーのアプリケーションアーキテクチャの全体的なアプリケーションを強化することができるようになります、キャッシュ技術を使用たとえば、多くのオープンソースプロジェクト、ページキャッシュを共通htmlですキャッシュのような内部の多くのPHPの開発プロジェクトで共通:織りMonternet

画像

次のような欠点は、図単一のアプリケーションのアーキテクチャであり、上記に記載されています:

1.開発 - コードの複雑さ、高い技術者の要件は、前面から背面への必要高い能力を持っている必要があり、開発協力の難しSVNツールの管理があまりにもあまりにも多くの開発者の場合には複雑さによって、テストサイクルが長い、バグ変更は、長い時間がかかります。

2.アプリケーションの利用 - 高いプログラムがゆっくりスタート、データベースを維持する必要性の誰か、ハードウェアの構成要件に。

-UI、ビジネス、背景を構築3.担当者は、データベースが維持するために誰かを必要とします。

図全体的な枠組みを以下に示します。

画像

最終的にどのようなミクロのサービスフレームの問題を解決すること。

名説明:マイクロサービス小さな、疎結合分散サービスは、サービスのさまざまなコンポーネントに配布することができます異なる責任と見られ、または統合管理に異なるシステムに上昇されます。複雑なビジネス・システムを分解と同等、それは、分散システムの異なる機能に分離されます。

画像

特長:

1.明らかに相互に調整する解決策を提供きめ細かい成分の責任の範囲を定義します。

2.各コンポーネントは、責任の小さな面積を有し、完全に独立した配置です。

3. Aマイクロサービスは、複数のアプリケーションで再利用することができるはずです。

4. HTTPとJSON(JavaScriptオブジェクト表記)サービス消費者とサービスプロバイダとの間のデータ交換のためのこのような軽量の通信プロトコルを使用します。

責任の分野における5.明確な小さな開発チーム。

外部アプリケーションオブジェクトとの関係ではなく、互いからオブジェクトのインスタンス化コード内にハードコーディングの6 DIフレームワーク(例えば、スプリング)、契約により、ユーザ(及び注釈)を可能にします

利点:

1.柔軟性 - ライン速度に速い送達速度即時ソフトウェア更新ソフトウェア、中間スイッチシームレス。

2.高性能、分散型マルチサービスは、リソースをつかむしません。

3.可伸缩性-可以根据业务场景的多少,在不同时间段进行快速横向扩充服务器,在小业务场景下,收缩服务器供其他使用;

4.有弹性-蝴蝶效应失效,不会有这牵一发而动全身的场景;

总结=小型的、简单的和解耦的服务=可伸缩的、有弹性的和灵活的应用程序

二、微服务与云的关系

为什么说微服务之间和硬件无关,能够做到快速部署应用呢?关键是虚拟化技术。

容器技术:将Docker容器(或等效的容器技术)部署

以弹性的概念为中心-做到快速部署、快速应用的目的;

三、微服务模式

画像

1.Spring Boot是微服务实现中使用的核心技术,简化构建基于REST的微服务的核心任务;

2.Spring Cloud Config集中式服务来处理应用程序配置数据的管理,应用程序配置数据与部署的微服务完全分离;

3.Spring Cloud服务发现,开发人员可以从客户端消费的服务中抽象出部署服务器的物理位置(IP或服务器名称);

4.Spring Cloud与Netflix Hystrix和Netflix Ribbon

Netflix Hystrix库,开发人员可以快速实现服务客户端弹性模式,如断路器模式和舱壁模式;

Netflix Ribbon项目简化了与诸如Eureka这样的服务发现代理的集成,但它也为服务消费者提供了客户端对服务调用的负载均衡;

5.Spring Cloud与Netflix Zuul,Netflix Zuul项目为微服务应用程序提供服务路由功能。Zuul是代理服务请求的服务网关,确保在调用目标服务之前,对微服务的所有调用都经过一个“前门”。通过集中的服务调用,开发人员可以强制执行标准服务策略,如安全授权验证、内容过滤和路由规则。

6.Spring Cloud Stream轻量级消息处理集成到微服务中的支持技术,使用异步事件,快速将微服务与消息代理进行整合,如RabbitMQ和Kafka;

7.Springクラウドスルースは、HTTPチャネル呼とにアプリケーション(RabbitMQの、アパッチカフカ)によって使用されるメッセージに組み込ま一意の追跡識別子を可能にします。アプリケーションを介してトランザクションフローの異なるサービスに開発を可能にする(時々アソシエーションIDまたはトラッキングIDと呼ばれる)トランザクションを追跡するために、これらの追跡番号。

ロギングツール重合技術(例えばPapertrail)と追跡ツール(例えばZipkin)が結合するとき、真のパワーを表示します。Papertailは、データベースクエリに異なるマイクロリアルタイムサービスからログ集約のためのクラウドベースのロギングプラットフォームです。Zipkin春クラウドスルースは、生成されたデータを取得し、開発者は、単一のトランザクションが関係するサービスコールのプロセスを可視化することを可能にすることができます。

8.Springクラウドセキュリティは、認証と認可のフレームワークであり、あなたがサービスとどのような彼らがサービスを行うことができますにアクセスできるユーザーを制御することができます。春のクラウドセキュリティは、トークンに基づいており、トークンが認証サーバによって発行されたサービスが相互に通信できます。各サービスの呼び出しを受信すると、HTTPが利用者の身元やサービスへのユーザーアクセスを確認するために提供さトークンを呼び出して確認することができます。

春のクラウドセキュリティはJSONウェブトークンをサポートしています。JSONウェブトークン(JWT)標準を提供するために作成されたトークンとして標準化フレームワークのOAuth2トークンフォーマット、およびデジタル署名を作成します。

9.docker「ビルドおよび展開」を実現するためのコードを供給パイプラインは、開発者はトラヴィスCIとドッカーこれら2つのツールを使用する必要があり、前者はサーバーイメージはマイクロサービスが含まれて構築することができ、ビルド・ツールとして使用することができます。

おすすめ

転載: www.cnblogs.com/wang3680/p/11820440.html