丛所周之,HTTP协议是一种无状态、基于TCP的请求/响应模式的协议,即请求只能由客户端发起、由服务端进行响应。在大多数场景,这种请求/响应的Pull模式可以满足需求。但在某些情形:例如消息推送(IM中最为常见,比如IM的离线消息推送)、实时通知等应用场景,需要实时将数据同步到客户端,这就要求服务端支持主动Push数据的能力。

在系统中集成WebSocket十分简单,相关讨论与资料很丰富。但如何实现一个通用的WebSocket推送网关尚未有成熟的方案。目前的云服务厂商主要关注iOS和安卓等移动端推送,也缺少对WebSocket的支持。
旧方案存在的技术痛点
号是我们内容生态的重要组成,作为前台系统,对用户体验有较高要求,直接影响着创作者的创作热情。
目前,号多个业务场景中用到了WebSocket实时推送技术,包括:
1)用户评论:实时的将评论消息推送到浏览器;
2)实名认证:合同签署前需要对用户进行实名认证,用户扫描二维码后进入第三方的认证页面,认证完成后异步通知浏览器认证的状态;
3)活体识别:类似实名认证,当活体识别完成后,异步将结果通知浏览器。
在实际的业务开发中,我们发现,WebSocket实时推送技术在使用中存在一些问题。
这些问题是:
1)首先:WebSocket技术栈不统一,既有基于Netty实现的,也有基于Web容器实现的,给开发和维护带来困难;
2)其次:WebSocket实现分散在在各个工程中,与业务系统强耦合,如果有其他业务需要集成WebSocket,面临着重复开发的窘境,浪费成本、效率低下;
3)第

本文探讨了WebSocket在实时推送中的挑战,如技术栈不统一、业务耦合、集群会话共享等问题,并提出了一种新的WebSocket长连接推送网关方案。该方案基于Netty实现,采用事件广播和RocketMQ实现分布式,提供HTTP接口简化业务系统接入,同时具备多维度监控和报警。通过性能压测和实际应用案例,展示了新方案在提高研发效率和降低运维成本方面的优势。
最低0.47元/天 解锁文章
629

被折叠的 条评论
为什么被折叠?



