直播軟件開發(fā),任務(wù)服務(wù)器是怎么做到高壓下合理分配任務(wù)的
直播軟件開發(fā)在高峰期期間遇到大量的用戶請求很常見,為了保證平臺的運(yùn)行,往往要依靠負(fù)載均衡的幫助,不過這種情況說的簡單,實(shí)際應(yīng)用中是如何實(shí)現(xiàn)的呢?
?

一、任務(wù)服務(wù)器的任務(wù)分配
任務(wù)服務(wù)器應(yīng)該能夠監(jiān)控這些應(yīng)用服務(wù)器的狀態(tài),在實(shí)現(xiàn)應(yīng)用服務(wù)器的時候應(yīng)該讓應(yīng)用服務(wù)器暴露部分接口,這樣讓直播軟件開發(fā)可以使用私有協(xié)議,也可以使用http協(xié)議,也就是說到的應(yīng)用服務(wù)器http server,任務(wù)服務(wù)器去查詢這些應(yīng)用服務(wù)器的狀態(tài)、負(fù)載等情況,然后將新收到的用戶請求分給負(fù)載最低的服務(wù)器。
?

二、應(yīng)用服務(wù)器主動像任務(wù)服務(wù)器獲取任務(wù)
為了保證應(yīng)用服務(wù)器性能得到充分發(fā)揮,那么在服務(wù)器處理完任務(wù)后主動去索要新的任務(wù)是很有必要的,主動獲取在直播軟件開發(fā)的實(shí)際應(yīng)用中存在一定的困難。
當(dāng)任務(wù)服務(wù)器負(fù)載均衡后,系統(tǒng)能處理更多的并發(fā)請求,但任務(wù)服務(wù)器有可能出現(xiàn)故障,這時就需要服務(wù)器具備一定的故障轉(zhuǎn)移能力,如果直播軟件開發(fā)請求足夠多的話,甚至需要多臺服務(wù)器備用,任務(wù)服務(wù)器之間通過心跳檢測來判斷是否平臺處于可運(yùn)行狀態(tài)。
?

三、服務(wù)器性能誤區(qū)
1、數(shù)據(jù)拷貝,對直播軟件開發(fā)來說,應(yīng)該盡可能的減少數(shù)據(jù)的拷貝,尤其是內(nèi)存的拷貝,這主要是緩存機(jī)制在使用,從內(nèi)存中拷貝數(shù)據(jù)到應(yīng)用層,會消耗服務(wù)器過多的資源在拷貝任務(wù)上,而不是用來響應(yīng)用戶請求。
2、使用環(huán)境切換,主要指線程的切換,服務(wù)器是否該用多線程、多核服務(wù)器,這不僅關(guān)系到直播軟件開發(fā)投入的費(fèi)用多少,還會影響到服務(wù)器性能發(fā)揮,可以說,多核、多線程并不一定能提高性能,即使是單核服務(wù)器,就算是采用多線程,面對直播軟件開發(fā)眾多任務(wù)時,增加線程間的切換開銷反而還沒多核服務(wù)器處理請求的開銷大。
3、內(nèi)存分配,通過增加內(nèi)存池,減少向操作系統(tǒng)申請內(nèi)存。
4、鎖競爭,資源鎖是為了保證直播軟件開發(fā)資源的使用,對服務(wù)器來說應(yīng)該避免鎖的使用,以及資源之間的競爭。
聲明:以上內(nèi)容為云豹科技作者本人原創(chuàng),未經(jīng)作者本人同意,禁止轉(zhuǎn)載,否則將追究相關(guān)法律責(zé)任