前書き
マイクロサービスの台頭は何年も前からあり、近年では大きな発展の段階に達しています。同社はマイクロサービスに関連する多くのことを行っており、マイクロサービスに関連するいくつかのコンテンツも読んだ。さて、再び「マイクロサービス」という3つの言葉を知りましょう。やっと少しはわかりました。
勉強中に見たもの
- マイクロサービスの設計
- クラウドネイティブ分散ストレージの基礎:etcdの詳細分析
- Dockerテクノロジーの紹介と実際の戦闘
- 1日5分でKubernetesをプレイ
- 風を聞く
- マイクロサービスを0から学ぶ
理由
マイクロサービスが表示されるのはなぜですか?これはインターネットの発展の必然的な結果だと思います。
以前にIOS 7レイヤーモデルがなかったときと同じように、プログラマーがプログラミングを行うとき、7レイヤーモデルが自分で行うことを実行する必要がありました。すべてのプログラマーがこれを実行する必要があり、多くのリソースを浪費し、誰もがそれを実行しました。効果は完璧とは言い難い。その後、IOSの7層モデルが登場し、統一された仕様によりプログラマーは反復的なタスクを完了することができ、開発効率が大幅に向上しました。
この観点から、マイクロサービスは同じことを行います。
インターネットの開発の数十年後、本社は巨大で多くの問題が発生し、すべての企業がこれらの問題に遭遇する可能性があります。多くの場合、誰もが車輪を再発明しており、多くの場合、それはあまり良くないかもしれません。優れた実践を吸収することに基づいて、専門家はマイクロサービスの開発を促進するために彼らの広範な知識と組み合わされました。
現時点では、マイクロサービスの統一標準化は難しいです。まず、開発段階全体の観点から見ると、まだ初期段階であり、関連するマイクロサービスの人材はそれほど多くありません。2つ目は、企業ごとに事業環境が異なり、完全に統一することは困難です。しかし、マイクロサービスは実際には大草原の火になっています。近い将来、インターネット会社を立ち上げるのがより簡単になるかもしれません。マイクロサービスはTCP / IPのようになり、開発者には完全に透過的です。ビジネスロジックの開発に焦点を当てるだけですが、当然のことながら、この段階まで開発するにはプログラマーの言葉が必要です。
このようなユニバーサルマイクロサービスプラットフォームの開発も、起業家にとって非常に良い方向性です。
したがって、現代のプログラマーとして、マイクロサービスを学ぶことは依然として必要であり、これは避けられない傾向であり、あなた自身の競争力を高めることもできます。ある日、マイクロサービスがTCP / IPと同じくらい透過的であるとしても、マイクロサービスのコア原則を理解している人はさらに価値があります。結局のところ、それらの人だけがその時点でいくつかの魔法の問題を解決できます。
システム
マイクロサービスの水は非常に深く、正確には、深いだけでなく非常に広いです。マイクロサービスには多くのコンテンツが含まれ、各領域を詳細に調査して、この領域の専門家になることができます。
本「マイクロサービスの設計」では、マイクロサービスは次のように定義されています。マイクロサービスは、連携して動作する小規模で自律的なサービスです。
この定義は特に良いものではなく、常にマイクロサービスの範囲を狭めると感じています。
さらに、この文の理解のギャップはかなり大きいです。過去にコメントシステムを持っていたことを覚えていますが、コメントサービス、コメントバックエンド、DB、キャッシュなどは全て独立して配備されていましたが、当時はこのコメントシステムはマイクロサービスだと思っていました。これは100%間違いではありませんが、間違いはありません。
マイクロサービスはシステムのセット全体を表すため、単一の独立したサービスはマイクロサービスのごく一部しか占めていません。
マイクロサービスは主に6つの部分で構成されます
-
サービスの説明
同様のサービスのドキュメントはシンプルですが不可欠です。たとえば、サービス呼び出しで解決する最初の問題は、サービスの記述方法です。たとえば、外部でサービスを提供する場合、このサービスのサービス名は何ですか?このサービスを呼び出すにはどのような情報が必要ですか?このサービスを呼び出すことによって返される結果はどの形式ですか?それを解決するには?これらは、サービス記述によって解決される問題です。
-
レジストリ
サービスインターフェースの説明で次に解決すべき問題は、サービスの公開とサブスクリプションです。つまり、サービス(プロバイダー)を提供し、サービスを呼び出したい外部(コンシューマー)の人々に知らせる方法です。このとき、レジストリと同様の役割が必要であり、サービスプロバイダーは、レジストリが提供するサービスとアドレスをレジストリに登録し、サービスコンシューマーは、レジストリから呼び出されるサービスのアドレスを照会して、リクエストを開始します。
-
サービスフレームワーク
登録センターを介して、サービス利用者はサービスプロバイダーのアドレスを取得でき、アドレスを取得した後、通話を開始できます。ただし、電話をかける前に、次の問題を解決する必要があります。サービス通信にはどのプロトコルが使用されますか?RESTful APIですか、それともgRPCですか?データ送信の方法は?データ圧縮にはどのフォーマットが使用されますか?これらのアクティビティは通常、サービスフレームワークに統合されています。市場には、比較的成熟したオープンソースフレームワークが数多くあります。次のテストは、すぐに開始できるかどうかです。
-
サービスの監視
サービスコンシューマとサービスプロバイダの間でサービスコールを開始できるようになったら、コールを監視して、サービスが正常かどうかを確認する必要があります。一般的に、サービスの監視には、主に、インジケーターの収集、データ処理、データ表示の3つのプロセスが含まれます。監視とは、問題や異常を発見することです。問題をさらに追跡して特定するには、サービスの追跡についてさらに学ぶ必要があります。
-
サービス追跡
サービス呼び出しの監視に加えて、障害を追跡して特定し、最終的に問題に取り組むという目標を達成するために、サービス呼び出しが通過するリンクの各層を記録する必要もあります。サービスの監視と追跡は組み合わせることができますが、それぞれの責任が異なることは明らかです。
-
サービスガバナンス
サービスの監視は問題を見つけ、サービスの追跡は問題を見つけることができ、問題の解決はサービスのガバナンスに依存します。サービスガバナンスとは、一連の方法を使用して、予期しないさまざまな状況下でもサービスコールを正常に実行できるようにすることです。現在のオープンソースサービスフレームワークに関する限り、それらのほとんどにはサービスガバナンスのコンテンツが含まれていないため、この部分では、達成度に応じて、開発者やチームがカスタマイズされた開発を行う必要がある可能性があります。データベースがあるように見えますが、 ER図の説明がなくても、マイクロサービスの使用には影響しませんが、もちろんある場合、それはケーキのアイシングになります。
これらの6つの部分の組み合わせをマイクロサービスと呼びます。次のリンクは私が作成したマインドマップです。マップの一部のコンテンツを完全には学習していません。後でさらに整理します。よければ、このリンクを最初に覚えておいてください。
https://www.processon.com/view/link/5f3952a17d9c0806d41a90a9
学習ルート
マイクロサービスは、現代のインターネット技術のマスターと見なすことができます。私は初心者です。コンテンツをよりよく習得できるように、自分のための学習パスを確立する必要があります。
学習ルートには、いくつかの原則があると思います。
- 何を学び、メモを取るかを見つける
- これまでにたくさんの記事や本を読んだことがあるが、内容を書き留めたことがないので、比較的浅く学んだ気がしますが、内容を消化して書き出すことで、印象を深めることができます。
- 学習する必要があるコンテンツは、k8、Docker、分散などのコアコンテンツである必要があります。100%学習する必要があります
- 学ぶ必要はありません
- 同じプログラムには複数の技術オプションがあります。1つだけ学習してください。たとえば、これはすでに業界標準であるため、サービスオーケストレーションはk8sを調べるだけで済みます。サービス追跡は、ジプキンとスカイウォーキングから1つを選択できます
- 一部のコンテンツは、操作とメンテナンスのレベルに特に偏っています。これは少し理解できるか、まったく理解できない
- マインドマップを継続的に更新して充実させる
- 学習プロセスでは、最終的に基本的なマイクロサービスを構築するための練習が必要です。
現在計画されている学習と再学習のコンテンツは
- k8s
- ドッカー
- Etcd
- GRPC
- ネティ
- ダボ
- ELK
- グラファナ
- カフカ
- スカイウォーキング
- アポロ
- 同じ
実際、これらに加えて、マイクロサービスにはまだ学習すべき多くのコンテンツがあり、将来的には徐々に追加される可能性があります。
データ
やっと
私の記事が気に入ったら、私のパブリックアカウント(プログラマーMala Tang)をフォローできます。
以前の記事のレビュー:
技術
- マイクロサービスについて話す
- TCPパフォーマンスの最適化
- 電流制限の実現1
- Redisは分散ロックを実装しています
- Golangソースコードのバグ追跡
- トランザクションの原子性、一貫性、耐久性の実現原理
- CDNリクエストプロセスの詳細な説明
- ブログサービスが崩壊した歴史
- 一般的なキャッシングテクニック
- サードパーティ決済と効率的に接続する方法
- ジンフレームワークの簡潔なバージョン
- InnoDBロックとトランザクションの簡単な分析
ノートを読む
考え