GCP Pub/Sub 主题
我的应用程序是基于两个GCP云函数,这两个函数分别从不同的话题中获取消息。
第一个云函数从第一个话题获取关于对象创建的消息。第二个云函数则从第二个话题获取关于第一个云函数和第一个话题中创建的对象状态变化的消息。
所以,我有两个不同的话题,它们是独立的,但第二个话题生成的消息实际上是第一个话题消息的逻辑延续。
我们不能保证我的应用程序会先从第一个话题获取消息,然后再从第二个话题获取消息。
那么,如何设计架构才能避免数据丢失呢?
1 个回答
1
如果你想要使用事件驱动的模式,可以这样做:
- 第二个主题中发布的事件(对应第二个函数)是第一个函数操作的结果。举个例子,第一个函数在Firestore中更新了一个值,第二个函数则是在这个值更新后被触发。
不过,如果你需要更复杂的协调处理,可以使用一些协调工具,比如Cloud Workflow(更推荐)或者Cloud Composer。这样的话,你就可以去掉第二个PubSub主题,按照下面的步骤进行协调:
- 在PubSub主题中捕捉事件
- 用PubSub消息作为参数开始协调处理
- 用第一个函数处理这个消息
- 在你的协调工具中获取更新的结果
- 调用第二个函数