マイクロサービスの選択（ 抜粋）


###前言
技術の選定には多くの基準があります。その中で次の3つが最も重要です。

####1.生産レベル

私たちが選んだ技術スタックは実際の業務問題と生産抵抗量を解決するためのもので、POCやDemoの展示を簡単にするのではなく、生産レベル、運営・維持が可能で、成熟・安定した技術が優先です。

####2.一線のインターネット会社の着地製品

私達はできるだけ第一線のインターネット会社で着地して、しかもコミュニティ内で良好な口コミの製品を形成することを採用して、それらはすでにこれらの会社で流量の衝撃を経て、ピットはすでにほぼ平らに埋められて、しかもコミュニティに受け入れられて1つの良好なコミュニティの生態を形成します。

####3.オープンソースコミュニティの活性度

Github上のstarsの数は重要な指標であると同時に、コードとドキュメント更新頻度（特に近年）を参考にして、これらの指標は直接にソース製品のコミュニティ活性度または生命力を反映している。また、業務量やチーム規模の異なる会社については、技術選定基準が異なる場合が多く、起業家の技術選定やBATクラスの技術選定基準が全く異なる場合があります。

以上の3つのポイントは、自己のマイクロサービスのインフラストラクチャは、いくつかの製品は、実際には、クラウドサービスを直接使用することができます雲のサービスを構築し、使用すると、それぞれの利点がありますが、実際のシーンによると、クラウドサービスの使用によって、実際の選択を行うことができます。

###•サービスフレームの選択

Springベースのフレームワークは本質的にRESTfulフレームと考えられ、シーケンスプロトコルは主にテキストベースのJSONを採用し、通信プロトコルは一般的にHTTPに基づく。RESTfulフレームは自然に言語横断をサポートしています。どの言語でもHTTPクライアントがあれば、呼び出しにアクセスできますが、クライアントは普通自分でPAyloadを解析する必要があります。現在SpringフレームもSwaggar契約プログラミングモデルをサポートしており、契約に基づいて各種言語の強いタイプのクライアントを生成することができます。

###•運転時サポートサービス選択

運行時のサポートサービスは主にサービス登録センター、サービスルートゲートウェイと集中中国式配置センターを含みます。

サービス登録センターは、Spring Cloudシステムを採用すると、Eurekaを選択し、EurekaはNetflixで大規模生産検証を行い、データセンターを横断することをサポートします。クライアントはRibbonに協力して、柔軟なクライアントソフトロードを実現できます。

サービスゲートウェイは、Spring Cloudシステムを採用するとZuulを選択し、ZuulはNetflixで大規模生産検証を行い、柔軟なダイナミックフィルタスクリプト機構をサポートします。

配置センター、Apolo配置センター、シートリップで生産レベルの検証を経て、高い利用可能性を備えています。配置はリアルタイムで有効になり、監査とバージョン化を配置し、多環境多クラスターサポートなどの生産レベルの特性を配置します。

###•サービスモニタオプション

主にログ監視、チェーン監視、Metrics監視、健康診断、警報通知などが含まれます。

ELKは現在ログ監視の標準装備と考えられています。機能が充実していて、開梱と使います。ElastalertはELKに対する警告通知モジュールです。

現在のコミュニティの主流はCATです。コメントと国内の複数のインターネット会社では、着地事例があり、生産性と治理能力が優れています。また、CATは警報モジュールを持っています。

Metrics監視は主に時系列データベース（TSDB）に依存しており、現在の成熟した製品はStumble Upon社のオープンソースであるHBaseベースのOpenTSDBであり、OpenTSDBは分散式能力を持っており、横方向に拡張でき、比較的重いので、中大規模企業に適しています。

また、Sensuなどの一般的な健康診断や警告製品もあります。様々なサービス（例えば、spring bootが暴露した健康診断のポイント、時系列データベースのmetrics、ELKのエラーログなど）に対して柔軟な健康診断（check）をカスタマイズし、ユーザーはcheck結果に対して柔軟な警告通知策を設定することができます。

###•サービスフォールトタイプ

Java技術スタックに対して、NetflixのHystrixは溶断、分離、限流、降級などの能力をコンポーネントにパッケージ化しています。どのような依存呼び出し（データベース、サービス、キャッシュ）もHystrix Commandの中に入れられます。カプセル化後、自動的に許容範囲を備えています。

###•バックグラウンドサービスの選択

バックグラウンドサービスは、主として、メッセージシステム、分散キャッシュ、分散データアクセス層、およびタスクスケジュールシステムを含む。バックグラウンドサービスは比較的成熟した分野であり、多くのオープンソース製品は基本的に開けばすぐ使えます。

メッセージシステムは、具体的なシーンに応じて、Kafkaの監視と治理能力を適切にカスタマイズし、Kafkaに基づいて業務シーンに適した企業レベルの治理能力を実装することができる。

キャッシュ管理は、クライアントの直接接続モードを採用する傾向があり、Sohtvオープンソースのcacheccloudは、監視統計、ワンタッチオン、自動障害転送、オンライン伸縮、自動化された運行維持などの生産レベルの管理能力を提供し、また、文書も比較的豊富である。

分散型データアクセス層は、Java技術スタック、オープンソースのsharrdingjdbcを採用し、デポジトリ論理はクライアントjdbc driverにおいて、クライアント直結データベースは比較的簡単で軽量である。

タスクスケジューリングシステムは、オープンソースのxl-jobで、簡単な量の配置ができます。

###•サービス安全選定

マイクロサービスのセキュリティ認証システムのブロックについては、現在業界でOAuthやOpenID connectなどの標準契約がありますが。

プロジェクトの重要なステップは以下の通りです。

1.OAuth 2.0とOpenID Connect標準プロトコルをサポートするライセンスサーバを使用する。

2.APIゲートウェイを単一アクセス入口として使用し、安全対策を統一的に実現する。

3.お客様は、マイクロサービスにアクセスする前に、まずライセンスサーバを通じて登録してaccess tokenを取得し、その後、access tokenを要求と一緒にゲートウェイに送信します。

4.ゲートウェイはaccess tokenを取得し、サーバーに権限を与えてtokenを検査し、同時にtoken変換をしてJWT tokenを取得する。

5.ゲートウェイはJWT Tokenを要求と共にバックグラウンドマイクロサービスに転送する。

6.JWTには、認証認証認証などの用途として、バックグラウンドに伝達されるマイクロサービスと、マイクロサービスの間で伝達されるユーザセッション情報を格納することができる。

7.各マイクロサービスはJWTクライアントを含み、JWTを解読し、ユーザセッション情報を取得することができる。

8.方案全体において、access tokenはby reference tokenであり、ユーザ情報を含まないで直接にネットに露出することができる。JWT tokenは、ユーザ情報を含むことができても、パブリックネットワークに露出しないby value tokenである。

###•サービス配置プラットフォームの選定

軽量級の容器ベースのサービス展開プラットフォームは主に容器資源のスケジューリング、発表システム、ミラーリング管理、資源管理、IAMなどのモジュールを含みます。

簡単なリリースプロセスは以下の通りです。

1. アプリケーションはCI統合後にミラーを生成し、ユーザーはミラーをミラー治理センターにプッシュする。

2. ユーザーは資産管理センターで発行を申請し、アプリケーションを記入し、割当額に関する情報を発表し、承認の承認を待つ。

3. 承認を発表し、開発者はコンソールをリリースしてアプリケーションを公開する。

4. 発表システムは資産管理センターを検索して発行規格情報を取得する。

5. システムが容器雲に対して起動容器実例指令を発行する。

6. 容器雲は鏡像治理センターから鏡像を引き出して容器を起動する。

7. 容器内サービスが起動したら、サービス登録センターに登録してから、定期的な心拍数を維持します。

8. ユーザーはシステムをリリースしてサービス登録センターを呼び出して流量を調整し、ブルーグリーン、カナリアまたはグレースケールのリリースなどのメカニズムを実現する。

9. ゲートウェイと内部マイクロサービスクライアントは、定期的にサービス登録センター上のサービスルーティングテーブルを同期させ、トラフィックを負荷等化戦略に従って新しいサービスインスタンスに配信する。

また、継続的に配信されるライン（CD Pipeline）もマイクロサービスのリリースの重要な一環であり、これは主に研究開発プロセスと関連しており、一般的にカスタマイズが必要であり、ミラーコントロールセンターには軽量級の治理プロセスをカプセル化する必要があります。例えば、環境テストのイメージを通してのみUAT環境にアップグレードすることができます。UAT環境テストの鏡像だけが生産環境にアップグレードされ、流水ラインにいくつかの品質ゲートを設置することによって、高品質のアプリケーションが生産に引き渡されることを保証します。