【发布时间】:2021-09-27 03:46:20
【问题描述】:
我正在处理一个很大的问题。的操作必须基于事件同时启动。例如,用户输入目的地和日期,并希望获得 200 多个“旅行合作伙伴”的最佳优惠。
为了满足这一点,我正在计划一个事件驱动的架构,当用户提供适当的输入时,一条消息被发布到一个主题,并且这个主题有工作人员订阅它,这反过来会生成额外的事件,一个用于每个旅行合作伙伴都可以从中获得优惠。
所以本质上:
- (1) 在提供用户输入时向主题
"TRAVEL_DESTINATION_REQUEST"发布消息 - (2) 工作人员订阅了此主题
- (3) 工作人员在 (2),对于系统中的每个旅行伙伴,将带有数据
{date:..., destination:...,travel_partner_id: ...etc}的事件发布到主题FIND_OFFER。 - (4) 工作人员订阅了
FIND_OFFER查询travel_partner_id并将响应保存在某处。
因此,如果您有 200 个旅行合作伙伴,则上面会将 200 个事件推送到 FIND_OFFER 主题,供工作人员处理每个用户查询。
你会这样解决问题吗?如果不是,你会怎么做?按顺序显然是不可能的,因为我们不能让用户坐在那里等待,而且旅行合作伙伴 api 调用的响应时间可能会有所不同......
在 GKE 世界中,发布/订阅是否适合这种方法?有谁知道 pod 负载平衡是否会导致此模型出现任何问题?
【问题讨论】:
标签: design-patterns architecture google-cloud-pubsub event-driven-design