即时通讯系统的架构设计

来源: 即时通讯网-哇谷im 2020-06-28 09:41:51


 前言

 

 除了像QQ和微信这样的聊天工具,不同行业还有很多即时通讯工具,比如淘宝阿里旺旺、网易泡泡、YY之声。碰巧公司的产品也需要基于我们自己的行业开发一个类似即时消息的系统。幸运的是,我充当了这个产品的架构师、核心代码作者和实现者。在这里,我将分享我近年来对即时消息系统(即时消息的传输,不包括语音、视频和文件的传输)的理解和设计。我希望你不要笑,并欢迎给予批评。

 

 此外,以下关于即时消息实际开发的文章也值得一读。如果你感兴趣,你可以看看:

 

 适合初学者:从头开始开发即时消息服务器(基于Netty,带有完整的源代码)

 "拿起键盘是干的:和我一起开发一个分布式即时通讯系统. "

 自己开发即时通讯有这么难吗?手工教你一个Andriod版本的简单即时消息(带源代码)

 安卓即时通讯智能心跳算法的设计与实现探讨(含示例代码)

 教你用Netty实现网络通讯程序的心跳机制和断线重连机制

 “WebSocket实时聊天室演示:基于node . js+Socket . io[附件下载]”

 

 选择难点1:网络传输协议的选择

 

 目前,我所知道的所有即时消息传输系统都使用基于协议的UDP、TCP和http中的一种或多种。例如,QQ主要使用UDP协议,MSN主要使用TCP协议,它们都支持HTTP协议的代理模式。有关更多信息,请参与本文“通信软件的网络协议和端口集合,如即时通讯”。

 

 我们应该如何选择?

 

 UDP协议具有较好的实时性,但如何处理不同客户端之间安全可靠的传输和消息交互是一个难以实现的难题。

 HTTP协议属于扩展支持,所以我们不需要在产品的初始阶段支持它;

 那么它一定是TCP,而且还有很多事情要考虑,尤其是如果有大量用户的话。如何保证单个服务器的高并发性,以及如何实现灵活的扩展架构。

 

 (即时通讯网注:你也可以参考相关文章“为什么QQ使用UDP而不是TCP?”,“移动即时通讯协议选择:UDP还是TCP?,更多类似的文章:http://www.52im。net/forum.php?mod =收集和操作=查看&ctid=18英寸。

 选择困难2:数据通信格式(协议)的选择

 

 二进制格式?文本格式?本主题转到本文“如何选择即时通讯应用程序的数据传输格式”。从我们目前的需求和产品周期来看,我认为最好选择JSON数据协议。

 

 (即时通讯网注:即时消息数据传输格式的选择是一个令人头痛的问题。例如,这篇文章不同于这篇文章。"强列建议Protobuf作为您的即时通讯应用程序数据传输格式。更多类似的文章:http://www.52im。net/forum.php?mod =收集和操作=查看和ctid=18英寸)

 建筑设计

 

 首先,让我们细化即时消息系统的主要需求,包括账号、关系链、在线状态显示和消息交互。

 

 1架构考虑

 

 由于采用了可靠的传输协议TCP,考虑了负载问题(短连接实现账号和关系链相关业务,长连接实现在线和信息推送);

 后台架构的灵活性和可扩展性支持分布式部署——分离网络层、业务逻辑层和数据层,网络层和业务层支持负载平衡策略,数据层支持分布式存储;

 客户端SDK的易用性:独立的网络层、数据层和业务逻辑层。

 

 背景架构简图:

 即时通讯系统的架构设计

 

 建筑示意图:

 即时通讯系统的架构设计

 

 架构细化图:

 即时通讯系统的架构设计

 

 描述:

 从架构细化图可以看出,对于在线服务,建立了TCP长连接,对于单个服务器,由于硬件资源、系统资源和网络资源的限制,大量用户不能同时在线。因此,它被设计为根据服务器负载支持多服务器在线。同时,由于多服务器在线导致了整个系统交互的分离(不同客户端之间的交互,应用服务与协作部门的客户之间的交互),引入了消息转发服务器作为绑定点。另外,对于多服务器在线造成的统一账户信息(在线状态、消息)数据的分割,统一数据层(内存存储层:会话、状态信息存储、消息队列存储;数据库:帐户信息存储)将业务与数据分开,并支持分布式部署。请参阅我的文章“构建高性能服务的注意事项”。

 

 对于一些业务服务:将网络层、业务层和数据层完全分开。首先,对于TCP短连接,它不会像长连接那样消耗资源。即使后期有大量的并发访问请求,也可以通过负载均衡策略和数据分布式部署策略平静地解决。请参阅我的文章“服务器架构中的网关服务器”。

 

 2服务器平台和技术选择

 

 系统开发平台:

 Centos是一种稳定、可靠、可定制和优化的Linux发行版,具有丰富的支持。

 网络支持层:

 libevent-降低开发成本并增强稳定性。

 缓存存储层:

 redis-支持丰富的存储结构和分布式存储。

 数据库:

 MySQL是最适合互联网的数据库,它是免费的、高效的、稳定的、可控的。

 开发语言:

 C/C++ .

 

 3.审议热点问题

 

 主要是关于系统性能的考虑:

 

 编码角度:

 采用高效的网络模型、线程模型、输入输出处理模型、合理的数据库设计和操作语句优化;

 垂直缩放:

 通过改善单个服务器的硬件资源或网络资源来提高性能;

 水平缩放:

 通过合理的架构设计和运行维护中的负载均衡策略来分担负载,有效提高性能;稍后,您甚至可以考虑加入数据缓存层来突破IO瓶颈;

 系统的高可用性:

 防止单点故障;

即时通讯-单聊功能表-聊天功能-聊天app-聊天信息加密沟通-聊天文本-聊天技术-聊天构架源码-聊天 记录同步云储存-聊天消息测回-哇谷即时通讯IM源码

 在架构设计中,业务处理和数据是分开的,因此依赖分布式部署来确保单点故障情况下的系统可用性。

 对于关键的独立节点,可以使用双机热备技术进行切换。

 磁盘阵列和主备数据库的冗余配置可以解决数据库数据的安全性问题。


----------------------------------------------------------------------------------

哇谷im_im即时通讯_私有云_公有云-哇谷云科技官网-JM沟通

IM下载体验 - 哇谷IM-企业云办公IM即时聊天社交系统-JM 沟通下载

IM功能与价格 - 哇谷IM-提供即时通讯IM开发-APP搭建私有化-公有云-私有化云-海外云搭建

新闻动态 - 哇谷IM-即时通讯热门动态博客聊天JM沟通APP

哇谷IM-JM沟通热门动态博客短视频娱乐生活

关于哇谷-哇谷IM-提供企业即时通讯IM开发-语音通话-APP搭建私有化-公有云-私有化云-海外云搭建

联系我们 - 哇谷IM-即时通讯IM私有化搭建提供接口与SDK及哇谷云服务

即时通讯IM融云世界

IM即时通讯钉钉技术:企业IM钉钉在后端架构上的优越之处

新的市场叫板环信、融云、腾讯云!开源版IM即使聊天工具

企业IM即时通讯聊天办公APP钉钉技术分析交流

哇谷云-怎么样正确认识海外云服务器

公有云和私有云之间有什么区别?类似融云、环信云、网易云、哇谷云?









-------------------------------------------------------

相关文章

即时通讯

即时通讯im

什么是私有云?

im 移动社交聊天APP

Im通讯有哪些APP

如何选择即时通讯软件?

推荐一款好用的企业办公聊天APP

使用企业IM要不要收费

IM软件要多少钱?‍‍有必要定制么?

有没有必要开发企业聊天APP

企业IM是什么,有什么使用优势?

哇谷IM有什么特点,为什么很多企业在使用?

即时通讯私有化部署是什么?

企业即时通讯的使用价值有哪些

企业聊天APP有什么作用,可以带来哪些便利?

企业即时通讯软件支持多设备登陆吗?

购买海外云服务器注意避免这些误区

怎么样正确认识海外云服务器

员工上网影响效率 关闭外网做内网必备聊天APP

即时通讯软件是否具有聊天回执的功能?

即时通讯聊天APP是否支持消息漫游

即时通讯软件可以发送表情和语音么?

即时通讯软件支持群聊和音视频功能么?

有微信有QQ,为啥还要定制即时通讯软件?

IM软件功能丰富 随心所欲定制您需要的功能

盘点全球几大即时通讯软件

介绍两款国外大佬级别的即时通讯APP

原创互联网未来世界企业政府通讯APP办公节约成本类似马云思维-哇谷IM

免费十万SEO优化超级外链工具各大站长工具

敲黑板,企业聊天APP这些事项一定要注意!

JM沟通优势有哪些,安全性怎么样?

JM沟通app即时通讯聊天系统功能介绍

jm沟通 企业即时通讯有什么特点,为什么受欢迎?

JM沟通实现零距离交流 成现代企业办公的必备

即时通讯私有化完整版源代码分析后台数据库说明

即时通讯IM融云世界

新的市场叫板环信、融云、腾讯云!开源版IM即使聊天工具

公有云和私有云之间有什么区别?类似融云、环信云、网易云、哇谷云?

IM云系统即时通讯公有云、私有云、企业云、海外云-哇谷IM团队

2.0哇谷即时通讯系统正式上线适合大型项目运营超稳定性

哇谷科技JM沟通即时通讯内核升级新版哇谷2.0即将上线

im即时通讯社交软件APP红包技术分析(五):微信红包、聊呗红包、诚信红包、高并发技术

im即时通讯-微信红包、支付宝红包、聊呗红包、诚信红包、谈功能逻辑、容灾、运维、架构等。Q红包

更多文章

.

 企业即时通讯服务 | 商用红包功能构架 | 哇谷IM首页 | JM沟通IM下载 | IM功能与价格 | 即时通讯动态 | 热门动态 | 关于哇谷 |联系我们



--------------

热门搜索:

什么是私有云? 私有云、公有云还是混合云?企业该如何选? 企业聊天APP有什么作用,可以带来哪些便利? 企业选择混合云的优势 聊天APP应该具备哪些功能?怎么确保信息不被泄露? 企业即时通讯的使用价值有哪些 企业IM是什么,有什么使用优势? JM沟通优势有哪些,安全性怎么样? JM沟通APP功能强大且安全性高 IM云系统即时通讯公有云、私有云、企业云、海外云-哇谷IM团队 对于IM即时通讯的性能与并发性问题xmpp等各种通信协议 sso登录统一账号体系和集中认证授权 MongoDB数据库百万并发设计使用方法 WebRTC视频会议服务器性能10万并发 办公协同解决方案的意义 有什么优势? 美国FBI遭黑客攻击 超10万人收到垃圾邮件!这家零佣金券商也被攻击 用户数据泄露-企业即时通讯安全 工作台支持私有化部署-企业办公通信管理-软件开发管理系统-哇谷云 Application scenarios of wagu im cloud service A typical IM architecture might look like this 哇谷IM实现原理讲解-哇谷IM即时通讯云 JM沟通功能图片演示-哇谷IM即时通讯云 硬件配置选择-哇谷IM即时通讯云 IM私有化价格服务系统-哇谷IM即时通讯云 哇谷云服务项目表 哇谷IM定制私有化搭建资料准备工单-哇谷IM即时通讯云 APP中红包功能技术最常见的形式-哇谷im即时通讯云 私有云、公有云还是混合云?企业该如何选? 租用海外云服务器时应注意的事项 私有云比起公有云安全性大大提高 哇谷云服务应用场景十分丰富多元 聊天APP功能强大 用户群体越来越广泛 企业打造私有云平台需要注意的几点 企业聊天办公软件如何挑选,需要具备哪些功能? IM的作用可不只是单纯的聊天工具 企业使用即时通讯的好处有哪些? 企业通讯常见的困扰:有什么办法提高通讯质量? 聊天APP应该具备哪些功能?怎么确保信息不被泄露? 语音会议软件越来越多:到底哪个软件适合开会? 使用手机能否召开视频会议?哪些软件值得选择? JM沟通与传统通讯软件有何区别?是否只能用于社交? 语音会议效果难以保障 你有准备专业会议软件吗 专业企业通讯软件功能齐全 让办公变得更加轻松快捷 业应不应该开发聊天APP 三个不容拒绝的理由 企业通讯软件如何选择 隐私保护终于一切 视频会议没有专用软件 很多事情都无法处理 哪些是常用的微服务框架? 企业如何搭建私有云? 即时通讯软件是否具有聊天回执的功能? 企业即时通讯软件支持多设备登陆吗? 企业即时通讯适合中小企业的即时通讯软件? 盘点全球几大即时通讯软件 介绍两款国外大佬级别的即时通讯APP Short video features 即时通讯短视频功能的基本特点主要有哪些 Features of chat function 聊天功能在即时通讯软件中的产品特色体现在哪里 Increase the function of red envelope 为什么在即时通讯软件中会增加红包功能 instant messaging 即时通讯 办私密软件公 Office privacy software Cloud service 云服务 Im definition IM定义 How to meet office requirements Main features of instant messaging 即时通讯云软件应该如何达到集团办公的需求 企业即时通讯软件设计的特点主要有哪些 Instant messaging cloud red packet  福利发送新办法,IM即时通讯云红包功能的大势所趋 LAN communication 区域网通讯可以促进企业发展,使信息传输更快捷 Production guide of enterprise specific app 企业专属聊天APP的生产指南,这里应有尽有! Waguyun privacy protection 企业通讯无法得到私密保障?哇谷云上办公为您提供专业服务! Choose Wawa Guyun for internal communication 企业内部交流怎么办?现在有了哇谷云!  Advantages of LAN  局域网通讯企业真的需要吗?它有哪些优点? Enterprise instant messaging voice conference app 新发展、新机遇 全球疫情下的企业即时通讯语音会议 Provide efficient enterprise communication 专业呼叫中心 提供高效企业通信解决方案 New layout of global economic integration 协同办公解决方案,全球一体化经济新布局 There is more than one way for IM tools 还在使用微信?IM工具不止有一条途径 Power source for efficient operation 选择办公协同解决方案,现代企业高效运转的动力源 Efficient enterprise specific instant messaging 企业聊天APP,私密度高的高效企业专属即时通讯APP 新一代私有云与早期私有云的区别 The difference between private clouds What are the advantages of private cloud 新一代私有云有哪些优势? 单聊功能 群聊功能红包功能源码 实时音视频 短视频 音视频会议源码 低延迟直播 哇谷IM云服务 IM私有化搭建源码 私有化搭建准备文件 TF签名知识 企业即时通讯 IM 即时通讯 IM定制功能 语音聊天室 在线教育 金融服务 sso单点登录系统 政府加密沟通 企业通信办公 KTV点唱系统 局域网通讯 知识库 企业即时通讯 sso单点登录系统 KTV点唱系统版本Demo JM沟通2.0版本Demo 哇谷IM企业办公版本 哇谷工作台 短视频源码 音视频会议源码 直播聊天源码 ios超级签名服务 哇谷云 哇谷科技 即时通讯 IM下载http://www.juemigoutong.com/webproduct.html IM功能与价格http://www.juemigoutong.com/webcooperation.html 哇谷IM团队,哇谷即时通讯,哇谷官方站 即时通讯-哇谷即时通讯-IM-直播-短视频-音视频会议-大型企业即时通讯办-即时通讯源码-聊天app-http://www.wagukeji.com 即时通讯-哇谷即时通讯-IM-直播-短视频-音视频会议-大型企业即时通讯办-即时通讯源码-聊天app-sso-http://www.juemigoutong.com 即时通讯-哇谷即时通讯-IM-直播-短视频-音视频会议-大型企业即时通讯办-即时通讯源码-聊天app-http://www.wagu.cloud 即时通讯-哇谷即时通讯-IM-直播-短视频-音视频会议-大型企业即时通讯办-即时通讯源码-聊天app-http://bolg.wagu.cloud 即时通讯-哇谷即时通讯-IM-直播-短视频-音视频会议-大型企业即时通讯办-即时通讯源码-聊天app-http://so.wagu.cloud