2

私は現在 zeromq を試しており、分散サービス指向アーキテクチャを構築しています。各サービスは、共通データベースのデータを操作する必要があります。

最善の方法は何ですか:

  • モデルを定義するすべてのサービスで共有ライブラリを使用します。各サービスはデータベースに接続します
  • データベースを抽象化するデータ サービスを使用します。他のすべてのサービスは、このサービスを介してデータにアクセスします。データは、プロトコル バッファを使用して送信できます。

2 番目のオプションの方がきれいに思えますが、データへの要求ごとにネットワーク通信が 1 つ増えるため、パフォーマンスへの影響が心配です。

将来的には、データベース以外のデータ ソースが存在する可能性があります。そのため、私は 2 番目のオプションを念頭に置いていましたが、それを過度に設計することを恐れています。

4

1 に答える 1

3

あなたは「正しいことをする」こと、ゼロmqを起動する分散サービス指向システムを構築することを行っているので、データベースの前にサービスを配置する必要があります。

パフォーマンスに関しては、時期尚早の最適化が諸悪の根源であるという Knuth の提案を思い出してください。パフォーマンスの問題が発生することが事前にわかっていない限り、よりクリーンなオプションを使用してから、必要に応じて最適化することをお勧めします。また、データベースを抽象化することで、将来必要になった場合に (たとえば、分散、キャッシュなどを通じて) より簡単にスケーリングできるようになります。

そうは言っても、検討している他のオプションが共有ライブラリであり、それが実装するためのより迅速なオプションでもあると仮定すると、いつでもその方法で開始して後で変更できます-共有ライブラリをサービスで動作するように変更するだけですデータベースに直接ではなく、すべてのサービスに問題がないはずです。

于 2011-03-27T15:46:24.910 に答える