去年參加技術(shù)分享活動,七牛的一個技術(shù)簡要的介紹了一些高可用可伸縮的一些經(jīng)驗之談,聽完之后受益匪淺,整理一下,主要分以下幾個部分:

  • 入口層高可用

  • 業(yè)務(wù)層高可用

  • 緩存層高可用

  • 數(shù)據(jù)庫高可用

  • 入口層可伸縮

  • 業(yè)務(wù)層可伸縮

  • 緩存層可伸縮

  • 數(shù)據(jù)庫可伸縮

iOS培訓(xùn),Swift培訓(xùn),蘋果開發(fā)培訓(xùn),移動開發(fā)培訓(xùn)
下面來分層介紹實踐方法。

入口層高可用

nigix兩個 keeplive?;?心跳做好。
iOS培訓(xùn),Swift培訓(xùn),蘋果開發(fā)培訓(xùn),移動開發(fā)培訓(xùn)

  • 使用心跳技術(shù):keeplive提供這個技術(shù)

  • 比如機器A IP是1.2.3.4,機器B IP是1.2.3.5,那么再申請一個IP (1.2.3.6)我們稱之為心跳IP,平時綁定再A上面,如果A宕機,那么IP會自動綁定到B上面

  • DNS 層面綁定到心跳IP即可

  • 兩臺機器必須在同一網(wǎng)段

  • 服務(wù)監(jiān)聽必須監(jiān)聽所有IP,如果僅僅監(jiān)聽心跳IP,那么從機上的服務(wù)(不持有心跳IP的機器)會啟動失敗

  • 服務(wù)器利用率下降(混合部署可以改善這一點)

考慮一個問題,兩臺機器,兩個公網(wǎng)IP,DNS把域名同時定位到兩個IP,這算高可用嗎

不算,客戶端(比如瀏覽器) 解析完后會隨機選一個 IP訪問 , 而不是一個失敗后就去另一個 。 所以如果一臺機器當機 ,那么就有一半左右的用戶無法訪問 。

業(yè)務(wù)層高可用

iOS培訓(xùn),Swift培訓(xùn),蘋果開發(fā)培訓(xùn),移動開發(fā)培訓(xùn)

  • 業(yè)務(wù)層不要有狀態(tài) , 狀態(tài)分散到緩存層和數(shù)據(jù)庫層 。 只要沒有狀態(tài),業(yè)務(wù)層的服務(wù)死掉后,前面的nginx會自動把流量打到剩下的服務(wù) 。 所以,業(yè)務(wù)層無狀態(tài)是一個重點。

  • 友情提醒:不要因為想讓服務(wù)無狀態(tài)就直接用cookie session, 里邊的坑有點大,考察清楚后再用比較好。比如重放攻擊 。

緩存層高可用

iOS培訓(xùn),Swift培訓(xùn),蘋果開發(fā)培訓(xùn),移動開發(fā)培訓(xùn)

延伸閱讀

學(xué)習(xí)是年輕人改變自己的最好方式-Java培訓(xùn),做最負責任的教育,學(xué)習(xí)改變命運,軟件學(xué)習(xí),再就業(yè),大學(xué)生如何就業(yè),幫大學(xué)生找到好工作,lphotoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)學(xué)習(xí)是年輕人改變自己的最好方式