13 | HTTP Tunnel:复杂网络下消息通道高可用设计的思考

本文探讨了即时消息系统中通道层的高可用性问题,涉及连通性、延迟优化、多端口访问、HTTPTunnel穿透、多接入点策略和业务解耦等内容,提供了解决复杂网络环境下问题的方法和实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在第 1 讲“架构与特性:一个完整的 IM 系统是怎样的?”中,有讲到即时消息系统中非常重要的几个特性:实时性、可靠性、一致性、安全性。实际上,这些特性的实现大部分依赖于通道层的稳定和高可用。

对于即时消息系统来说,消息的通道主要承载两部分流量:一部分是用户发出的消息或者触发的行为,我们称为上行消息;一部分是服务端主动下推的消息和信令,我们称为下行消息

由此可见,消息通道如果不稳定,一来会影响用户发送消息的成功率和体验,二来也会影响消息的下推,导致用户没法实时收到消息。

那么,在面对如何保障消息通道的高可用这一问题时,业界有哪些比较常用的优化手段呢?

让消息通道能连得上

要保障消息通道的高可用,最基本的是要让通道能随时连得上。不过你可能会觉得,这看起来好像挺简单的,不就是申请个外网虚拟 IP,把接入层服务器挂上去,然后通过域名暴露出去就行了吗?

但实际上,这个“连得上”有时真正做起来却不是那么容易的,主要原因在于用户的网络情况复杂性高。比如,有的用户走 2G 网络来连,有的通过 HTTP 代理来连,还有的会出现 DNS 解析服务被封的情况,诸如此类。

此外,移动运营商各种比较奇怪的限制也会导致连通性不佳的问题。因此,要想你的通道能让用户随时都连得上,还需要做一些额外的优化。

多端口访问

首先就是端口的连通性问题。

计算机端口范围是 0 ~ 65535,主要分成三大类:公认端口(0 ~ 1023)、注册端口(1024 ~ 49151)、动态或私有端口(49152 ~ 65535)。

虽然理论上大部分公认端口和注册端口都可以在外网暴露,但实际上,由于移动网管代理的端口限制,以及一些网管软件为了控制安全风险,只允许访问某些端口,因此大部分端口都存在连通性的风险。

目前,业界确认比较安全的端口基本上只有 80、8080、443、14000 这几个。因此如果开发一个外网服务,我们应当尽量选用这几个端口来对外进行暴露,确保可连通性。

此外,还可以通过同时暴露这几个端口中的某几个,来进一步提升可连通性。当其中一个端口出现连通性问题时,另外的端口还可以作为 Failover 端口,当

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值