集群需求
为了应对越来越多的大流量、大并发的应用场景,TSINGSEE的各款产品都需要具备有集群部署的框架思路,所谓集群化,需要达到的一个最基础的目标是,假设弹性扩容100台主机,如何能够通过简单的主机开通和接口配置,即可达到集群化调度与服务。
EasyDSS集群
由于我们的产品众多,本文就拿EasyDSS视频直播点播平台来举例,当然我们其他的流媒体服务器集群的思路也大抵如此,如果之后有机会,我也将和大家系统性的介绍我们产品的集群方向。
当EasyDSS为单服务运行时,只需要读取本地db数据库及维护内存临时数据即可,包括设备信息、视频信息、用户信息、token信息等,当EasyDSS启用集群,则需要向整个集群共享EasyDSS的所有设备信息、视频信息、用户信息、token信息以及服务本身的IP/Port/负载/能力等信息,方便整个集群可以按照约定的算法进行流量的调度;
整个EasyDSS集群采用redis进行数据共享的方法,EasyDSS划分类型,例如:源站服务类型、边缘服务类型、中心服务类型,源站类型主要用来接收直播推流、文件上传、视频资源输入,边缘服务类型为直接面向客户端的分发节点,视频数据均是从中心节点或者源站节点拉取或者转推而来,具体可研究一下CDN的源站和边缘设计方法,早期也可简化方案,只需要2种服务类型,源站和边缘分发。
- 各个服务将点播、直播等信息共享到redis,任何边缘服务都可以获取到集群全局的点播和直播资源;
- 可采用智能域名解析,单个域名根据不同区域解析得到不同的ip结果,访问对应的集群边缘服务;
- 在部署集群时,只需要启用集群,并配置对应的服务类型和共享到的redis地址,即可快速开启集群服务。