web-dev-qa-db-ja.com

マイクロサービスとMINIXマイクロカーネルの比較

マイクロサービスとは何かを理解しようとしていますが、MINIXのマイクロカーネルアーキテクチャは良いアナログのようです。 (私はシステムエンジニアです。)私の理解では、

  • マイクロサービスはユーザー空間ドライバーのようなものです

そのアプリケーションはカーネルにすべての作業をするように要求しません。代わりに、さまざまなサービス(ドライバー)にリクエストを送信して、最終的にジョブを完了させます。サービスがクラッシュした場合、それを再起動するだけで簡単に元の状態に戻すことができます。そして、他のサービスは効率的ではありません。

  • マイクロサービスは通信オーバーヘッドを追加します

追加のIPCが必要なため、より多くのリソースを必要とするユーザースペースドライバーのように。マイクロサービスは、より多くのHTTP /その他のプロトコルリクエストを送信するため、他のサービスに機能を要求することができます。

  • マイクロサービスは、ダウンタイムなしで部分的にアップグレードできます

MINIXのように、再起動せずにEXT2ドライバーをアップグレードしてEXT4もサポートすることができます。マイクロサービスを使用すると、一部をアップグレードしながら、他の部分を適切に実行できます(要求が遅れる可能性がありますが、一体です)。

  • マイクロサービスはHTTPを話す必要はありません。

DBus(BSD、Linux、MINIXなどのオープンソースUNIXで使用される超低レイテンシRPC)のようなものも、マイクロサービスの構築に使用できます。

私の比較は公正ですか?何か問題がありましたか?

1
Mary Chang

あなたのアナロジーは興味深く、正しい方向に向かっています。

マイクロサービスはユーザー空間ドライバーのようなものです

はいといいえ:

  • はい、 ユーザーモードドライバー のように、マイクロサービスは独自の小さな独立したプロセスで独立した機能を提供します。 Minixドライバーは、独立したプロセスとして実行され、そうでなければモノロティックカーネルの一部となる(または少なくとも)機能を提供します。
  • いいえ、ユーザーモードドライバーはマイクロカーネルの周囲に構築されているためです。マイクロカーネルを削除すると、アーキテクチャ全体が役に立たなくなります。マイクロサービスアーキテクチャは、中心的なコンポーネントの周りの星ではなく、メッシュです。すべてのマイクロサービスには独自の価値があります。それらのいずれかをシャットダウンしても、何らかの(少ない)価値を提供するシステム全体が残るはずです。
  • いいえ。マイクロサービスを使用してスケーリングできるため、同じサービスの異なるマシンで複数のインスタンスを実行できます。スループットを上げるために、並列2キーボードドライバーで実行することはないと思います。

マイクロサービスは通信オーバーヘッドを追加します

はい、それはMinixカーネルのように多くのメッセージパッシングです。ただし、マイクロサービスのAPIは、より高いレベルの抽象化である可能性があるため、より複雑で、より複雑なタイプに基づいている場合があります。通信オーバーヘッドは、デバイスドライバーを備えたOSマイクロカーネルに慣れているものよりも重要になります。 (ユーザーモードとカーネルモードを切り替えるためのオーバーヘッド は、MINIXが主流にならなかった理由の1つでしたが、無視できます。比較)。

マイクロサービスは、ダウンタイムなしで部分的にアップグレードできます
マイクロサービスはHTTPを話す必要はありません。

はい、正確に

4
Christophe

あなたの比較は適切ですが、それはあなたがトピックを深く調べて、それが正しいことを確認したからです。両方の概念が呼ばれる "micro-X"であるという単なる事実は、非常に誤解を招く可能性があり、多くの場合それは間違いです。

0
Kilian Foth