视频直播解决方案采用分布式系统,并不只是简单的把一堆服务器放在一起运行就能满足需求,对比单个服务器或少量服务器的集群,还是有很多问题存在。
硬件故障
既然是服务器集群,那么系统所涉及的硬件必然少不了,硬件的故障发生几率也会随着服务器数量的增加而增加,在编写分布式系统时,一定要提前想好这个问题,避免在一台服务器出现故障后,所有服务器都无法正常运作。
除了服务器的内存、硬盘故障外,服务器之间的网络线路故障更为常见,但这种故障是存在自动恢复几率的。虽然可以自动恢复,可在短暂的网络暂停后,服务器集群可能会失去过半的处理能力。
在视频直播解决方案中,着重考虑这种故障情况,有意识的预设一些冗余、自我维护的功能。这些都是要技术人员才能实现的技术功能需求,能否在这方面提出对的需求,然后正确实现,是服务器端程序员的重要职责之一。
资源利用率优化
分布式系统集群包含多个服务器,这样的集群硬件承载能力到达极限时,最自然的想法就是增加更多的硬件。再对一个集群进行扩容时,我们需要停掉整个集群的服务器,然后修改各种配置。这对服务器集群的需求处理能力是极大的削减。
在每个服务器内存中,会有一些用户的使用数据,试图修改集群时,很有可能造成内存数据的丢失和错误,所以简单的扩容功能并不是能这么简单完成的。
软件服务内容更新
服务器端的程序批量安装部署工具,是每个分布式系统开发者需要的,我们的安装工作除了拷贝二进制文件和配置文件外,还有许多其他操作。比如软件更新、版本升级等问题,真能让安装部署的工具运行更快,可靠性更高。
除了持久化数据外,如果存在客户端程序,这些客户端程序的升级往往不能和服务器同步,如果升级的内容包含了通信协议的修改,也就造成了不同版本部署不同服务器端的系统问题。
视频直播解决方案中,这类问题都需要提前想要解决方式,等到问题出现时在想解决方案,会造成数据的大量丢失、影响用户的使用体验。