Spring启动应用程序高可用性

时间:2018-05-25 14:31:13

标签: spring-boot microservices high-availability

我们有一个使用弹簧靴开发的微服务。它实现的几个功能是

1)一个调度程序,在指定的时间使用webhdfs触发文件下载并对其进行处理,一旦处理完数据,它就会向用户发送一封包含数据处理摘要的电子邮件。 2)从kafka读取消息,一旦读取数据,就向用户发送电子邮件。

我们现在计划在主动 - 主动或主动 - 被动设置中提供高应用程序。我们现在面临的问题是,如果应用程序的两个实例都在运行,那么它们都将尝试从kafka下载文件/读取数据,处理它并发送电子邮件。如何避免这种情况?我的意思是确保只有一个实例触发下载并处理它?

请告诉我是否有针对此类情况的已知解决方案,因为这似乎是大多数项目中的常见情况?主从/领导选举是否接近正确的解决方案?

由于

1 个答案:

答案 0 :(得分:0)

让服务下载该文件,提取信息并通过kafka发布。 通过查询kafka或本地数据库,预先检查信息是否已处理。

您还可以发布触发DataProcessed的{​​{1}}事件,该事件发送相应的电子邮件。