我有一些服务,比如 Catalog Service
, Customer Service
, Recommendations Service
, Order Taking Service
以此类推,每个服务都有自己的 Keyspace
在一个 Cassandra
数据库。
我有两个问题:
1-对于服务中的更改:我应该首先将更改的事件(或记录)发布到 Kafka
然后从其他服务器的同一个服务中使用它来更新它的数据库,或者我应该先更新它的数据库,然后将记录发布到 Kafka
?
2-如何选择要发布到的更改 Kafka
,是否应将所有更新发布到 Kafka
,甚至那些对其他服务没有兴趣的人,比如 "attribute X updated to Y for product Z"
?
1条答案
按热度按时间qeeaahzv1#
1) 我建议你一定要读你写的东西。哪个手术更可能成功?Kafka的复制品,还是耐用的Cassandra·厄塞特?如果你认为Kafka更耐用,那么你可以在那里写下它,然后使用像Kafka连接这样的工具把它写下来给Cassandra(假设你真的需要Cassandra而不是一个全球性的ktable,那就有待商榷了)
2) 没有直截了当的答案。如果您认为数据将以可能相关的方式被消耗,那么就产生它。把它想象成所有事件的审计日志。如果要构建一个总是知道任何产品的最新状态和发生的所有更改的幂等系统,那么您可以将每次的整个对象存储为(id,product)对,在这里您可以整体更新整个产品,或者您可以存储更改的每个增量并从中重建状态