关于扩展性上,直播系统搭建往往会选择负载均衡器,负载均衡是直播系统不可缺少的一环,在此基础上做扩展能节省不少事,但负载均衡器也有自己的缺点,比如必须有会话保持这一项,依靠回话保来纠正负载均衡器带来的错误部分,那么除了负载均衡器外,还有什么能快速增加扩展性呢。
一、冗余
在直播系统搭建引入负载均衡器后,所有请求都要先经过负载均衡器,负载均衡器就成为了网络拓扑结构中脆弱的单点,一旦发生故障,其相关的服务都无法访问了,为了避免这种单点故障,可以引入冗余,一般这种情况有两个故障转移方案:
1、主动-被动,主动的工作,被动的备用,主动的down掉后被动的顶上
2、主动-主动,同时工作,一个down掉后不产生影响
理论上直播系统搭建可以通过可靠的负载均衡机制,将1台服务器轻松扩展到n台,然而,n台服务器仍然使用同一数据库的话,数据库就会成为系统性能和可靠性的瓶颈,毕竟数据库也有自己的上限。
想要避免这种情况直播系统搭建同样可以通过扩展数据库实现,也就是引入冗余,同样有两种模式:
1、主从复制,主库直接读写,从库在主库收到查询时,执行相同的查询,如果主库down掉了,就在从库里面提升一个作为主库
2、主主复制,都可以写,写操作也会被复制到另一个库中
二、缓存辅助
上面我们也说到,直播系统搭建可能会因为数据库上限影响到性能,那就通过缓存的应用减轻数据库压力,尽可能减少数据库操作,缓存模式一般用缓存查询结果、缓存对象两种方法。
缓存对象是指缓存根据原始数据组装出的数据模型,优势在于直播系统搭建获知数据变化之后,能够丢弃与之具有逻辑关联的数据对象,从而解决缓存过期难题。
三、异步处理
对于直播系统搭建web服务而言,提升可扩展性的主要途径就是将耗时的同步工作改成异步处理,从而允许将这些工作给更多的模块去做,或者提前完成能够预知的部分。