技术要求: 做能承载百万并发的直播平台
源码地址:https://gitee.com/godsdodo/tencent-live.git
涉及产品线:高并发缓存技术,短链分发,音视频整合,直播推流,主播端合并推流,OBS推 流,伪直播(拉流转推),微信开放平台,企业微信,支付宝支付,微信支付,直播聊天功能,音视频 分享,数据采集,直播人数统计,聊天日志分析,禁言拉黑IP,API高防,CND分发⻚面,CDN分发 视频,视频转码,直播压缩,electron打包分发技术,实时IP城市检索等;
直播技术栈:VOD,CSS,COS,CLB,TIM,TIW,TRTC,EONE,CVM,TSE,TKE和镜像
技术介绍:
A,短链分发:
要求:设计高并发,高可用,防止被微信封杀,可切换域名
设计思路: a,企业自己用(选a);b,多租户售卖 开发:把短链域名和⻓链接域名1对1映射存到redis库 部署:域名挂载到CLB上,做负载均衡,可以在负载均衡上做高防;部署多台服务器,搭
建nginx,写lua脚本,做反向代理; 技术栈: redis, nginx,lua
压力测试:百万并发,没崩溃过; B,音视频整合:
要求: 可以分享视频(不让用户下载),直播中对视频做高延时,低延时,高清,标清,超 清处理
技术栈: VOD(腾讯云),CSS(腾讯云),域名和SSL
开发:
1,封装腾讯云基础API; 2,对视频的播放器处理,只用VOD的fileId技术,用腾讯视频号的技术,获取视频的fileId
和sign,传入到腾讯超级播放器中;
3,其中对视频 进行加密和限时处理 4,案例:https://wx181f4bf416f0313a.tx.godsdo.com/video/1629133161365536
C,直播推流,主播端合并推流: 技术栈: CSS,TRTC
开发和配制: TRTC旁路转推,java开发合流和录制视频; 涉及技术难点:旁路转推域名设置,回调配制,腾讯云直播中的断流和触发录制;合并
多路流视频到一路,节省带宽和CDN; D,OBS推流,伪直播(拉流转推):
技术栈: CSS
开发:封装腾讯云基础API ,结合前端观看地址,封装OBS推流的地址; 伪直播(拉流转推): 用视频做实时直播
E,微信开放平台,企业微信,支付宝支付,微信支付,商品优惠券:
要求: 企业可以溯源的unionId,打通客户的企业微信,接入支付宝支付,微信支付; 开发:
1,申请微信开放平台,开发微信回调; 2,开发标准接口:客户可以把企业数据批量传数据到神行平台;
3, 接入企业微信跟进人和协助人数据,打通并双向绑定; 4,申请支付宝账户,开发支付宝回调;
5,申请微信支付,开发微信支付回调; 6,优惠券减免时,触发的支付宝与微信支付要前后端双向验证;
F,直播聊天功能
要求: 用户端,助理端,讲师端互相联通
开发:
1, 封装腾讯云IM ;对直播群做数据处理
2,发送内容: 图文,聊天,商品开关,商品上下架和不同推荐位,商品售馨,机器人消息, 场控氛围,优惠券的上下架推荐,禁言和解禁,消息审核,各类信息封装不同字段
3,控制台和前端对不同场景的定义的字段做不同的业务逻辑调整; G,数据采集:
要求: 处理高并发的上报接口;
开发思路: 1,做一个高防接口,防攻击;2,用腾讯云Im接口,能承载百万人的聊天(省
钱);
开发选2; 用腾讯云免费的im接口,上报数据,后端筛选回调上报的数据内容,放到
kafka中,再通过消费者入库;
开发难点:怎么把用户日志传到腾讯云的im中,怎样接收用户上报的高并发数据
开发成果: 节省高防费用,节省服务器费用,节省相间数据传输流量,隐藏用户上报 的接口
H,直播人数统计:
要求: 直播间有热度和基础人数;
开发: 直播间基础信息存储到缓存中,用户打开⻚面后会获取直播间缓存,用户真
实人的统计,是通过腾讯云的im回调判断用户离线和在线,把真实人数存到redis中; 开发难点: 腾讯云的群有不同的隐藏区别,踩了不少坑;
I,API高防,CND分发⻚面,CDN分发视频: 要求:省钱,省流量
开发思路: 1,搭建雷池高防(已经搭建测试平台,效果好,⻓期运维需要人力费用) 2,扩展思路,与腾讯云商务交涉
商务交涉: 与腾讯云商务交涉后,做了一个新产品,高防几乎免费;
成果:技术解决不了事情,商务可以解决 J,视频转码,直播压缩:
要求:省钱,省流量
开发: 封装腾讯云API,配制腾讯云相关云业务参数; 结果:
1,视频转码后,节省大流量费用; 2,直播压缩后节省流量30~40%以上; 3,智能直播(伪直播)再上面的基础上,再节省费用30%;
K,electron主播端打包分发: 主播端开发:白板,聊天,推流,摄像头占用,16:9和9:16技术; 打包:技术1,分发到COS上,通过更新包,可以实时推送 技术2 ,通过⻚面封装,更快的推送给用户
L,jenkins 自动发布技术: 要求:仅用一个链接就可以更新软件版本,并自动发布技术,做CICD
技术栈:腾讯云coding技术,jenkins,腾讯云K8S(TKE)
技术成果: 通过一个url链接就可以触发一个项目模块的更新与发布; M,高并发技术:
要求:1,做能承载百万并发的平台,2,省钱
开发难度: 集群和容灾,数据库的缓存开发,前端压缩,高防配制, 技术栈: 腾讯云K8S(TKE) ,redis 缓存 ,mongodb,dubbo 运维和开发:
1, 通过对K8S做任务与弹性伸缩,任务扩容;可以做到百万并发;
2,redis,mongodb缓存技术在代码中,经过反复数据校验,加dubbo技术,可以对每个 应用模块做高性能负载;
3,对前端⻚面做极致压缩,原8M的⻚面,压缩到400KB,节省CDN流量;
4,内网负载: 搭建VPC,内网带宽200G/s,串联所有服务与数据库的节点;
模拟流量: JMeter,GoReplay,真实采集
结果: 通过技术上的极致优化和压测,模拟真实流量,成功做到了高并发的直播平台
O,技术选型: k8s, springcloud, dubbo ,nacos, 大模型语言库 ,报错日志库
搭建: springcloud + dubbo +nacos +k8s 框架
开发辅助: 搭建大模型语言库平台,员工登陆VPN后,辅助开发
框架日志全局封装: 把spingboot的产出的日志用UDP协议传到 graylog+elasticsearch+mongodb
搭建报错日志库: 开发人员可以直接检索报错和程序运行日志 P,分布式任务调度:
搭建:xxlJob+xxlJobAdmin
任务处理:订单场控调度,每天凌晨4点同步用户渠道排行数据,循环排查智能模版 转码是否完成,每半个小时直播观看记录表,每分钟统计一次渠道在线数据,每分钟统计一次 在线数据
源码地址:https://gitee.com/godsdodo/tencent-live.git