当前位置:  开发笔记 > 运维 > 正文

如何处理Redux + Microservices的相互通信

如何解决《如何处理Redux+Microservices的相互通信》经验,为你挑选了0个好方法。

我们正在实施拍卖云服务,该服务将根据需要外部API服务接收订单.每个收到的订单是拍卖1:1.

我们每天可以有超过2000个订单(拍卖).我们决定使用Microservices + Redux来区分订单和拍卖之间的关注点.

贝娄是每项服务的解释.

外部API

Enternal API只是一个网站,它将订单推送到我们的订单服务,并从我们无法控制的订单服务接收更新.

订购服务

订单有一堆信息(属性),客户端(移动应用程序)使用这些信息来获取决定加入拍卖的信息.例如,这是订单的样子:

{
  id: 123,
  description: 'Some description',
  salePrice: 0,
  minPrice: 1000,
  openPrice: 500,
  status: 'active',
  address: 'Some address',
  file: '.../some-file.pdf',
  client: 'Joe Doe',
  notes: 'Some notes',
  createdAt: '12345678',
  pending: false,
  postpone: false,
  ...moreproperties
}

在订单服务中,服务器可以在拍卖开始前的任何时间通过下面操作更新订单(地址,名称,openPrice,minPrice,状态等).

{ type: LOAD_ORDERS, orders }
{ type: PEND_ORDER, id }
{ type: POSTPONE_ORDER, id }
{ type: SET_ORDER_AUCTION, id, auction, salePrice }
{ type: UPDATE_ORDER, id, properties }

拍卖服务

此服务中的拍卖对象可能如下所示:

{
  id: 'abcd',
  orderId: 123456,
  increment: 1,
  outBid: { agentId: 'b1', price: 545 },
  bestBid:{agentId: 'b2', price: 550 },
  openPrice: 500,
  currentPrice: 550,
  status: 'started'
  startedByAgent: 'a1'
}

可以通过以下操作更新拍卖:

{ type: JOIN_AUCTION, id, agentId, type }
{ type: START_AUCTION, id, agentId }
{ type: PLACE_BID, id, agentId, price }
{ type: END_AUCTION, id, agentId }

API服务

它只是作为前端应用程序和微服务之间的网关.以行动的形式接收和发送客户(手机)到订单服务拍卖服务的请求.

工作流程:

1 - 通过LOAD_ORDERS 向订购服务当天的外部API推送订单,还将CREATE_AUCTIONS操作分派给Action Service,以便为每个订单创建拍卖.

2 - 用户打开移动应用程序并获取当天的订单列表,其中包括订单服务的公开价格.

3 - 用户加入特定订单 - API服务创建将出价的出价代理.- API服务通过JOIN_AUCTION发送加入操作以加入拍卖服务上的拍卖

4 - 拍卖师代理开始拍卖并开始竞标.

5 - 加入的投标人代理商开始通过PLACE_BID对拍卖服务进行投标.

6 - 当拍卖结束时,拍卖师通过派遣END_AUCTION结束拍卖.

7 - 当拍卖结束时,销售价格和拍卖细节(通过对象)通过SET_ORDER_AUCTION 发送到订单服务.

8 - 订单服务处理SET_ORDER_AUCTION并使用最终的salePrice拍卖对象更新订单状态,然后等待付款.

9 - 从客户收到付款信息后,订单服务将其提交给外部服务

我的问题是:

工作流程是否是使用微服务+ Redux并更新每个服务状态的合理方法?

使用redux微服务时,可以将微服务的操作分配给另一个吗?我的问题是因为在使用微服务+事件源+ CQRS时,不推荐服务互通,而是使用Sagas作为将事件转换为命令的中间服务.

我的另一个问题是在哪里放置业务逻辑(验证),例如,如果拍卖没有开始或者它已经结束,投标人就无法发出出价,如果他/她尚未加入拍卖,则投标人无法发出出价.这个逻辑是什么?在行动,中间件还是减速机?以及如何处理客户的错误?

一般来说,微服务+ Redux的最佳实践是什么?

使用微服务+ Redux与微服务+事件源+ CQRS的利弊是什么?

对不起,很长的帖子,我只是需要一些方向,因为我找不到任何关于这个主题的文档,我不确定我是否正在接近这个权利.

任何意见,将不胜感激!!!

推荐阅读
手机用户2502851955
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有