将应用程序后端拆分为实时和业务逻辑服务器

时间:2018-08-07 08:56:21

标签: node.js redis socket.io publish-subscribe

我创建了一个用于从超市订购和交付产品的应用程序。在商店创建订单并对其进行处理之后,有必要由最近的司机取走该订单。在这种情况下,客户必须实时查看其订单状态和驾驶员位置。

我计划将逻辑分为实时服务器(RTS)和业务逻辑服务器(BLS)。

  • BLS的任务将包括:用户和驱动程序的授权(JWT令牌:访问+刷新),订单的创建和处理,支付系统。
  • RTS将用于监视所有驱动程序的位置并在Web套接字上创建连接。驾驶员必须不断发送GPS位置信息才能在线 通信RTS-BLS将使用Redis pub / sub进行。同时,部分订单数据和有关驱动程序的信息将从MongoDB复制并存储在Redis中。因此,该信息将可用于所有RTS服务器(如果我将使用水平缩放)。

最初是通过MongoDB Geosearch计划搜索与订单最接近的驱动程序的,但是随后必须不断写下MongoDB中驱动程序的位置-这是对数据库的大量调用。因此,我想通过Redis实现对最接近实体的搜索。

  • BLS使用Node.js + Express + Mongo
  • RTS使用Socket.io

问题:

  1. 我是否正确选择了应用程序的体系结构?
  2. 使用MongoDB或Redis哪个地理搜索会更快?

0 个答案:

没有答案