我有两个事件pingdata和orderevent(来自两个不同的生产者),它们都将对同一资源(db、缓存)进行一些修改处理这个问题的理想方法是什么,我可以考虑以下两种可能性1)单个主题和拓扑,然后根据一些数据进行过滤2)两个不同的主题和两种拓扑,它们将执行一些操作请用正确的方法引导我!
lx0bsm1f1#
这里真正的问题是你的两个来源之间有多大的关联。您想对这两个数据流有严格的排序保证吗?如果是这样,就从一个分区开始一个单独的主题,并让使用者从中消费。现在,这不是一个非常神设置,因为有很少/没有平行。如果您的数据有一些基于密钥的分区,您可以对其进行哈希运算,然后每个主题有多个分区。现在,您将有单个分区的排序保证,但没有跨分区的这种保证。但如果它们是逻辑上独立的实体,我相信你应该没事。如果您正在生成的两个数据集之间没有依赖关系(我的意思是没有严格的排序约束),那么您最好通过创建两个主题将其分成两个不同的逻辑名称空间。关键是要记住“主题只是Kafka的一个逻辑实体”。在性能方面,一个带有2个分区的主题与两个带有1个分区的主题是相同的。因此,很大程度上取决于您希望如何设计您的系统以及两个集合之间的关系。
1条答案
按热度按时间lx0bsm1f1#
这里真正的问题是你的两个来源之间有多大的关联。您想对这两个数据流有严格的排序保证吗?如果是这样,就从一个分区开始一个单独的主题,并让使用者从中消费。
现在,这不是一个非常神设置,因为有很少/没有平行。如果您的数据有一些基于密钥的分区,您可以对其进行哈希运算,然后每个主题有多个分区。现在,您将有单个分区的排序保证,但没有跨分区的这种保证。但如果它们是逻辑上独立的实体,我相信你应该没事。
如果您正在生成的两个数据集之间没有依赖关系(我的意思是没有严格的排序约束),那么您最好通过创建两个主题将其分成两个不同的逻辑名称空间。
关键是要记住“主题只是Kafka的一个逻辑实体”。在性能方面,一个带有2个分区的主题与两个带有1个分区的主题是相同的。
因此,很大程度上取决于您希望如何设计您的系统以及两个集合之间的关系。