高併發和 keepalived

很多 web 開發者都不會接觸到高併發的項目,但是不代表高併發技術棧理論知識就不需要了解。就像歐洲沒有互聯網公司 (沒人比我更瞭解歐洲互聯網環境了),但依舊有程序員。中國自有國情在此,你做的任何一個 web 應用都有可能成爲高併發項目。

提到高併發就離不開負載均衡,負載可以理解爲一個服務承受流量的工作狀態,沒有流量的時候是空載,有了點流量服務就運行起來,當流量超過了這個機器的上限,服務就是滿載狀態。面對一個流量打滿了的服務,要麼等,要麼崩潰,要麼等它崩潰。但機器是死的,我們程序員是活的,解決辦法除了關機 (別笑,我是認真的),還有就是讓流量均勻地打到其他機器上去。

老祖宗有智慧,早就說過,狡兔有三窟,僅得免其死耳。一隻兔子要有三個洞藏身,才能免除被獵人獵殺的危險。服務也是一樣,如果僅有一臺,那麼被高併發這個獵人給幹掉也無可厚非。所以有多臺機器就能抗住更多的流量,抵禦更多的風險,均衡講的就是這麼一個意思。

上面我用類比的方式大白話的語境講述了,系統高可用系統擴展性負載均衡能力。如果一個系統的某些設備被鋼鐵俠發射的導彈炸掉了,被萬磁王給吸走了,也不會影響到原來正常的服務,那麼這就是高可用。redis 的哨兵就是高可用,redis cluster 也是高可用。高可用的原理就像葫蘆娃一樣,

 

系統擴展性講的是提高帶寬,增加數據庫等等,都對服務是透明的,而且沒有負作用。系統擴展性這方面我看很多框架都給我們處理好了,不需要太操心,都是配置一通就可以了。(像我就沒有好的擴展性,如果誰給我五百萬,我能高興的當場去世)。

 

一個服務由多個物理機器提供,每個機器運行的服務是相同的。我們採用某個策略讓流量負載到不同的機器上去,每個機器都保持一個比較合理的負載。一個高併發的項目,必然有虛擬服務器,故障隔離和失敗切換機制。虛擬服務器是對客戶端透明的,似乎只有一個服務器在提供服務。故障隔離是系統可以自動把失效了的機器從工作崗位請下去,不再提供服務。失敗切換是針對負載均衡器的一種使用機制,在有兩個負載均衡器的時候,一個被鋼鐵俠給炸傷了,另一個就趕緊接替其工作。

要實現上面我講的這些功能,就需要一個大名鼎鼎的軟件,keepalived。keepalived 是一個用 c 語言編寫的路由軟件,它是依賴於 LVS (Linux Virtual Server) 的。當你第一次使用 keepalive 的使用不要像我一樣,去百度如何下載 LVS。(鋼鐵俠看到這裏就提問,所以要去 google 一下怎麼下載 LVS 嗎?) 嗯,是的,多用 google 少用百度。LVS 由於太棒了,已經包含在 linux 內核當中了。

講到這裏,就明確了使用 keepalived 的兩個特性。第一服務器必須是 linux 系統,第二高併發項目適合。keepalived 的使用給我的感覺就和配置 nginx 差不多,而且 keepalived 很多時候也真的是和 nginx 一起打配合使用。概念明確了,使用場景明確了,那麼怎麼安裝配置使用一下 keepalived 練練手呢?

 

接下來我會把如何下載 keepalived 和配置使用寫成文章發表出來,只要我還活着,大家都有得學。

(本文有什麼錯誤或者歧義請指出,謝謝)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章