【发布时间】:2019-01-09 09:32:27
【问题描述】:
我有一个 Web 服务(用 java springboot 编写),其中一个创建资源的请求来了,资源需要很长时间才能创建~5-6 小时。资源创建后,我需要调用一些端点来通知创作。
有多种处理方法
- 一旦请求创建资源,将其存储在数据库中并向客户端返回 200ok,并在后台有一个长时间运行的任务,该任务轮询数据库并处理新任务,并在完成时通知端点。 这里的挑战是如何处理 web 节点的故障,如何处理在 elb 后面的多个 web 节点上并行运行的多个 poller 任务的并发读取。
2.第二种方法是将两者解耦,在单独的堆栈中轮询只是普通的工作节点而不是在休息服务中,但锁定和故障转移策略的挑战仍然存在。
以上两种方法哪种更好,如何处理锁以避免多个轮询任务并发执行相同的创建资源并处理失败情况?
【问题讨论】:
标签: java spring rest spring-mvc spring-boot