场景如下:Web 服务会发布一些工单任务。工单分为一些子步骤,每一个子步骤需要通过调用一些外部 API 来完成。所有 API 调用都是从工作机向 Web 服务发起
+-----------------------------+
| 高可用的 Web 服务和数据库 | (工单有状态) # Initial -> S1 -> S2 -> ... -> Finish/Error
+-----------------------------+
^ ^
| | HTTP (短连接) # 获取 /更新工单状态
| |
+--------+ +----------------+
| 工作机 1 | | 工作机 2 (热备) | -------> 外部 API
+--------+ +----------------+
正常情况下,所有的工单都被工作机 1 处理。工作机 2 热备,不处理任何任务,但是可以有心跳。如果工作机 1 宕机,工作机 2 需要能够处理剩下的工单,也可能是一个工单剩余的步骤。
工作机不能直接连接数据库并加锁,但是可以通过 HTTP 请求间接执行类似的操作
请问这种场景下,最简单的实现方式是什么?(使用 SpringBoot)
Paxos, Raft 之类的框架套用在这里是不是太重了?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.