消息推送系统

一、背景

        在餐饮行业中,店内应用有pos、厨显屏等,云端应用为对应数据中心。店内应用部署在私有网络中,云端应用部署在阿里云中。为了实现云端下发指令给店内应用,需要实现推送功能。

二、技术设计方案

1.系统架构图

        消息推送实现方式主要有两种,一种是基于长连接,另一种是基于客户端轮询。为了兼顾实时性和一致性,本系统采用长连接和轮询两种方式进行实现。

         

2.轮询方式选择

      a、长轮询(Long Polling) 。具体流程如下

  • 客户端发起一个HTTP请求到服务器,并设置一定超时时间,但服务器不会立即发送响应。
  • 服务器收到请求后,检查是否有新的数据或通知可以返回给客户端。如果有,服务器会在超时之前立即返回响应。
  • 如果服务器没有数据或通知可用,则会保持请求打开,直到有新的数据或通知准备好,或者超过了指定的超时时间。如果超时时间到达,服务器会发送空响应,客户端收到空响应后会再次发起一个长轮询请求。
  • 客户端在收到响应后,再次发起长轮询请求,重复以上步骤。

        线程挂起和唤醒可以借助guava工具的SettableFuture实现。

Guava库学习:学习Concurrency(五)SettableFuture - Realfighter的个人博客 - OSCHINA - 中文开源技术交流社区icon-default.png?t=N7T8https://my.oschina.net/realfighter/blog/349931

      b、轮询 + 缓存方式

3.数据模型选择

     a、读扩散  - 消息表 & 消费者位移表

     b、写扩散 - 消息数据表 & 消费者消息扩散表

读扩散,写扩散,终于终于讲清楚了!-腾讯云开发者社区-腾讯云 (tencent.com)icon-default.png?t=N7T8https://cloud.tencent.com/developer/article/1942262 

4.push-router 实现方案

     a、基于mq广播

     b、通过数据库维护设备和链接关系

  • 5
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值