2017-08-30 4 views
0

私たちは、2つの異なるマイクロサービスカスタマーサービスと注文サービスを持っています。顧客サービスは、顧客に関する情報、すなわち名前、DOBなどを格納する。注文サービスは、顧客が発注した注文、すなわち注文番号、費用などを管理する。これは顧客特有の参照/ IDを注文サービスに渡す最良の方法である。マイクロサービス渡しエンティティID GUIDまたはユニークコード

解決策1: カスタマーIDは、カスタマーサービスで一意にGUIDです。 カスタマーサービスにおけるビジネス/ヒューマンフレンドリーユニークなコードを生成し、サービス

ソリューション3注文するためにそれを渡します:他 何かこれは注文サービス

ソリューション2に渡されるのですか?

+0

人間にやさしいIDを使用する場合は、人間によってそれらをチェックして生成するプロセスが必要です。それは価値があります? –

+0

「CustomerID」と「CustomerName」/「Description」を含む値オブジェクトを使用するほうが、ほんの少し簡単になります。 YMMV –

+0

@EbenRouxそれらを同期させずに値として扱おうとしない限り。 – plalx

答えて

5

私はあなたに最初のオプションをお勧めします。それは、他のコンテキストで使用されているのと同じIDです。このように、参照を共有するためだけに何かを作成する必要はありません。

実際のIDではなく生成されたキーを共有する理由は何ですか?もしそうなら(あなたはこれについて何も言っていません)、あなたが共有したくないものを "保護"するので、2番目の方が良いでしょう。これには、生成されたキー(必要な場合)からユーザーを取得する方法がCustomerMicroservice上に必要です。

編集:で

「理由は」私がいないIDが必要操作を意味する(これは少し奇妙になります)しかし、例えば、ユーザは、コールセンターと対話するため、その情報にアクセスする必要があります。この場合、人間が判読できる価値はGuidよりはるかに優れています。