我创建了一个用于从超市订购和交付产品的应用程序。在商店创建订单并对其进行处理之后,有必要由最近的司机取走该订单。在这种情况下,客户必须实时查看其订单状态和驾驶员位置。
我计划将逻辑分为实时服务器(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
问题:
- 我是否正确选择了应用程序的体系结构?
- 使用MongoDB或Redis哪个地理搜索会更快?