架构图

2020-03-17  本文已影响0人  火山脚下

作者:大姚
链接:https://www.zhihu.com/question/23508759/answer/53499157
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

自己的一篇博客,对IM服务器的简单架构思路。

IM系统架构设计之浅见

背景:除去大名鼎鼎的QQ这款即时聊天工具,还有许多细分行业的IM,比如淘宝阿里旺旺、网易泡泡、YY语音......。恰巧公司产品也要开发一款基于我们自己行业的类IM系统,很有幸我担当了这个产品的架构师,核心代码编写、实现者。下面将我近年来从技术上我对IM系统(即时消息的传输,不包括语音,视频,文件的传输)的理解和设计分享出来,浅薄之见,望大家别见笑,欢迎给出批评意见。

一.网络传输协议的选择

目前我知晓的所有IM系统传输即时消息无外乎使用UDP、TCP、基于TCP的http这几种协议中的一种或几种。比如QQ主要采用UDP协议,MSN主要采用TCP协议,而且他们也都支持HTTP协议的代理模式。更多资料,请参加这篇文章《一些常用软件的网络端口协议分类介绍》

我们该如何选择呢?

Tips: QQ 为什么采用 UDP 协议,而不采用 TCP 协议实现?

二.应该选择什么格式的数据协议

二进制格式?文本格式?这个话题转到我的这篇文章《网络传输数据格式的选择》,从我们当前的需求和产品周期上我觉得选择JSON形式的数据协议是最好的。

三.架构设计

首先我们来提炼一下一个IM系统的主要需求,包括账号,关系链,在线状态显示,消息交互......。

架构考量

后台架构简化图

<noscript> image

</noscript>

image

架构示意图

<noscript> image

</noscript>

image

架构细化图

<noscript> image

</noscript>

image

说明

服务端平台及技术选型

部分热点问题考量

主要学习资料: 请自行google。

上一篇 下一篇

猜你喜欢

热点阅读