早速、本題に入りましょう。
単一の軽量サービスは通常、別個のマイクロサービスです。マイクロサービスは特定の機能の実装に焦点を当てます。たとえば、ログイン システムはユーザー ログインのみに焦点を当てます。アスペクト関数の実現は、 が単一の責任を持ち、すぐに使用でき、独立して実行できることを強調します。マイクロサービス アーキテクチャ システムは、ビジネスに応じてサービス ユニット モジュールを分割し、単一システムの欠点を解決し、複雑化するビジネス ニーズに対応する分散システムです。 Martin Fowler: 現時点では、マイクロサービス業界に対する統一された標準の定義はありません。しかし、一般的に言えば、マイクロサービス アーキテクチャは、単一のアプリケーションを一連の小さなサービスに分割することを推奨するアーキテクチャ パターンまたはアーキテクチャ スタイルです。各サービスは独自のプロセスで実行され、サービス同士が連携・調整してユーザーに究極の価値を提供します。サービス間の軽量通信を使用します。各サービスは特定のビジネスを中心に構築されており、実稼働環境に個別にデプロイできます。さらに、統合され集中化されたサービス管理メカニズムは可能な限り避けるべきです。
平たく言えば:
マイクロサービスは、単一の責任を持つ独立したサービス アプリケーションです。 intellij idea ツールには、maven を使用して開発された独立したモジュールがあり、具体的には、単一の専門的なビジネス ロジックを処理するために springboot を使用して開発された小さなモジュールであり、各モジュールは 1 つのことだけを実行します。
マイクロサービスは、サービスのサイズを強調し、特定の点に焦点を当て、具体的には特定の問題を解決したり、対応するサービス アプリケーションを実装したりします。これはアイデアのモジュールとみなすことができます。
たとえば、歯に違和感を感じて病院に行く場合、歯医者に行きます。頭が痛ければ脳科に行きます。各部門はマイクロサービスであり、各機能はサービスです。
#2. マイクロサービスはどのようにして独立して通信するのでしょうか?
同期通信: RPC リモート プロシージャ コール経由の dobbo、REST インターフェイス json コール 経由の springcloud など。非同期: メッセージ キュー (RabbitMq、ActiveM、Kafka など)。
3. SpringCloud と Dubbo の違いは何ですか?
#まず第一に、これらはすべて 分散管理フレームワーク です。
ダボは バイナリ送信であり、占有帯域幅が少なくなります。 SpringCloud は http 送信 を使用しており、帯域幅はもう少し多くなります。http プロトコルを使用する場合、通常は JSON メッセージ を使用するため、消費量が多くなります。
Dubbo 開発は難しく、依存する jar パッケージには多くの問題があります。大規模なプロジェクトは解決できません。 SpringCloud のサードパーティの継承は ワンクリックで生成でき、自然に統合されます。
SpringCloud インターフェイス プロトコルの合意は比較的緩いため、無秩序なインターフェイスのアップグレードを制限するには強力な管理措置が必要です 。
最大の違い: Spring Cloud は、Dubbo の RPC 通信を放棄し、HTTP ベースの REST メソッドを採用します。
厳密に言えば、これら 2 つの方法にはそれぞれ長所と短所があります。後者はサービス呼び出しのパフォーマンスをある程度犠牲にしますが、前述のネイティブ RPC によって引き起こされる問題も回避します。さらに、REST は RPC に比べて柔軟性が高く、サービスプロバイダーと呼び出し元は紙の契約のみに依存し、コードレベルでの強い依存関係がないため、急速な進化を重視するマイクロサービス環境に適しています。 4. SpringBoot と SpringCloud の関係は?
SpringBoot: 単一の個別のマイクロサービスを 迅速かつ便利に開発することに焦点を当てます (マイクロに焦点を当てます); SpringCloud: グローバルなマイクロサービスの調整とガバナンス SpringBoot が開発した個々のマイクロサービスを組み合わせて管理するフレームワーク (マクロを中心);
SpringBoot は SpringCloud から独立して使用できますが、SpringCloud SpringBoot から離れることはできず、依存関係となっています。
5. サーキットブレーカーとは何ですか?サービスのダウングレードとは何ですか?
サービスヒューズの機能は家庭用ヒューズと同様で、サービスが利用できなくなったり、応答がタイムアウトになったりしたときに、システム全体の雪崩を防ぐために使用されます。 、サービスへの通話を一時的に停止します。
サービスの低下はシステム全体の負荷状況に基づいて考慮されており、負荷が比較的高くなる一部の状況では、特定の機能(ビジネス)を妨げるため、過負荷または応答が遅い場合、一部の非コアインターフェイスおよびデータに対するリクエストを内部で一時的に破棄し、事前に用意されたフォールバックエラー処理情報を直接返します。このようにして、損失の多いサービスが提供されますが、システム全体の安定性と可用性が保証されます。
# 6. マイクロサービスの長所と短所は何ですか?プロジェクトで遭遇した落とし穴について教えてください。
利点: 疎結合、単一のビジネス機能に焦点を当て、開発言語に依存しないため、チームの規模が縮小されます。開発中は、ビジネスについてあまり知る必要はなく、便利で集中化され、小さく洗練された現在の機能に集中するだけで済みます。マイクロサービスの 1 つの機能が破損しても、他の機能には大きな影響を与えず、問題をすぐに特定できます。マイクロサービスは現在のビジネス ロジック コードのみに焦点を当てており、html、css、またはその他のインターフェイスと混合されません。テクノロジーに合わせて柔軟に対応できるし、独立したほうが気楽です。 欠点: サービスの数が増えると、管理が複雑になり、展開が複雑になり、サーバー要件が増加し、サービス通信と通話の負担が増加し、運用とメンテナンスが増加します。エンジニアへのプレッシャーが増大し、人的資源が増加し、システム依存性、データの一貫性、パフォーマンスの監視が強化されています。 7. エウレカと動物園の飼育員の違いは何ですか?
zookeeper は、CP 原則、強整合性、およびパーティション フォールト トレランスに基づいています。 eureka は AP の原則 可用性とパーティション許容度 です。マスター ノードに障害が発生すると、ZooKeeper は残りのノードからマスター ノードを再選択しますが、時間がかかりすぎます。最終的には復元できますが、マスター ノードを選択するとサービスが使用できなくなります。耐えられない。 eureka 内のすべてのノードは同等です。 1 つのノードがハングアップしても、他のノードは通常のサービスを維持します。
#8. マイクロサービスについてどのようなテクノロジー スタックを知っていますか? 1 つか 2 つ挙げてください。
##マイクロサービスエントリー 実装技術 サービス開発 SpringBoot、Spring、SpringMVC サービスの構成と管理 NetfixのArchaius、AlibabaのDlamondなど サービスの登録と検出 Eurka、Consul、Zookeeper など サービス呼び出し Rest (サービス通信)、RPC (ダボ)、GRpc サービスサーキットブレーカー Hystrix、Envoyなど 負荷分散 Nginx、Ribbonなど サービス インターフェイス呼び出し (クライアント簡易ツール) Fegin など #メッセージ キュー Kafka、RabbitMQ 、ActiveMQ など サービス構成センター管理 SpringCloudConfig、Chef など サービス ルーティング (API ゲートウェイ) ) Zuul など サービス監視 Zabbix、Nagios、メトリクス、Spectator など フルリンクトラッキング Zipkin、Brave、Dapperなど サービスデプロイメント Docker、OpenStack、Kubernetesなど. データ フロー操作開発パッケージ SpringCloud Stream (メッセージを送受信するために Redis、Rabbit、kafka などでカプセル化されています) イベント メッセージ バス Spring Cloud Bus 9. マイクロサービス アーキテクチャとは何ですか?
マイクロサービスとは何かを以前に理解していれば、基本的にはすでにマイクロサービス アーキテクチャを理解していることになります。
マイクロサービス アーキテクチャは、マイクロサービスを管理、統合、適用することです。マイクロサービス アーキテクチャはマイクロサービスに依存しており、マイクロサービスに基づいています。
例: マイクロサービスとは何かについては上にリストされています。病院では、各部門が独立したマイクロサービスであるため、院長が次の部門を管理できるのと同じように、病院は大規模なマイクロサービス アーキテクチャです。マイクロサービスアーキテクチャでは主にこの機能を持っています。
以上がマイクロサービスの面接に関する次の 9 つの質問のうち、いくつ答えることができますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。