負載均衡
負載均衡是任何一個有一定規模的互聯網企業都會考慮的問題,負載方式很多,有依靠硬件實現的,也有依靠軟件實現負載的。
今天來聊聊使用軟件來負載的方式
你可能聽過各自負載的方式,比如常見的nginx,dubbo,springcloud等等技術框架都能實現負載,作為軟件大牛的你有沒有考慮過這些負載方式的區別呢?
下面小源就來假象個案例來談談常用的負載,我想對你一定會有幫助。
【以下故事純屬虛構,請勿對號入座】
從一個tomcat談起
在很久很久以前,小源成立了自己的公司,並做了一個購物網站-《小源購物網》,剛開始架構非常簡單,傳統的java開發框架,一個tomcat容器,經過1個月的沒日沒夜的編碼,搞定,上線。
1年后,項目沒想到火了,每天都有大量的人來購買娃娃、飛機、杯子。突然發現一個tomcat搞不定,怎么辦?兩個tomcat唄!
那么問題來了,兩個tomcat沒問題,服務器也整幾台,但是我域名只有一個啊,怎么辦?
Nginx登場
Nginx登場,通過一棒子程序猿的倒騰,在項目中引入nginx就能解決並發問題了,其中的研究過程也並不簡單,session怎么共享,配置文件怎么配置等等,說多了都是淚,不管怎么說,起碼完成了任務,能讓2個tomcat聯合起來工作了。
然而在線商城越來越火,沒過2個月,發現2個tomcat也搞不定了,怎么辦?只能集成更多tomcat了,當然Nginx集成很多tomcat都沒問題,架構圖如下
但是……
增加tomcat小源得修改nginx.conf這配置文件,修改了配置問題我當然可以reload,讓nginx生效,但reload狗血的經常有問題,而我又不得不經常重啟。。
重啟就麻煩大了,我那服務不得停止,客戶好好的在購物,突然發現不能下單,不能付款了,這不非常糟糕?
其實也還好,雖然客戶友好度不好,但小源一般凌晨3點加班來維護,幸苦是辛苦,但勉強能接受。
直到有一天……
噩夢的一天
那天小源正在午睡,3伏天,太陽高曬着,在睡夢中砰的一聲,電是沒停,可是那台nginx服務器已經在冒煙了。。
怎么辦?那一天nginx的服務器肯定是報銷了,沒過多久客戶的投訴電話就沒完沒了的打了過來,而這只是剛過去10分鍾……
只能重新搭建個服務器了,好在服務器還有,只是配置文件什么了都忘記備份了,火急火燎的我足足花了1個小時才把服務器弄好,還是nginx配置文件非常熟練的情況下。
問題雖然解決了,但當天小源依然被投資經理一頓臭罵,一個小時損失了很多錢啊,而且客戶的投訴還堆積如山。
以后再發生這情況怎么辦?我肯定記得把配置文件進行備份了,但再發生nginx死機也是不能接受的啊。
終於……
Nginx+keepalived上線
一個nginx機群肯定是不行了,那我得用兩個nginx機群才行,一個nginx冒煙了,另外個nignx馬上等頂替,這樣不就好了嗎?
好了,那么總體的架構圖如下。
終於,這樣的架構解決了很大的問題。
但是這架構也有問題,至於到底有什么問題呢?
Dubbo,spring cloud,zookeeper到底和負載有什么關系呢?
請聽下回分解^!^