一个热门视频直播间人数可能达到几十万甚至上百万人,几十万人发消息,几十万人接收,流量相当惊人,那么服务端要如何设计才能保证系统流畅?本文作者将结合他在网易云信多年IM开发的经验进行深度分析。

推荐阅读

高并发IM系统架构优化实践

IM即时通讯:如何跳出传统思维来设计聊天室架构?

                                                                        聊天室架构应满足哪些条件

高可用:任何一个节点故障都不应该引起服务不可用;

易扩展:具有水平扩展的特性,对不同量级的在线用户数都有应变的能力;

高并发低延迟:能支持大量的用户同时收发消息,消息从发出到送达所有在线端的延时在毫秒级;

客户端兼容性:新型的应用都是能同时跨多种设备实现消息互通的,比如网页端,手机端和桌面端,甚至智能电视等。

                                                                            聊天室架构如何设计

客户端层

处理各种设备的兼容问题,包括对ios,Android,Windows, Web等各种开发平台的语言适配;消息通道的管理维护,包括移动设备上的弱网络管理,断线重连等;保证数据安全,所有上行下行的数据包都需要加解密处理,规避数据泄露或中间人攻击等各种安全风险。

网关接入层

管理大量客户端连接,单个节点可以维护的客户端数量在数十万量级;处理不同类型客户端的协议兼容,由于客户端实现技术的多样性,导致客户端与网关之间底层的数据通信协议存在差异,需要由不同的接入网关做协议转换;处理数据安全逻辑;跨网络的高可用逻辑,网络级别的主备(谁知道哪天网线会被蓝翔的毕业生挖断呢?);广播消息的高效下行分发,将收到的广播消息分发到所有连接在本节点上的客户端。

路由层

作为业务层接入的中转,同时承担负载均衡和高可用的作用,单个业务节点处理能力达到瓶颈时更方便的扩容,路由层使业务层扩容对前置网关层完全透明;当一个网络的业务集群出现网络故障时,可以切换到备用网络,保证服务可用性。

业务层

处理聊天室内的业务消息,一个集群内有众多节点,节点角色相互对等,任何一个节点的故障会使整个集群的处理能力下降,但不会引起服务的中断,因为其他节点可以继续接管业务数据包的处理;业务集群同样有多个网络环境的热备,以应对可能出现的区域性网络故障。

                                                                                      难点在哪里

客户端多样性

目前的应用都存在跨平台的需求,iOS、安卓和PC端,网页端,甚至IOT物联网设备,能连多少是多少,多多益善;但是不同开发平台之间的技术差异性极大,不是所有公司都有这么全的全栈程序猿的;如果团队开发的话单就客户端开发人员就不是几个人可以完成的。

数据安全的保证

当前的网络安全形势异常复杂,开发应用时如果不在通信安全上花心思,那你的用户就是在互联网上裸奔;开发者需要针对不同的平台,不同的通信技术实现可靠的安全方案,避免用户数据在传输过程中泄露,避免中间人攻击等安全风险。

跨机房网络级的高可用方案

当机房网络出现故障时把责任推给市政施工队或者“网络抽风”已经不流行了,用户需要的是故障无感知。

所有环节的单点故障排除

任何硬件和软件都存在故障的可能,我们无法避免应用罢工,那就需要随时准备替补上场。

能应对任何用户量级的需求

架构级做到水平扩展的能力,当用户量增长时随时可以通过堆服务器来解决,而不是将架构推倒重来。

看完文章还是不知道怎么做?那么可以尝试借用目前已有的平台或工具,现在应用需要关注的是怎么以最快的速度抓住用户。网易云信是一个面对开发者的很好的IM云平台。十余年的研发积累,使其在即时通讯技术方面处于全国领先水平。网易云信至今已申请了60余项IM专利,远超市场同类产品。欢迎大家与我们讨论IM技术,也欢迎大家多多关注网易云信。

另外,想要获取更多产品干货、技术干货,记得关注网易云信博客哦~

几十万人同时在线的直播间聊天,如何设计服务端架构?相关推荐

  1. 十几万人同时在线的直播间聊天,如何设计服务端架构?

    问题 以下内容源自oschina的一篇讨论帖: 问题:这是在知乎上看到的关于如何搭建视频直播系统时想到的一个问题,在此不考虑其他直播上的问题,仅考虑聊天系统,一个热门视频直播间人数可能达到几十万人,一 ...

  2. Websocket直播间聊天室教程 - GoEasy快速实现聊天室

    最近两年直播那个火啊,真的是无法形容!经常有朋友问起,我想实现一个直播间聊天或者我想开发一个聊天室, 要如何开始呢? 今天小编就手把手的教你用GoEasy做一个聊天室,当然也可以用于直播间内的互动.全 ...

  3. 视频直播源码中关于服务端直播开播推送实现

    在视频直播源码中直播app开播时需向客户推送开播消息通知用户,实现方式如下: 1.申请相应的推送服务三方,如下使用极光推送,获取相应的配置资料,并做好相应的配置 2.推送代码如下: /* 极光推送 * ...

  4. 模拟“12306”服务端架构:100万人同时抢1万张火车票

    ▼数据猿年度征集评选正在进行中▼ 大数据产业创新服务媒体-聚焦数据·改变商业 数据猿官网 | www.datayuan.cn 今日头条丨一点资讯丨腾讯丨搜狐丨网易丨凤凰丨阿里UC大鱼丨新浪微博丨新浪看 ...

  5. 百万人在线的直播间实时聊天消息分发技术

    随着直播类应用的普及,尤其直播带货概念的风靡,大用户量的直播间场景已然常态化. 大用户量直播间中的实时互动是非常频繁的,具体体现在技术上就是各种用户聊天.弹幕.礼物.点赞.禁言.系统通知等实时消息. ...

  6. UGUI实现直播间聊天消息滚动功能

    如今直播APP火的简直不像样子了.在直播间里会有观众和主播交流的功能.主要方式是主播动口(说),观众动手(打字).这篇文章讲解一下观众客户端聊天功能的实现.这里为了更清楚的看到效果功能,我做了一个客户 ...

  7. 多人私密视频直播会议聊天室系统开发

    多人视频直播会议聊天室系统开发 轻便小巧无须安装 绑定公号无须登录 界面简洁操作方便 权限管理避免白嫖 前端/ 会议设置 用户可以设置姓名 管理员可以修改会议主题和分享说明文字 多人视频 左上显示用户 ...

  8. iOS直播间聊天室遇到的问题

    Question: 1.刷新直播间消息机制该用哪种方法?哪一种更加合适? 2.聊天室该如何图文混排? 3.聊天室出现特殊字符临界点不换行?高度计算错误? 4.聊天室该如何加载网络图片? 5.聊天室如何 ...

  9. [游戏服务器]第一章:多人聊天室-服务端

    游戏服务器 多人房间 高并发 低延时 数据可靠 ... 那么怎么去实现这些功能呢,下面我将会带着大家一起去探寻游戏服务器的奥秘 我不是巨人,我只是站在巨人的肩膀上 我将会分城多个章节去研究游戏服务器的 ...

最新文章

  1. python初步入门_python如何入门
  2. vb.net2019-Accord.Net机器学习库安装与SVM简单分类
  3. Proguard源码分析(五) ConfigurationParser.keep参数
  4. 台式电脑如何截屏_电脑如何安装安卓系统 台式机装安卓系统教程
  5. 一个小菜鸟给未来的菜鸟们的一丢丢建议
  6. 前端学习(2529):搭建中央管理
  7. GitHub+Vue自动化构建部署
  8. wow修改人物模型_玻璃钢气球狗模型景观雕-东莞气球树脂雕塑
  9. 中兴通讯午后复牌:A股涨停 港股盘中涨逾53%
  10. [Twisted] Protocols协议和Protocol Factories 协议工厂
  11. 给开发说:今天上线!
  12. html5 canvas带音效的新年烟花特效,真的好看极了
  13. 重新定义QLabel的clicked事件
  14. 1. NET 6.0 前言
  15. react-custom-scrollbars 滚动条组件的简单实现
  16. unity3d FPS 枪的后座力
  17. 什么是固定资产管理系统?固定资产管理小程序有哪些功能?
  18. 【JAVA工具类】批量修改文件名称修改成特定名称
  19. libuv介绍与编译
  20. mysql 只显示第一条记录_MySQL:此种查询结果,怎么仅保留第一条记录?

热门文章

  1. 从0开始学Swift笔记整理(一)
  2. (十三)洞悉linux下的Netfilteramp;iptables:为防火墙增添功能模块【实战】
  3. mySql完全手册2011022301
  4. 小学计算机试教教案,小学信息技术人教版三年级下册第7课《轻轻松松来上网》优质课公开课教案教师资格证面试试讲教案...
  5. 东南大学数字信号处理实验_【鹏城实验室校招】数字信号处理助理研究员
  6. 可用子网数要不要减2_网络层 | 网际协议IP(2)
  7. 科研小白在首次论文写作时需要注意哪些问题?
  8. Visual Studio 2019 安装教程 附免费安装包资源
  9. python多元线性回归模型案例_Python 实战多元线性回归模型,附带原理+代码
  10. Python-Opencv学习-实验-1:工具安装