本文转自【融云全球互联网通信云】,移步免费体验、了解更多。
信息技术的发展一日千里,但当技术照进现实,转变为让娱乐、生活更丰富,让工作更方便的实用能力,这个过程并非一日之功,也不是一成不变。
比如,IM 即时通讯中聊天室产品的聊天室属性,表面“其貌不扬”,内里则在多番场景实践下演变得“别有洞天”。
聊天室是直播、语聊房等社交泛娱乐产品必备的组件,它最显著的形态,就是我们常说的“公屏”——用户关系临时、消息内容短小重复的公共聊天频道。
殊不知,借助聊天室属性,它的作用远不止于此。这个功能的优劣,甚至直接影响语聊房和直播间的秩序和体验。
在指定聊天室中设置相关属性,用户进入聊天室后可以同步获取聊天室内的属性信息。
比如,语聊房中的主播麦位信息、角色管理等,狼人杀、剧本杀等游戏房场景中记录用户的角色和牌局状态等。
这是融云首创的产品功能,源于一位语聊房开发者对“抢麦”功能的实现需求。经过充分分析验证,这个需求在融云 IM 产品强大的外延能力下得以实现,进而沉淀为通用能力提供给更多开发者。
以此为界,聊天室产品的比拼有了新维度,在承接海量用户的并发能力之外,有了更具生命力、更加鲜活的功能表现,并逐渐构建了自己的迭代循环:功能领先→众多开发者集成→新的场景需求→研发新功能→功能持续领先。
随着人们的线上社交娱乐热情被点燃,聊天室的应用场景遍地开花,融云聊天室属性功能也不断在开发者的需求下丰富起来。
一、场景丰富:语聊房、直播中的聊天室属性
1、语聊房
一个语聊房可能有海量用户同时在线,任何一个人的麦位信息、角色身份等变化都需要在极短时间内同步给房间内所有人。
麦位管理:上麦即拥有了发言能力,下麦则从发言用户变成普通用户,锁麦即可锁定麦位拒绝用户上麦,抢麦则为几个用户同时抢占一个麦位。同时,还有禁言、发言等麦位状态管理。
用户管理:主播、麦上观众、房间观众等用户角色设置;狼人杀、剧本杀等游戏房中警、匪、平民等角色设置。
房间管理:房间人数、麦位数量、房间公告等。
PK 状态:语聊房跨房间 PK 中的双方支持人数战绩展示。
防炸麦:可通过聊天室属性设置在用户离线后及时清除连接状态,避免“幽灵麦”等情况的发生;通过聊天室属性的房间状态回调接口,开发者还可以实时感知用户的上下麦状态,如出现非法用户上麦的情况,可及时将其踢出房间,维护语聊房的正常秩序和良好体验。
2、直播
房间信息:房间人数、观众信息、房间公告。
角色管理:主播、管理员等角色信息和权限。
榜单信息:多维度观众榜单、最受欢迎礼物榜单等榜单信息。
PK 状态:连麦 PK 中的双方支持人数战绩展示。
商品信息:电商直播场景中,主播当前正在推广的商品信息。
语聊房、直播都是近些年娱乐消费侧的明星品类,而在企业级的远程会议场景,聊天室属性的使用也有一席之地——会议成员、人数等房间属性和主持人、管理员、参与者等角色信息和相应权限管理。
二、优势领先:稳定可靠,实时同步,接口灵活
聊天室属性首先有必达和实时的要求,比如麦位、角色等信息需要实时同步给聊天室的所有成员,且保持一定的秩序性,不会造成乱序等问题。
1、稳定可靠的架构设计
必达是对聊天室属性性能的核心要求,也就是业务所设置的属性能够稳定同步、不丢不乱,这其实考验的是整体的聊天室系统架构。
融云聊天室的系统架构如下图示,通过连接层、业务层、存储层的长连接、二级缓存、多活数据中心等方式保证响应速度和分发速度。
融云聊天室的系统架构
在海量用户高并发场景下,消息分发能力将决定着系统的性能。以一个百万级用户量的聊天室为例,一条上行消息对应百万倍分发。这种情况下,海量消息的分发,依靠单台服务器是无法实现的。
融云将一个聊天室的人员分拆到不同的消息服务上,在聊天室服务收到消息后向消息服务扩散,再由消息服务分发给用户。
融云聊天室消息分发流程
2、分层存储保障实时同步
聊天室属性是以 Key 和 Value 的形式进行传递和存储的,属性的操作行为主要有两种:设置、删除。服务器存储属性也分两部分,分别是全量的属性集合,以及属性集合变更记录。如下图所示:
融云聊天室属性存储结构
服务器存储的两份数据,提供了两种查询聊天属性的接口,分别是查询全量数据和查询增量数据。这两种接口的组合应用极大地提升了聊天室属性的查询响应能力。
对于刚进入聊天室的成员,直接拉取全量聊天室属性数据进行展示。
对于已经拉取过全量数据的成员,通过属性变更记录集合(Key 为变更时间戳,Value 里存着变更的类型以及属性内容),有序提供这段时间内所有聊天室属性的变更记录,实现增量数据的快速同步,减轻客户端的轮询计算压力。
3、灵活响应业务需求
每个聊天室可设置 100 对属性信息(KV),每秒钟支持处理 100 次的属性设置,可极大地满足用户场景需求。
同时,融云聊天室属性还具备以下特性以灵活支持各类实用业务需求。
支持强制设置单个属性,满足各种规则设置需求以维持房间秩序和业务的顺利开展。单个属性设置 Key 和 Value 一一对应,先到先得,可用于聊天室成员的抢麦、上麦等功能;而强制设置单个属性,则可强制覆盖 Key 上存储的 Value 属性,用于管理员对不发言或离线麦位成员的强制替换。
支持批量设置聊天室的属性,比如业务中某个同类型、同权限的角色人物有多个,则可以一次性统一设置多个,且支持只占用一对 KV。
属性可随用户在线状态自动删除或持续保留,当用户下线或退出聊天室,可以选择设置其相关属性随其在线状态消失或持续保留。
比如,麦上用户离线,其相关属性随其下线自动删除,以保证用户异常掉线时可释放麦位;而若用户身份为管理员,则其设置的房间公告等影响房间秩序的属性可选择持续保留。
属性信息可实时同步客户的应用服务器,让业务方实时掌握聊天室的变化状态,提升数据分析能力,更好地支持业务运营。
支持房间信息预览,当用户浏览 App 而未进入房间时,可以获取聊天室属性信息,为其选择加入房间提供判断依据和吸引力。
(免责声明:本网站内容主要来自原创、合作伙伴供稿和第三方自媒体作者投稿,凡在本网站出现的信息,均仅供参考。本网站将尽力确保所提供信息的准确性及可靠性,但不保证有关资料的准确性及可靠性,读者在使用前请进一步核实,并对任何自主决定的行为负责。本网站对有关资料所引致的错误、不确或遗漏,概不负任何法律责任。
任何单位或个人认为本网站中的网页或链接内容可能涉嫌侵犯其知识产权或存在不实内容时,应及时向本网站提出书面权利通知或不实情况说明,并提供身份证明、权属证明及详细侵权或不实情况证明。本网站在收到上述法律文件后,将会依法尽快联系相关文章源头核实,沟通删除相关内容或断开相关链接。 )