为了账号安全,请及时绑定邮箱和手机立即绑定

将多个流的处理漏斗到单个流中的正确模式

将多个流的处理漏斗到单个流中的正确模式

凤凰求蛊 2021-06-14 17:51:08
现在我在 SCDF 中有一个流应用程序,它从数据库中的多个表中提取数据并将其复制到另一个数据库。目前,我们的目标是减少给定流正在执行的工作量,因此我们希望将流拆分为多个流并继续将数据复制到第二个数据库中。是否有任何推荐的设计模式可以将这些不同的流处理集中在一起?
查看完整描述

1 回答

?
拉风的咖菲猫

TA贡献1995条经验 获得超2个赞

如果我正确理解了此要求,您会希望按每个应用程序的 DB/Table 拆分摄取片段,然后将它们全部合并为单个“有效负载类型”以进行下游处理。

如果您确实想按 DB/Table 拆分摄取,则可以,但您可能需要考虑利弊。一个明显的好处是粒度,你可以独立地更新应用程序,也许还有可重用性。当然,这也带来了其他挑战。单个应用程序的维护、修复和发布等等。

也就是说,您可以将数据扇入单个消费者。下面是一个例子:

foo1 = jdbc | 变换 | 高密度文件

foo2 = jdbc > :foo1.jdbc

foo3 = jdbc > :foo1.jdbc

foo4 = jdbc > :foo1.jdbc

这里foo1是从特定 DB/Table 组合读取数据的主要管道。同样,foo2foo3foo4可以从其他数据库/表组合中读取。但是,这 3 个流将消耗的数据写入命名目标,在这种情况下恰好是foo1.jdbc(又名:主题名称)。该目的地在部署foo1管道时由 SCDF 自动创建;专门将“jdbc”和“转换”应用程序与foo1.jdbc主题连接起来。

综上所述,我们将不同的表数据路由到同一个目的地,所以下游App,在这种情况下,transform处理器从不同的表中获取数据。

如果数据的相关性很重要,您可以通过每个jdbc来源的唯一键(例如,customer-id = 1001)对生产者处的数据进行分区,因此特定于上下文的信息位于同一个transform处理器实例中(假设您已经“ n" 用于横向扩展处理的处理器实例数)


查看完整回答
反对 回复 2021-06-23
  • 1 回答
  • 0 关注
  • 129 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信