如何为事件驱动微服务实现“去抖”?

3
我在Azure上的一个Kubernetes集群中运行了2个微服务。"Project"-微服务在项目更新时向Kafka发送事件。"Analytics"-微服务消费该事件,进行一些昂贵的计算,并最终发送包含结果的电子邮件。
为避免向接收者发送垃圾邮件,我希望实现某种去抖动模式,以便仅在自上次更新事件接收后经过1小时后才执行计算。由于"Analytics"-微服务大部分时间处于空闲状态且冷启动不是问题,因此在其处于非活动状态时取消保留资源将是有利的。
在使用Kafka时如何实现去抖动方案?我考虑引入一种资源消耗较少的微服务,其唯一目的是在内部时钟到期后触发"Analytics"-微服务。这是明智的解决方案吗?我希望得到曾经处理过类似问题的人的建议。

你为什么只处理一小时一次,并且这是如何驱动事件的呢?如果这是一个要求,为什么不直接实现一个GET端点并每小时轮询一次呢? - daniu
1
用户通过REST端点更新项目。 "Project" 微服务将 "ProjectUpdated" 事件发送到 Kafka 主题。 "Analytics" 微服务监听它。在生产者和消费者互不了解的情况下,它是事件驱动的。由于事件是由用户行为发起的,因此它们通常以短时间间隔发生。我想避免为每个事件执行昂贵的分析计算并发送电子邮件。如果在一段时间内完成这项工作,则足够了。定期调用的 GET 端点将查找处于中间状态的项目。 - andreas_rwth
1个回答

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接