关于全球即时通讯系统架构的点滴思考

来源:互联网 发布:淘宝卖红酒需要什么 编辑:程序博客网 时间:2024/04/29 22:13

    全球化的IM系统,用户量大,并发访问高,这样的系统如何架构?笔者刚刚结束相关产品的研发工作,做点滴总结。

一、 全球IM系统的基本要求

    1 首先即时性要好,在海量用户高并发访问时,减少用户消息到达的延迟,要求服务端计算要快;

    2 高可用性和可靠性,在拥有如此海量用户的系统,势必采用集群化部署,机器故障发生率高,在机器发生故障时,要求仍可以正常提供服务;

    3 伸缩性好,在增加机器时,系统服务能力能得到线性增长;

    4 扩展性强,在增加功能需求或变动功能时,不会引起系统架构大的调整;

    5 安全性好,可以防止第三方冒名登录。

二、 机器全球化部署

    为了缩短客户端到服务端的通信距离,宜将服务器全球化部署,不如效仿谷歌云将计算中心部署在全球6个数据中心:亚洲东部、亚洲东北部、欧洲西部、美国中部、美国东部和美国西部。每个计算中心为所在区域的用户提供服务,所有的数据中心通过光纤连接,提供局域网的服务。

三、基本架构

    全球化IM系统架构包括几个部分:入口层、连接层、消息队列、协议层、微服务层。

    1 入口层:客户端连接服务端时,首先连接入口层,入口层提供两类服务:(1) 首先判断客户端IP是否在黑名单中,若是则拒绝为其提供入口;(2)然后根据IP所属区域为其提供所属区域的计算中心的连接层地址。

    2 连接层:全球6个计算中心分别部署一个连接层集群,集群中机器数量取决于用户的连接数量,每个集群分别提供负载均衡;连接层业务代码简单,写好之后,一般不改动;连接层主要的任务就是与客户端保持TCP长连接,把客户端发送的数据包向后转发;这样设计的目的是为了在后端业务升级变动时,对用户透明化。

    3 消息队列:消息队列在连接层的后面,暂时存放连接层接收到的数据包;消息队列的作用有两个:(1)应对访问高峰,防止对后端业务造成过高的负载;(2)实现异步方式,使连接层与后端业务解藕。

    4 协议层: 前端连接层基于TCP实现简单的数据包收发,该层结合业务实现自定义的应用层协议,将协议从业务代码中分离出来单独作为一个层实现,便于维护和性能调优,可以在很大程度上提高系统的可扩展性;该全球化的IM系统客户端除了PC还包括大量的移动设备,移动端在弱网络环境中;为了使消息能在弱网络环境中正常传输,必须设计可靠、高效、低带宽的协议,可靠是指消息可达、不丢包,高效是指弱网络环境下消息快速收发,低带宽是为了节省用户移动设备的流量。该全球IM系统采用基于版本号的消息传输协议。

    5 微服务层:微服务层以微服务的形式实现业务代码,与协议层通过RPC的方式进行调用。

四 总结

    1 所有层次的机器都是集群化部署,除了提高处理能力外,最重要的是为了容错处理,提高可靠性;

    2 IM系统通讯协议是重点,一个好的通讯协议可以简化系统设计,提高消息传输效率,节省资源;

    3 对于高并发的系统,推荐采用go语言实现,与C++语言相比, 可以极大降低开发者的心智负担。

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 海南买房要社保怎么办? 工商核名不过怎么办 税局要求查账怎么办 完税凭证丢了怎么办 开票开错了怎么办 上海居住证搬家了怎么办 上海无户口 医保怎么办 淘宝账号注销不了怎么办 淘宝账号被覆盖怎么办 淘宝号注册不了怎么办 appleid密码忘了怎么办 蘑菇街用白富美后忘记账号怎么办 不知道宽带账号怎么办 上网用户名忘了怎么办 别人借淘宝号怎么办 不知道ipad密码怎么办 捡的ipad密码怎么办 12306注册名已存在怎么办 忘记网银用户名怎么办 登录用户名忘了怎么办 网银登录错误怎么办 路由器账号忘了怎么办 忘记宽带账号密码怎么办 12123被注册过怎么办 w10不能创建账户怎么办 忘记xp登录密码怎么办 华硕密码忘记了怎么办 电脑账户已停用怎么办 鼠标灯亮不动怎么办 电脑用户名被停用怎么办 电脑截图不清晰怎么办 win10电脑磁盘空间不足怎么办 我的用户名忘记怎么办 12306用户名密码忘记怎么办 电脑开机要密码怎么办 三星账户忘记了怎么办 电脑账户忘记了怎么办 电脑启动要密码怎么办 电脑用户密码忘记了怎么办 微信语音听不懂怎么办 法院迟迟不立案怎么办