我正在构建一个网站后端,涉及客户提交执行某些昂贵(及时)操作的请求。昂贵的操作还涉及收集一些信息以便完成。
uuid
可以完整描述客户提交的工作。我希望使用面向服务的架构(SOA)(即多个微服务)。
客户端使用HTTP上的RESTful通信与后端进行通信。我计划使用一个队列,执行昂贵操作的工作人员可以轮询工作。该队列具有持久性并提供了可靠的可靠性语义。
一个考虑因素是我是否收集了上游昂贵操作所需的所有数据,然后将所有数据排入队列,或者我是否只是将uuid
入队并让工作人员获取数据。
以下是正在考虑的两种架构的图表:
基于推送(即上游收集数据):
基于拉取(即工作人员收集数据):
我想到的一些事情:
我在这里缺少的任何其他东西?
答案 0 :(得分:0)
我认为你已经解释过第二种(基于拉动的)方法更好。
答案 1 :(得分:0)
基于拉取的方法的另一个好处是,您不必担心数据在队列中过时。
答案 2 :(得分:0)
我建议使用Cadence Workflow而不是队列,因为它支持长期运行的操作和状态管理。
与使用队列进行任务处理相比,Cadence具有许多其他优点。
请参见介绍Cadence编程模型的the presentation。