マイクロサービスアーキテクチャを構築したいと思います。私は、Spring、HibernateなどのJavaテクノロジを使用しています。このシナリオでは、Javaクラスとしてエンティティを持っています。例えば、マイクロサービスにはAエンティティ、BマイクロサービスにはBエンティティなどがあります。したがって、AとBの間に1対多の関係がある場合は、クラスの1つを別のクラスにインポートして宣言する必要があります。マイクロサービスデザインのORMエンティティのパッケージ化
// in A microservice
// need to import class of B like "import com.project.B", but can't
// because, it is different project.
@Entity
class A{
@OneToMany
B b;
}
//in B microservice
@Entity
class B{
}
しかし、マイクロサービス設計のため、それらはすべて異なるパッケージまたはサービスにあります。その中にあるすべてのエンティティを含む共有ライブラリとして別のプロジェクトを作成し、それからすべてのマイクロサービスに組み込む必要がありますか?別の解決策がありますか、それとも解決策ですか?
私はここで同じ懸念に直面していますので、どのように一貫性を制御しておくのですか?モデルに外部キーIDのフィールドがあると思われません。 –
私はそれについて同じ感情を持っています。しかし、それは適切な解決策に見えます。一貫性を保つために、メッセージブローカー(RabbitMQなど)を使用することは良い解決策かもしれません。 この[リンク](https://programmaticponderings.com/2017/05/15/eventual-consistency-decoupling-microservices-with-spring-amqp-and-rabbitmq/)を見ることができます。 –
興味深い読み込みではなく、 "外部キー属性"をb_idにする代わりに、クラスAとの関係を持っていて(完全には実装されていないかもしれない)、publish-suscribeイベントキューとの一貫性が保証されていなければなりません.. thanks @Ugurcan! –