百万在线的美拍直播弹幕系统的实时推送技术实践之路

  • 时间:
  • 浏览:1
  • 来源:彩神大发APP_神彩大发APP官方

1)写消息流程是:前端机 -> Kafka -> 避免机 -> Redis;

  - c. 自动上报长连接性能数据;

《移动端实时消息推送技术浅析》

富足的降级手段:

2)接收直播间持续接收弹幕消息;

对于用户来说,在直播间有有另三个 典型的操作:

3)历史消息不须要重发:用户进群后,离线期间(接听电话)的消息不须要重发。

《Android端消息推送总结:实现原理、心跳保活、遇到的现象等》

从未来的发展来看,计划要做的事情有:

1)针对机房在北京,南方而且 地区会趋于稳定连接时间长的清况 (村里人 怎样才能让长连接更靠近用户?);

2)不能否支撑百万用户同去在线。

为了避免四种 现象,村里人 上加了有另三个 机制:

5)长连接业务模块用于用户进入直播间的验证工作;

《iOS的推送服务APNs详解:设计思路、技术原理及缺陷等》

详细说明:

不过这里有有另三个 隐藏的并发现象:用户机会丢消息。

2)前端机:机会延迟小,则只写入有另三个 Kafka 的partion;机会延迟大,则四种 直播的四种 消息类型写入 Kafka 的多个partion;

- 十余年的后端研发经历,拥有富足的后端研发经验,对于构建高可用、高并发的系统有较多实践经验。

2)读消息流程是:前端 -> Redis。

5)档位选则:自动选则档位,粒度:某个直播间的某个消息类型。

高可用保障建设完成后,迎来了 TFBOYS 在美拍的四场直播,这四场直播峰值同去在线人数达到近百万,共 2860 万人次观看,2960 万评论,26.23亿次点赞,直播期间,系统稳定运行,成功抗住压力。

《移动端IM实践:谷歌消息推送服务(GCM)研究(来自微信)》

- 毕业于西安交通大学,曾任职于网易和新浪微博,微博工作期间负责开放平台业务和技术体系建设;

基于这两点,村里人 策略是前中期 HTTP 轮询方案,中后期替换为长连接方案。而且在业务团队进行 HTTP 方案研发的同去,基础研发团队也紧锣密鼓地开发长连接系统。

  - b. 自动降级,机会长连接同去三次连接不上,自动降级为短连接;

《有另三个 基于MQTT通信协议的详细Android推送Demo》

直播弹幕是直播系统的核心功能之一。怎样才能没人来越快作出有另三个 有很好扩展性的弹幕系统?怎样才能应对业务没人来越快发展?相信什么都有工程师/架构师都在被委托人的想法。

3)被委托人发消息。

消息的返回条数根据直播间的大小自动调整:小直播间返回允许时间跨度大而且 的消息,大直播间则对时间跨度以及消息条数做更严格的限制。

弹幕数据也支持回放,直播刚开始后,那此数据存放于 Redis 中,在回放时,会与直播的数据竞争 Redis 的 cpu 资源。

《从HTTP到MQTT:有另三个 基于位置服务的APP数据通信实践概述》

3)避免机:机会延迟小,加锁串行写入 Redis;机会延迟大,则退还锁。而且有四种 组合,五个档位,分别是:

  - 有另三个 partion, 加锁串行写入 Redis, 最大并发度:1;

解释:

1)客户端在使用长连接前,会调用路由服务,获取连接层IP,路由层形状(a. 可太满再能否按照百分比灰度;b. 可太满再能否对 uid、deviceId、版本进行黑白名单设置):

机会是大直播间(订阅用户多),没人推送层与连接层的告知/拉取模型,就会自动降级为广播模型。

4)推送层存储用户与直播间的订阅关系,负责具体推送。整个连接层与推送层与直播间业务无关,不须要感知到业务的变化;

《扫盲贴:认识MQTT通信协议》

(本文同步发布于:http://www.52im.net/thread-1236-1-1.html)

  - 黑名单:不允许使用长连接;

长连接整体架构图如下:

这有另三个 形状保证了村里人 长短连接切换的顺利进行。

1)直播刚开始后,数据备份到 mysql;

本地缓存:前端机每隔1秒左右取拉取一次直播间的消息,用户到前端机轮询数据时,从本地缓存读取数据;

  - a. 同去支持长连接和短连接,可根据路由服务的配置来决定;

>>更多类式文章 ……

用户轮询最新消息,须要进行 Redis 的 ZrangByScore 操作,redis slave 的性能瓶颈较大。

解释:

直播间消息,相对于IM即时通讯的场景,有其十多少 特点:

2)连接层1收到告知消息后,会等候一小段时间(毫秒级),再拉取一次用户1的消息,而且推送给用户1。

同城双机房部署:

1)消息写入流程优化:前端机-> Kafka -> 避免机 -> Redis;

6)服务端之间的通讯使用基础研发团队研发的tardis框架来进行服务的调用,该框架基于 gRPC,使用 etcd 做服务发现。

2)增加一组回放的 Redis;

3)进入直播间:获取用户的列表,通过 Zrange 操作来完成。

《魅族260 0万长连接的实时消息推送架构的技术实践分享》

2)客户端的形状:

这里本地缓存与平常使用的本地缓存现象,有有另三个 最大区别:成本现象。机会所有直播间的消息都进行缓存,假设同去有60 0个直播间,每个直播间5种消息类型,本地缓存每隔1秒拉取一次数据,40台前端机,没人对 Redis 的访问QPS是   60 0 * 5 * 40 = 8万。成本太高,而且村里人 只能大直播间才自动开启本地缓存,小直播间不开启。

而且总的流程是:

《有另三个 基于长连接的安全可扩展的订阅/推送服务实现思路》

《腾讯信鸽技术分享:百亿级实时消息推送的实战经验》

 - 有另三个 partion, 不加锁并行写入 Redis, 最大并发度: 避免机的守护多多线程 池个数;

 - 多个partition,加锁串行写入 Redis, 最大并发度:Kafka partion的个数;

消息串行写入 Redis,机会某个直播间消息量很大,没人消息会堆积在 Kafka 中,消息延迟较大。

  - 多个partion, 不加锁并行写入 Redis,最大并发度: Kafka partition个数避免机守护多多线程 池的个数。

直播弹幕指直播间的用户,礼物,评论,点赞等消息,是直播间交互的重要手段。美拍直播弹幕系统从 2015 年 11 月到现在,经过了有另三个 阶段的演进,目前能支撑百万用户同去在线。比较好地诠释了根据项目的发展阶段进行平衡演进的过程。这有另三个 阶段分别是快速上线、高可用保障体系建设、长连接演进。具体我将在正文中展开,请继续往下阅读。

(本文同步发布于:http://www.52im.net/thread-1236-1-1.html)

《专访魅族架构师:海量长连接的实时消息推送系统的心得体会》

《极光推送系统大规模高并发架构的技术实践分享》

村里人 把礼物,评论,用户的数据都当做消息来看待。

1)用户发消息:通过 Zadd,其中 score 消息的相对时间;

如上图所示,某个用户从第6号评论刚开始拉取,同去有有另三个 用户在发表评论,分别是10,11号评论。机会11号评论先写入,用户刚好把6,7,8,9,11号拉走,用户下次再拉退还息,就从12号刚开始拉取,结果是:用户没人看完10号消息。

分为主机房和从机房,写入都在主机房,读取则由有另三个 机房分担。从而有效保证单机房故障时,能快速恢复。

2)松散的群聊:用户随时进群,随时退群;

避免土法律土办法:

《信鸽团队原创:同去走过 iOS10 上消息推送(APNS)的坑》

回顾了系统的发展过程,达到了原定的前中期使用轮询,中后期使用长连接的预定目标,实践了原定的平衡演进的原则。

《深入的聊聊Android消息推送这件小事》

3)连接层只负责与客户端保持长连接,没人任何推送的业务逻辑。从而大大减少重启的次数,从而保持用户连接的稳定;

4)延迟程度判断:前端机写入消息时,打上消息的统一时间戳,避免机拿到后,延迟时间 = 现在时间 - 时间戳;

经过考虑选则了 Redis 的 sortedset 存储消息,消息模型如下:

《IBM技术经理访谈:MQTT协议的制定历程、发展现状等》

《Go语言构建千万级在线的高并发消息推送系统实践(来自360 公司)》

2)在避免机:同有另三个 直播间的同四种 消息类型,通过 synchronized 保证写入 Redis 的串行。

1)快速上线;

《缘何微信、QQ本来的IM工具不使用GCM服务推送消息?》

《实践分享:怎样才能构建一套高可用的移动端消息推送系统?》

回放时,读取数据顺序是: local cache -> Redis -> mysql。localcache 与回放 Redis 都可太满再能否只存某个直播四种 消息类型的次要数据,有效控制容量;local cache与回放 Redis 使用SortedSet数据形状,本来整个系统的数据形状都保持一致。

上线后,随着量的逐渐增加,系统陆续暴露出有另三个 比较严重的现象,村里人 一一进行了避免。

  - 白名单:即使长连接关闭机会没了灰度范围内,也允许使用长连接。

- 2015年9月加入美图,就职于架构平台部,目前负责次要核心业务和基础设施的研发,包括弹幕、Feed、任务调度和质量监控体系等;

2)消息模型的进一步演进。

本文作者是美拍的架构师,经历了直播弹幕从无到有,从小到大的过程,借此文为村里人 分享构建弹幕系统的经验,希望能为正在开发或正打算开发弹幕、消息推送、IM聊天等系统的技术同行带来而且 启发。

3)前端机增加回放的 local cache。

(本文同步发布于:http://www.52im.net/thread-1236-1-1.html )

避免土法律土办法:

村里人 经历客户端有另三个 版本的迭代,实现了两端(Android 与 iOS)长连接对短连接的替换,机会有灰度和黑白名单的支持,替换非常平稳,用户无感知。

2)接收直播间的消息:通过 ZrangeByScore 操作,两秒一次轮询;

1)推送层查询订阅关系后,知道有用户1订阅了A直播,同去知道用户1在连接层1四种 节点上,没人就会告知连接层有新的消息;

举例说明:用户1订阅了A直播,A直播有新的消息

避免土法律土办法:

1)消息要求更及时:过时的消息对于用户来说不重要;

《求教android消息推送:GCM、XMPP、MQTT四种 方案的优劣》

村里人 采用了订阅推送模型,下图为基本的介绍:

美拍直播弹幕系统在设计初期的核心要求是:

《百万在线的美拍直播弹幕系统的实时推送技术实践之路》

1)进入直播间,拉取正在观看直播的用户列表;

全链路的业务监控:

消息模型及并发现象避免后,开发就比较顺畅,系统放慢就上线,达到预先预定目标。

《扫盲贴:浅谈iOS和Android后台实时消息推送的原理和区别》

1)在前端机:同有另三个 直播间的同四种 消息类型,写入 Kafka 的同有另三个 partition;

《绝对干货:基于Netty实现海量接入的推送服务技术要点》

《基于WebSocket实现Hybrid移动应用的消息推送实践(含代码示例)》

如下图所示:

猜你喜欢

在.NetCore中使用Myrmec检测文件真实格式

github地址:https://github.com/rocketRobin/myrmecnuget地址:https://www.nuget.org/packages/Myr

2020-03-22

目前哪些手机可以无线充电怎么无线充电

三星S10Plus华为Mate20Pro无线充电,是近一两年来在旗舰手机上经常出显的俩个 多功能,当然,目前来看,搭载无线充电功能的手机还不过多,我来推荐几款。华为Mate2

2020-03-22

阿里云CDN直播架构与双11晚会直播实战

电商直播的最佳实践猫晚流量再创记录,阿里云直播方案护航优酷21150万用户体验【云栖精选11月刊】揭秘双11肩头的互联网技术超级工程阿里云跨界商务媒体合作芒果TV看明星也用云计

2020-03-21

国美 京东 天猫 苏宁在哪个买电器便宜靠谱?

下载百度知道APP,抢鲜体验至于价格展开完整性使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。不得劲推荐为你推荐:基本差太满换一换你对这种回答的评价是

2020-03-21

2019年即将进入尾声,你的2020年最想做什么事?

3、找到俩个 多多 可不还要长期发展的行业并现在结速投资。不怎么推荐展开全部8、希望我的第7条可不还要实现。5、希望我中间的1234条都能实现。使用百度知道APP,立即抢鲜

2020-03-21