視訊直播解決方案采用分布式系統,并不隻是簡單的把一堆伺服器放在一起運作就能滿足需求,對比單個伺服器或少量伺服器的叢集,還是有很多問題存在。
硬體故障
既然是伺服器叢集,那麼系統所涉及的硬體必然少不了,硬體的故障發生幾率也會随着伺服器數量的增加而增加,在編寫分布式系統時,一定要提前想好這個問題,避免在一台伺服器出現故障後,所有伺服器都無法正常運作。
除了伺服器的記憶體、硬碟故障外,伺服器之間的網絡線路故障更為常見,但這種故障是存在自動恢複幾率的。雖然可以自動恢複,可在短暫的網絡暫停後,伺服器叢集可能會失去過半的處理能力。
在視訊直播解決方案中,着重考慮這種故障情況,有意識的預設一些備援、自我維護的功能。這些都是要技術人員才能實作的技術功能需求,能否在這方面提出對的需求,然後正确實作,是伺服器端程式員的重要職責之一。
資源使用率優化
分布式系統叢集包含多個伺服器,這樣的叢集硬體承載能力到達極限時,最自然的想法就是增加更多的硬體。再對一個叢集進行擴容時,我們需要停掉整個叢集的伺服器,然後修改各種配置。這對伺服器叢集的需求處理能力是極大的削減。
在每個伺服器記憶體中,會有一些使用者的使用資料,試圖修改叢集時,很有可能造成記憶體資料的丢失和錯誤,是以簡單的擴容功能并不是能這麼簡單完成的。
軟體服務内容更新
伺服器端的程式批量安裝部署工具,是每個分布式系統開發者需要的,我們的安裝工作除了拷貝二進制檔案和配置檔案外,還有許多其他操作。比如軟體更新、版本更新等問題,真能讓安裝部署的工具運作更快,可靠性更高。
除了持久化資料外,如果存在用戶端程式,這些用戶端程式的更新往往不能和伺服器同步,如果更新的内容包含了通信協定的修改,也就造成了不同版本部署不同伺服器端的系統問題。
視訊直播解決方案中,這類問題都需要提前想要解決方式,等到問題出現時在想解決方案,會造成資料的大量丢失、影響使用者的使用體驗。