Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 如何以类似事务的方式访问多个远程服务_Node.js_Architecture_Subscription - Fatal编程技术网

Node.js 如何以类似事务的方式访问多个远程服务

Node.js 如何以类似事务的方式访问多个远程服务,node.js,architecture,subscription,Node.js,Architecture,Subscription,我有一个端点负责创建付费订阅。但是,为了创建订阅,我需要连续访问多个不同的服务: 1) 使用前端提供的令牌创建订阅(由前端应用程序直接呼叫支付系统生成)(呼叫支付系统) 2) 获取要保存在数据库中的账单信息(调用支付系统) 3) 保存一些账单信息(f_名称、l_名称)和提供的配送信息(调用数据库) 4) 向客户订阅邮件列表(致电电子邮件服务提供商) 这些步骤中的任何一个都可能由于服务不可用、DC中的internet连接问题或开发人员无法控制的任何其他问题而失败。是否可以选择以类似事务的方式处理所

我有一个端点负责创建付费订阅。但是,为了创建订阅,我需要连续访问多个不同的服务:

1) 使用前端提供的令牌创建订阅(由前端应用程序直接呼叫支付系统生成)(呼叫支付系统)

2) 获取要保存在数据库中的账单信息(调用支付系统)

3) 保存一些账单信息(f_名称、l_名称)和提供的配送信息(调用数据库)

4) 向客户订阅邮件列表(致电电子邮件服务提供商)

这些步骤中的任何一个都可能由于服务不可用、DC中的internet连接问题或开发人员无法控制的任何其他问题而失败。是否可以选择以类似事务的方式处理所有这些,以避免部分完成?e、 我们创建订阅,但不写入数据库

如果有帮助的话,我正在使用Node.js。

看看微服务的应用程序。这基本上可以作为一种服务,当您想要创建订阅时,您可以联系它。它知道所涉及的每一步,最重要的是,它还知道如果任何一步失败,如何回滚每个事务

发出请求后,服务将开始执行所有必要的请求/查询,然后:

  • 成功返回
  • 回滚到目前为止发生的所有事务并返回错误
  • 这显然依赖于您的所有服务能够恢复到已知的良好状态

    另一种方法是使用两阶段/n阶段提交,但它们可能会造成很大的性能下降,这对于面向用户的应用程序来说是不可取的

    你可能想通读一下这个问题在哪里讨论得更详细