spring-boot学習ノート一:マイクロサービスとspring-boot

4462 ワード

spring-boot学習ノート一:マイクロサービスとspring-boot
  • マイクロサービスは何ですか?
  • マイクロサービス
  • spring-bootはなぜマイクロサービスの開発に適していますか?
  • spring-bootは何ですか?
  • spring-bootの一部の利点
  • spring-boot、spring、springMvcの違い
  • spring-bootとマイクロサービス
  • 参考文献
  • マイクロサービスとは何ですか?
    サービス
    勉強する前に、マイクロサービスとスプリングブックとマイクロサービスの関係をまず調べてください.
  • マイクロサービスの概要:マイクロサービスは、単一の責任と機能に焦点を当てた小型機能モジュールをベースに、複雑な大型アプリケーションをモジュール化し、各機能モジュールは言語無関係のAPIセットで相互通信するソフトウェアアーキテクチャのスタイルである.つまり、マイクロサービスは単体のアプリケーションを業務機能に基づいてコンポーネント化し、コンポーネントとコンポーネントの間には明確な境界がありますが、互いに関連しています.コンポーネントとコンポーネントの間では、プログラミング言語によって制限されることなく、異なるプログラミング言語を使用することができる.2014年、Martine FowlerはJames Lewisと共同でマイクロサービスの概念を提出し、マイクロサービスは単体アプリケーションで構成される小サービスであり、自分は自分のスケジュールと軽量化処理を持っており、サービスは業務機能によって設計され、全自動的に配置され、彼とサービスはHTTP APIを使って通信する.同時にサービスは最小規模の集中管理(例えば、Docker)能力を使用し、サービスは異なるプログラミング言語とデータベースなどのコンポーネントで実現することができる.マイクロサービスのもう一つのコントラストは、単体アプリケーションです.単一のアプリケーションは、1つのアプリケーション内に必要なすべてのサービス機能が含まれていることを示しており、主なサーヴァントアーキテクチャまたはマルチレベルアーキテクチャ(N-tier)を使用して実現されており、分布式アプリケーションでも実現されているが、単一のアプリケーション内では、それぞれのトラヒック機能は切り離せない.単一のアプリケーションを拡張するには、アプリケーション全体を新しい演算リソース(例えば、仮想マシン)に配置する必要がありますが、実際にはアプリケーションの中で最も資源を食べ、演算リソースが必要なのは、ある業務部分(例えば、分析レポートや数学的アルゴリズム分析など)だけです.そのため無形に大量の資源の浪費の現象があります.興味のある仲間はマーティン・フォックスのマイクロ・サービスと単体アプリケーションの違いを詳しく紹介します.
  • マイクロサービスアーキテクチャのメリット:個人的には次の4つがあり、その他の具体的な利点は開発中にゆっくりと体得する必要があります.
  • 各マイクロサービスコンポーネントは、単純で柔軟であり、独立して配置することができる.
  • マイクロサービスの間は松結合であり、マイクロサービスの内部は高凝集であり、各マイクロサービスが必要に応じて容易に拡張される.
  • マイクロサービスアーキテクチャは言語ツールと無関係であり、カード送信者は言語とツールを自由に選択し、より効率的に言語目標を達成することができる.
  • マイクロサービスアプリケーションの4つの設計原則
  • AKF分解原則AKF拡張立方体は、AKFという会社の技術専門家が抽象的にまとめた応用拡張の3次元である.理論的にはこの3つの拡張モードに従って,1つの単量体系を無限に拡張できる.X軸:水平複製という意味で、よく理解しています.つまり、単体システムはいくつかの例を実行して、クラスタに負荷バランスを付けるモードを作ります.Z軸:似たようなデータパーティションに基づいています.例えば、インターネットでのタクシーの使用が突然になったり、ユーザー数が急増して、クラスタモードが耐えられなくなりました.ユーザーが要求した地域によってデータパーティションを行います.北京、上海、四川などにいくつかのクラスターを作ります.Y軸:私たちが言っているマイクロサービスの分割パターンとは、異なる業務に基づいて分割することです.
  • 前後端分離の原則は、簡単に言えば、先端と後端のコード分離、つまり技術的に分離することです.私達が推奨するモデルは直接物理的に分離する方法で配置し、より徹底的な分離を促進することが望ましいです.前のサーバーテンプレートの技術を続けないでください.例えばJSPはJava JS HTML CSSを一つのページにまとめておくと、やや複雑なページは維持できません.この分離モードの方法にはいくつかの利点があります.前後の技術分離はそれぞれの専門家によってそれぞれの分野を最適化することができます.分離モードでは、前と後の相互作用インターフェースがより明確になり、インターフェースとモデルが残り、後端のインターフェースが簡潔で明瞭で、維持が容易になる.フロントエンドのマルチチャネル集積シーンがより容易に実現され、バックエンドサービスは変更する必要がなく、統一されたデータとモデルを採用して、フロントエンドのウェブUIモバイルアプリなどのアクセスをサポートすることができる.
  • 無状態サービスは無状態サービスに対して、まず何かの状態を言います.もし一つのデータが複数のサービスに共有されなければ、一つの取引が完了できないなら、このデータは状態と呼ばれます.さらにこの「状態」データに依存するサービスを有状態サービスと呼び、逆に無状態サービスと呼ぶ.この無状態サービスの原則は、マイクロサービスアーキテクチャでは存在状態が許されないということではなく、実際の意味は、ステータスのあるサービスを無状態のコンピューティングサービスに変更することであり、状態データは対応する「状態データサービス」に移行することである.
  • Restful通信スタイルは原則として「無状態通信原則」であるべきです.ここでは、最適なRestful通信スタイルを実践することを直接に紹介します.彼は多くのメリットがあります.無状態協定HTTPは、先天的な優位性を備えており、拡張力が強いです.例えば、安全な暗号化が必要なのは、既成の成熟したシナリオのHTTPSが利用可能であるということである.JSON新聞は序文化され、軽くて簡単です.人と機械は全部読めます.学習コストが低く、検索エンジンが友好的です.言語は関係なく、各人気言語は成熟したRestful APIフレームを提供しています.他のRPCフレームの生態に対してもっと完璧です.もちろんいくつかの特殊なビジネスシーンでは、thrift、avro-rpc、grpcなどの他のRPCフレームを採用する必要があります.ほとんどの場合はRetsfulで十分です.
  • spring-bootはなぜマイクロサービスの開発に適していますか?
    まず、微サービスとspring-bootは本質的には何の関係もありません.国内ではなぜ多くの人がspring-bootを使って微サービスを開発していますか?
    spring-bootは何ですか?
    spring-bootは、springアプリケーションの初期構築を簡略化し、開発過程を特定の方式で構成するために、独立したspring引用プログラムmainを創立して実行し、tomcatを埋め込んで、warファイルを配置する必要がない.また、Mavenの配置も簡略化しました.約束が配置より大きい方式を採用して、繁雑に行って簡単にする.just runは独立した製品レベルのアプリケーションを作成することができます.基本的には新しいものを応用していません.プロジェクトの構築、開発、配置を簡単にする.
    spring-bootの部分的なメリット
  • は、独立して動作するspringプロジェクトと主流フレームの統合を迅速に作成する.
  • にインサートされたrvlet容器を使用して開発されたアプリケーションは、warパッケージに包装する必要がない
  • .
  • ランチャー(starter)の自動依存性とバージョン制御.
  • 大量の自動化構成で、開発が簡略化されました.
  • 準生産環境の実行アプリケーション監視
  • とクラウドコンピューティングの天然統合.
  • spring-boot、spring、sprigMvcは区別します.
    springFrameの最も重要な特徴は注入に依存することである.開発にDIまたはIOCを使用すると、ある程度の上開発松結合の応用が可能です.
    スプリングMvcは、ウェブアプリケーションを開発するための分離方式を提供しています.Displatch Servlet、ModAndViewなどの簡単な概念を使ってウェブアプリケーションの開発を簡略化します.
    spring-bootは原則として新しい技術概念を導入していません.自動配置などを通じて、springFrame、sprigMvcに存在する大量配置の問題を解決しました.
    spring-bootとマイクロサービス
    マイクロサービスは業務面からプロジェクトを分割し、プロジェクトの粒度の区分を重視する.これは一つのプロジェクトが多くのサブプロジェクトに分類されることを意味する.しかし、コンポーネント開発は、展開と維持にいくつかの問題がある.
    Spring-Bootをマイクロサービスの開発フレームワークとして利用して、コード、配置、監視が簡単になります.同時にspring-bootスターターの概念も今のマイクロサービス開発の重要な要素だと思います.
                 ,           。
         、Mr.Hong。     ,     
    
    参考文献
    Microsoft vices
    マイクロサービスの4つの設計原則と19の解決策
    ウィキペディア
    SpringBootはなぜマイクロサービスの開発に適していますか?