关于android:要把微博贴吧变成即时聊天总共分几步

3次阅读

共计 3964 个字符,预计需要花费 10 分钟才能阅读完成。

刷微博是许多人每天的“例行指部锤炼”,一扫一划,就能评论热点话题,订阅热门动静。当然,也有不少人对明星不感兴趣,转而去刷 Reddit、贴吧、虎扑、常识星球或是其余 BBS 社区。对于 90、80 起初说,这个被“刷”的对象可能是已经的即刻、糗百,咫尺、猫扑。 关注【融云寰球互联网通信云】理解更多

能够说,“聚众看热闹”是人类永恒不变的喜好,但咱们看热闹的形式却并不丰盛:要么刷 BBS 社区,要么扎进社交软件的群聊。

不知你有没有想过,如果将二者合二为一,让微博、贴吧这样的社区,全副变成即时聊天,各个博主、吧友的动静,全副以群聊音讯的模式推送给你,你又能够即时地回复、互动,甚至和这些博主、吧友连麦视频,状况会是怎么的?

这将是一个超级社区,或者更精确地说,这将是一个无人数下限的“超级群”。

可这个“超级群”,实现起来将十分艰难。在程序员看到产品设计的那一刻,就有精力解体的危险。


(真正的服务器压力)

解体”次要源自技术挑战,更确切地说,是服务器面临的微小的读写压力和存储压力。

微博曾呈现过几次驰名的故障:赵丽颖领证、关晓彤官宣、王宝强离婚。在调侃微博解体的各种网络段子背地,咱们能看到的是,一个架构师面对一条微博下几秒新增数万条评论,服务器压力霎时暴涨几十倍的无奈身影。

与此类似的是直播弹幕的散发场景。无论是近期的视频号五月天跨年演唱会,还是 B 站春晚,弹幕过百万轻而易举(“二零一九最美的夜”bilibili 晚会弹幕超过 170 万条)。

实践上讲,每一条弹幕都要向直播间内观众做全量散发。以五月天跨年演唱会为例,当晚有 1,680 万人在线上观看,如果激进假如当晚共发送 100 万条弹幕,那么单是弹幕的写操作,就至多要执行 16,800,000 x 1,000,000 次。

因为理论撑持有艰难,又要顾及用户的屏幕根本无法同屏显示上万条评论,所以弹幕的转发个别都是降级解决 —— 散发一小部分给你看,其余略过。

而如果将微博评论、直播弹幕,全副“群聊化”,问题会更加恐怖。“群聊化”后,产品状态成为“超级群”,问题进入 IM 场景,能够做相应的流控,但不能抛弃信息。且无论是微博评论还是直播弹幕,对信息上下文的关注度都不高,但这恰好是 IM 关注的重点。

能够说,至多在 3 年以前,可能零碎解决这些问题并将其打磨为一个成熟产品的人不多。直到 2018 年,国外呈现了一个名叫 Discord 的软件,网友才体验到了这种全新的社区模式。

Discord 最后只服务于游戏语音连麦,但很快演变为一个超级社区。2021 年,据 CNN 报道,Discord 已有超过 1.4 亿名注册用户,微软正在会谈以 100 亿美元收买它。

而在 npr 的采访中,美国芝加哥地区的一名 18 岁少年示意,他 2020 年的大部分工夫都在 Discord 上晃荡,并将其形容为“Reddit 和群聊的混合体”。

元宇宙的支持者们也惊奇地发现,所谓的“Discord 模式”,不就是将来元宇宙虚拟社区的根底模式么?在元宇宙里,总不能先加个 500 人的群再开始聊天吧。

抛开模式翻新不谈,如果要深究 Discord 的技术外围,恰好就是咱们后面所形容的“超级群”。而在 2022 年 1 月 11 日,融云也公布了一款名为“超级群”的 PaaS 产品,以此为例,咱们或者能搞清楚,这种带了点科幻色调的将来社区,到底是如何实现的。


(超级群的设计架构和实施方案)

超级群的底层技术撑持能力,能够简略分为两局部来谈,别离是超级群业务能力、IM 底层技术能力

超级群的业务能力,在架构设计层面共分为四层,别离是减速网络、接入层、外围服务层以及底层存储。之所以要做这样的划分,是为了充分利用融云本身的对立减速网络机制, 保障网络连通性以及连贯品质,让超级群能够依据本身业务需要, 在连贯通道的根底上,分心实现更高效的业务交互。

在融云,传统的群音讯建设在收发模型(收件箱、发件箱)的根底上,独立保护会话列表和历史音讯存储。从用户发送群音讯,到群内 (成员数量为 N) 接管群音讯。整个过程将产生四类音讯:

  1. 一条发送方发件箱记录;
  2. N-1 条接管方的收件箱记录;
  3. 1 条群历史音讯记录;
  4. N 条会话列表记录。

音讯存储投递流程为:

终端 A -> 发送音讯 -> 接入服务 -> 群治理 (群音讯上行) -> 散发 -> 群聊音讯散发节点 -> 音讯节点 -> 告诉拉取 (间接发送) -> 终端 B/C/D

在这样的流程下,音讯散发节点与音讯节点交互亲密,通常合并部署。同时,音讯节点也会间接触发收件箱、发件箱的音讯存储。

但在超级群的场景下,群成员数量实践上无下限,无论是音讯的上行、上行,还是音讯在存储层的写入和查问,都将导致空前的服务承载压力,以上计划因而不再实用。于是,融云在现有连贯机制之上, 针对超级群做了交互设计优化,设计了两种散发模型: 别离叫做音讯驱动模型和会话驱动模型。

对于音讯驱动模型而言,音讯节点将不再间接触发收件箱存储操作。

融云特地设计了一个环状音讯队列, 通过内存搭配内部缓存的形式,实现最近 N 条音讯的缓存, 并通过对音讯存储模型优化, 实现热点数据的疾速读写。对音讯的上行,则做聚合解决,保障客户端可能解决大量音讯变更告诉,并且尽量减少交互次数,也让音讯的拉取变得更疾速、精准。

会话驱动模型则是在音讯驱动模型的根底之上, 做进一步的优化。

首先,音讯节点不会再告诉客户端拉取音讯,而是通过触发实时会话, 告诉客户端会话产生变更。而这里的实时会话,则是实现客户端订阅机制的根底, 让客户端能够只获知已订阅的会话变更音讯,从而进一步放大须要解决的会话以及音讯数量。

其次,客户端在收到会话变更告诉后, 会依据告诉,判断是否要发动会话音讯查问操作。如果是,则依照肯定的机制查问最新或特地范畴的音讯。

除音讯散发层面的优化外,对存储的优化也十分要害。融云超级群的所有服务,均依照业务维度进行一致性哈希散发。比方,上行服务能够依照群 ID 或 channel ID 做哈希,散发服务能够依照接管方 ID 做哈希。外围指标在于确保热数据的命中,优先应用内存、LRU 缓存、再应用分布式缓存、磁盘冷存储。

APP、群组、信令级别的流控,则是另一重保障,它将一个看似无边界的产品需要,转化为了可推敲、可实现的技术问题。因而,尽管流控不是超级群实现计划的重点,但仍然不可或缺。

整体而言,融云的超级群构建计划有四个要点:

  1. 弱化原发件箱 / 收件箱模型, 尤其是收件箱, 以极大晋升读写性能,防止因 I/O 而产生的性能瓶颈;
  2. 通过 ” 变更告诉 ” 聚合等形式,尽量减少终端与服务端的交互次数,缩小因网络交互而产生的延时;
  3. 设计专用数据结构 (环形队列), 并设置内存、内部缓存等多级缓存构造, 晋升超大规模下的音讯散发存储速度, 并提供疾速查问能力;
  4. 通过会话驱动模型, 进一步缩小网络交互过程中,待传输的数据量。

那么,有了以上计划,是否就能够构建出一个“超级群”呢?显然还不够,在超级群的场景之下,IM 底层技术能力的积攒可能更为重要。


(IM 底层技术能力与网络层性能优化)

如果要解读融云超级群所依赖的 IM 根底能力,恐怕一本迷你书也写不完,其粗略架构图如下:

但好在,对于超级群,咱们只需重点关注其在网络层面的依赖即可。

对于所有的 IM 服务而言,底层网络的减速能力都是要害。融云的底层服务网络全称是融云寰球通信网络 (以下简称为 SD-CAN,Software Defined – Communication Accelerate Network),汇合了 BGP anycast、SD-WAN、对等连贯、动静 CDN、智能 DNS 等多种网络减速形式。

对于超级群来说,SD-CAN 容许客户端 SDK 通过查问和探测确定地区和运营商以及最初一公里的网络状况,将用户就近调度到融云的网络边缘节点, 边缘节点根据信令的申请指标地址投递到路由节点,实现数据会集,再由路由节点辨认并转发到对应的数据中心。

举个例子,如果北美用户要拜访中国国内的数据中心,典型的两条门路是:

  1. 北美用户 -> 间接连贯 -> 国内数据中心接入服务 -> 业务服务;
  2. 北美用户 -> anycast -> 北美数据中心边缘节点 -> 北美数据中心路由节点 -> SD-WAN/ 对等连贯 -> 国内数据中心路由节点 -> 国内数据中心接入服务 -> 业务服务。

客户端会依照服务下发的策略,做并行探测并同时建设连贯。对最优链路的抉择,依赖于建连提早、心跳距离、链路发送接管情况等信息。服务器也会定期检查连贯的衰弱度,被动敞开长尾连贯,联合客户端的重连机制,一起保障对最优链路的调用。


(PaaS 产品靠近齐备,或将填补元宇宙到来前的空白)

除了技术实现,挑战也呈现在产品设计层面。

因为超级群中的信息量太大,须要反对将群宰割为不同的频道,相似传统的 topic 或 channel。即便雷同的群和群成员,通过不同的频道,依然能将会话、音讯、未读数分门别类聚合。用户能够更关注本人感兴趣的局部,晋升用户黏性。

这也反映了用户在超级群场景下的真正需要:我或者会心愿在一个有数十万网友的超级群中建设社交关系,但却不心愿被数十万音讯打搅生存。

此外,对于融云来说,超级群是个 PaaS 产品,这意味着要为客户端留下富余的可定制空间,在不同的场景,对信息推送的形式、逻辑、频率都有不同的要求。同时,将信息和聊天联合的场景,个别都有多端的需要。不同的平台,比方 Android、iOS、Web 等,在海量音讯的网络申请和存储方面都有不同的技术特点,甚至同平台不同厂商的推送通道个性也不同,这些都须要一一思考。

最近几年,社交畛域的新兴公司新增不多,整体增长呈降落趋势。这一方面是因为流量向头部高度集中,挤压了新玩家的空间;另一方面也是因为短少新模式,大家仍在围绕存量用户做竞争。

超级群这一新利用状态,可能会对社交软件整体的倒退,产生微小的牵引作用,从而带来新的机会。同时,PaaS 产品的齐备,也标记着实现产品翻新的技术根底曾经夯实,这或将在产品层面,填补从微信、语聊房迈入元宇宙的最初一段空白。

正文完
 0