考虑以下情况:
因此,可以从S1和S2发布信息。
假设用户最初具有名称N1。
这导致各种系统之间的大量数据一致性。
在理想的系统中,只有一个发布者,但由于要求,我们必须从“销售”面板添加发布事件。可以采取哪些措施来最大限度地减少数据不一致?
问题似乎在于决定谁是用户数据的主人,因为现在S3正在尝试为两个主人提供服务。
S1 --> S3
S2 --> S3
让S1成为用户数据的主人,这样接受该数据的任何其他系统(例如S2)只负责更新主数据。这样,S3从单个源(用户数据的主站)获取用户数据。
S1 --> S3
S2 --> S1 --> S3
主人负责消费和生成它拥有的数据。另一个系统可能消耗(甚至存储)相同的数据,但它只能产生给主数据。没有系统可以生成除了该数据的主数据之外的任何系统不拥有的数据。
只要只有一个系统,哪个系统是主系统并不重要。只要只有一个主数据,有多少系统存储数据副本并不重要。让每个系统掌握一种类型的数据可能比所有数据的单个主数据更具可扩展性。
让我再说一遍..
在这种情况下,我将使用Master DB / System,它将成为每个系统的单点数据源。
如果任何系统想要更改数据,则数据首先需要在主Db /系统上更新,然后它应传播到其他系统以反映更改。
对于Pub-Sub,我将遵循Fan-IN和扇出方法。
这样,您就可以实现系统之间的数据一致性。只有你需要注意的是这个过程的延迟,如果任何系统出现故障,可能会出现这种情况。
希望我已经回答了你的问题。
维护一个表以跟踪所有最新更新(最新一天更新)。假设所有更新都可以在几分钟内通过pub / sub系统传播到所有其他系统。
在更新条目之前,所有系统都应联系此主要来源(对于名称,电子邮件和联系电话等字段)
每当任何系统通过pub-sub处理更新时,只有在同一记录中没有新的更新发生时它才会更新。