这里只有外卖员与用户是单点,其余均是集群存在.可以避免网络问题,这里的问题是要求某个时间段内必须完成任务,那么就需要重试,需要保留上下文,用redis做上下文.用一个阻塞队列来推送消息;
骑手不断更新消息到redis,集群从队列里获取消息进行推送.每次更新包括时间.
订单状态这里的核心就是重试机制.以及数据库作为重试核心;
这里只有外卖员与用户是单点,其余均是集群存在.可以避免网络问题,这里的问题是要求某个时间段内必须完成任务,那么就需要重试,需要保留上下文,用redis做上下文.用一个阻塞队列来推送消息;
骑手不断更新消息到redis,集群从队列里获取消息进行推送.每次更新包括时间.
订单状态则是使用数据库更新,失败了就直接重建,其实也挺快的
骑手不断上报订单状态到redis里.从redis获取消息,进行推送, 这里涉及到了路由.
商这里的核心就是重试机制.以及数据库作为重试核心;
这里只有外卖员与用户是单点,其余均是集群存在.可以避免网络问题,这里的问题是要求某个时间段内必须完成任务,那么就需要重试,需要保留上下文,用redis做上下文.用一个阻塞队列来推送消息;
1.客户端对接节点:
接收外卖员的上报消息: A
与客户交互: B
2.redis获取节点.:
获取订单状态的数据;批量发送给B,这里使用负载均衡. C
3.redis监听节点:
监听不同消息队列的消费情况, 采用心跳时间来设置;发现有问题就需要重新派遣该任务; D
实际上垃圾回收的情况下,是会出现问题的.需要尽可能避免fullGC,也就是减少内存消耗,