《2. 实时应用场景中声网RTM的架构演进及最佳实践(刘畅).pdf》由会员分享,可在线阅读,更多相关《2. 实时应用场景中声网RTM的架构演进及最佳实践(刘畅).pdf(50页珍藏版)》请在三个皮匠报告上搜索。
1、实时应用场景中声网RTM的架构演进及最佳实践刘畅声 资深架构师 RTM 技术负责1实时互动场景及其痛点什么是实时互动场景?视频播放视频直播直播连麦什么是实时互动场景?网页APPIoT小程序穿戴设备什么是实时互动场景?信息获取即时互动身临其境什么是实时互动场景?并非新的种类,而是必经之路Startup、独角兽、巨头都在使用声网实时音视频服务泛娱乐出海IoT数字化教育实时互动案例分析但,实时互动不仅需要实时音视频电商竞拍在线会议元宇宙平行驾驶在线电商场景分析搜索推荐购物车下单比个价?双11?“一二三,上链接”“秒拍秒付”“卖光了”又上头了。在线电商场景分析拍卖场景库存稀缺性150k150kA:15
2、0kABCA:150kT1:出价传递到服务器T2:出价同步到所有观众T3:新加收到最新出价在线电商场景分析竞价边缘Websocket跨区加速在线电商场景分析竞价同步A:150kA:150kA:150kA:150kA:150kC:100k快照:A:150k在线电商场景分析实时数据库A:150kA:150k实时数据库在线教育(会议)场景老师端学生端麦位状态即时通信课件白板在线教育(会议)场景在线状态之谜RTC白板即时通信我在啊!老师不在!解散!在线教育(会议)场景你的克真的关了吗?为啥不理我?我看到了什么!游戏及元宇宙场景虚拟空间RTCXR全球同服游戏及元宇宙场景伴随发送平行驾驶案例分析平驾驶=远
3、程驾驶 机主摄多视角辅摄操作台车辆状态信息平行驾驶案例分析消息的可靠性手机没信号,走两步车没信号,趴窝实时互动案例分析总结极低时延多路传输可靠低延时可靠的RPC能流粒度按需订阅与视频同步端侧状态同步统在线状态Local First链接状态感知状态维护消息类2声网RTM产品演进RTM 1.x 能力介绍点到点消息(可靠单播)群组消息(广播)发给指定户端到端ACK(成功或超时)加群组,收发消息单端可以同时加50个群组单群组发送和接受数限制RTMRTM 2.x 能力汇总RTM2Message ChannelStream ChannelStoragePresenceRTM 1.xServer Group
4、WebhookLock极低时延多路传输可靠流粒度按需订阅与视频同步RPC能端侧状态同步端侧状态同步统在线状态Local First链接状态感知Message Channel易性提升简化接 Pub/Sub增加Message Type,持进制和字符串不加频道才能发送传输络切换到SD-RTNrtmClient.addEventListener(message,event=showMessage(event.publisher,event.message););await rtmClient.subscribe(test_channel,options);await rtmClient.publish
5、(test_channel,Hello world);了解更多:https:/ Channel频消息发送了解更多:https:/ Channel APositionFacial CaptureMovement CapturePublishTopicSubscribeSubscribe(publisher=A)Stream Channel BStream Channel频消息发送了解更多:https:/ streamChannel=rtmClient.createStreamChannel(test_channel);await streamChannel.join(options);await
6、 streamChannel.joinTopic(position);await streamChannel.publishTopicMessage(position,payload,options);rtmClient.addEventListener(message,event=showMessage(event.publisher,event.message,event.channelType););await streamChannel.subscribeTopic(position,options);Stream Channel频消息发送流粒度按需订阅复RTC通路提供QOS保证Bes
7、t Effort(默认)SequentialPrioritySync With MediaMultipath了解更多:https:/ Channel与视频同步tsjitter bufferjitter buffer了解更多:https:/ Channel频消息发送了解更多:https:/ jOptions=new JoinTopicOptions();jOptions.syncWithMedia=true;streamChannel.joinTopic(facial,jOptions,new ResultCallback();byte message=new byte 00,01,35,196
8、;var options=new PublishOptions();options.sentTs=ts;/Get Ts from getAgoraCurrentMonotonicTimeInMsstreamChannel.publishTopicMessage(facial,message,options,new ResultCallback();Stream ChannelMultiPath了解更多:https:/ Metadata与UserID对应单层的档结构(Json/Document)CRUDawait rtm.storage.getUserMetadata();await rtm.s
9、torage.getUserMetadata(userId:Tomas);const data=key:Age,value:45;await rtm.storage.updateUserMetadata(data);await rtm.storage.removeUserMetadata(key:Age);rtm.addEventListener(storage,event=showMessage(event.publisher,event.message,event.channelType););await rtm.storage.subscribeUserMetadata(Tomas);t
10、otalCount:3,majorRevision:734874892,metadata:Age:value:45,revision:734874862,updated:00,authorUid:Tony ,userId:Tony,timeToken:StorageChannel Metadata与Channel对应包括Message Channel和Stream Channel单层的档结构(Json/Document)CRUD订阅变化const options=withMessage:true,withMetadata:true;await rtm
11、.subscribe(test_channel,options);stChannel=await rtm.createStreamChannel(test_channel);const options=withMetadata:false;await stChannel.join(options);Storage全球最终致同步服务端修改,端侧感知变化updateChannelMetadata Apple:100,Banana:300Banana:300 Apple:100,Banana:300 Apple:100,Banana:300Storage全球最终致同步服务端修改,端侧感知变化端侧间互
12、动,服务器感知 Apple:200,Banana:300 Apple:200,Banana:300 Apple:200,Banana:300updateChannelMetadataApple:200 Apple:200,Banana:300CAS机制:https:/ vs.基于超时“她走了”“她来了”基于链接难以实现最终致消息丢失导致不准确延迟时间众难调Presence基于链接 vs.基于超时全球状态致超时可定义 keepalive keepalive expired expired eventrtm.addEventListener(presence,event=if(event.even
13、tType=REMOTE_TIMEOUT);const options=withMessage:true,withPresence:true;await rtm.subscribe(test_channel,options);Presence临时数据单层的档结构(Json/Document)户级CRUD订阅变化Localfirst离开或超时后动清除 Tomas:Mic:on,Camera:off,Adam:Mic:off,Camera:offTomas:Mic:on Mic:onsetStateTomas:Mic:onconst states=Mic:on,;await rtmClient.p
14、resence.setState(test_channel,MESSAGE,states);rtm.addEventListener(presence,event=if(event.eventType=REMOTE_STATE_CHANGED);Server Group持服务端RPC负载均衡持平扩展RTMLBComing soon.3实时场景中的最佳实践电商竞拍场景最佳实践 bid update bid success sync to Metadata broadcast subscribe latest bid使ServerGroup进竞价RPC客户中化结果决策使Channel Metada
15、ta同步结果在线教育(会议)场景最佳实践使Presence维护户在线使Presence维护位等临时状态使Metadata维护强致房间状态 rtc.muteSelf presence.set(mute,true)重连 广播“怪不得听不到”在线教育(会议)场景最佳实践使Presence维护户在线使Presence维护位等临时状态使Metadata维护强致房间状态 presence.set(hand,true)重连 广播“Tomas,你来回答”超时“欧,Alice掉线了”游戏及元宇宙场景最佳实践使Presence维护全局地图使Stream Channel传递实时位置,动捕,捕使Stream Chan
16、nel基于位置远近按需订阅使SyncWithMedia解决与视频同步使Metadata维护户和房间状态 presence.set(loc,xxx)check who is near subscribe stream and audio buy new cloth request sync metadata broadcast“他的头盔好帅!”平行驾驶最佳实践使StreamChannel与RTC共频道启MultiPath启优化调度,同边缘接基于Presence提供辆(设备)在线状态我们的使命帮助人们跨越距离,实时互动,如聚一堂 bid update bid success sync to Met
17、adata broadcast subscribe latest bid rtc.muteSelf presence.set(mute,true)重连 广播“怪不得听不到”presence.set(hand,true)重连 广播“Tomas,你来回答”超时“欧,Alice掉线了”presence.set(loc,xxx)check who is near subscribe stream and audio buy new cloth request sync metadata broadcast“他的头盔好帅!”感谢参与THANKS扫码填问卷声网SD-RTN最优路径15m/0%75ms/2%28ms/0%63m/0%38m/0%68m/15%50ms/1%95m/0%48m/2%声网SD-RTN最优路径孟买-北京直连SD-RTN