| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 系统运维 -> 企业即时通讯软件,网络通讯协议和机制怎么选? -> 正文阅读 |
|
[系统运维]企业即时通讯软件,网络通讯协议和机制怎么选? |
一个大型组织如果需要从头开发一套自主可控的即时通讯软件,从技术角度第一个要考虑的核心问题就是:如何确定客户端和服务器之间的通讯协议和通讯机制? 通讯协议怎么选? 大型组织架构就意味着员工人数多,网络情况复杂,以10万账号的组织规模为例,由于员工办公环境的多样性,一定存在内部高速网络、手机移动网络、Wifi网络等强弱网综合在一起的情况。 如果仅仅考虑内部高速网络的使用场景,XMPP是一个值得考虑的选择,它有:标准开放、分布式设计、安全性好、可扩展性高等优点,几乎照顾到了客户端和服务器之间网络通讯的方方面面。 但是XMPP在通讯网络多种多样、较为复杂的情况下,存在:XML格式的协议包过于臃肿、浪费网络流量、对移动网络不够友好、服务器带宽资源占用过高等缺点。 所以综合考虑大型组织的使用场景和使用人数需求,我们推荐采用Google的Protocol Buffers(以下简称protobuf)技术进行数据包的编码和解码。 理由如下: 协议的制定和上手相对简单,可以先从即时通讯过程中最核心的3到5个协议开始着手,比如:登录、状态通知、消息通知等;扩展性好,protobuf的IDL语法支持协议包向前兼容,也为将来的扩充预留了空间;protobuf的协议包是二进制格式,编解码速度快,数据压缩比也很高,可以提高移动网络传输的成功率,有效降低服务器带宽的占用。一个典型的网络通讯协议数据包如下所示: 典型的网络通讯协议数据包 对于协议包的加解密来说,一般也可以有两个选择,一个是采用自定义算法对每个数据包做加解密处理,另外一个是采用TLS标准,基于证书来控制加解密的算法和密钥机制。 绝大多数即时通讯软件会选择TLS标准方案,因为自定义算法固化了加解密算法和密钥交换机制,调整和修改也较为困难,在考虑不周全的时候,会存在安全隐患。 而开放标准的TLS协议可以通过更换证书来自主选择加解密方式,自控性更高,可以灵活满足不同组织对不同安全级别的管理需求。即时通讯开发 通讯机制怎么选? 传统的IM一般会选择TCP长连接的方式,所有客户端和服务器之间的通信都通过长连接进行。 但是TCP长连接会存在一些短板,比如: 移动设备的网络连接不稳定,不同的网络之间切换会很频繁,单纯的TCP通道传数据会频繁中断,表现出来就是消息的发送总是在转圈等待,使用起来体验不佳;TCP顺序传输的吞吐容量受限,要严格按照时序将请求传给服务器,对于大型组织而言,并发量大的情况下,某个请求如果服务器响应不及时,会导致后续请求挤压,表现出来就是服务不可用,进而影响到日常的工作效率;从简单可靠的角度考虑,我们建议采用TCP+HTTP的传输方式: TCP作为加密(TLS1.2)传输通道,数据协议基于protobuf设计,轻业务模式。主要用于:登录、消息通知、状态变化等场景;HTTPS作为业务传输通道,接口为RESTful风格,参数采用JSON数据格式。 TCP+HTTP的传输方式 这样的好处在于: 发消息采用了HTTP协议,网络的连通持续性要求不高,可以充分降低网络切换对数据传输带来的影响;将服务端成熟的HTTP服务体系引入到后端开发,达到服务开发过程简单高效的目的;客户端快速切换界面时,可取消之前界面产生的HTTP请求,减少服务器无效的资源消耗;充分引入HTTP服务开发领域内成熟的高可用解决方案,满足大型组织通讯平台的使用需求。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/15 23:38:11- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |