后端架构高可用可伸缩讲解之高可用
去年參加了一個技術分享活動,七牛的一個技術大牛給簡要的介紹了一些高可用可伸縮的一些最佳實踐,雖然只是一次簡短的介紹,但是依然從中學到了很多東西,PPT內容主要分以下幾個部分:
入口層高可用
業務層高可用
緩存層高可用
數據庫高可用
入口層可伸縮
業務層可伸縮
緩存層可伸縮
數據庫可伸縮
打算分兩次把參加的技術活動日內容歸類整理,
第一次主要講下高可用,第二次講一下可伸縮
下面來分層介紹實踐方法。
入口層高可用
nigix兩個 keeplive保活 心跳做好。
使用心跳技術:keeplive提供這個技術
比如機器A IP是1.2.3.4,機器B IP是1.2.3.5,那么再申請一個IP (1.2.3.6)我們稱之為心跳IP,平時綁定再A上面,如果A宕機,那么IP會自動綁定到B上面
DNS 層面綁定到心跳IP即可
兩臺機器必須在同一網段
服務監聽必須監聽所有IP,如果僅僅監聽心跳IP,那么從機上的服務(不持有心跳IP的機器)會啟動失敗
服務器利用率下降(混合部署可以改善這一點)
考慮一個問題,兩臺機器,兩個公網IP,DNS把域名同時定位到兩個IP,這算高可用嗎
不算,客戶端(比如瀏覽器) 解析完后會隨機選一個 IP訪問 , 而不是一個失敗后就去另一個 。 所以如果一臺機器當機 ,那么就有一半左右的用戶無法訪問 。
業務層高可用
業務層不要有狀態 , 狀態分散到緩存層和數據庫層 。 只要沒有狀態,業務層的服務死掉后,前面的nginx會自動把流量打到剩下的服務 。 所以,業務層無狀態是一個重點。
友情提醒:不要因為想讓服務無狀態就直接用cookie session, 里邊的坑有點大,考察清楚后再用比較好。比如重放攻擊 。
緩存層高可用
緩存層分得細一點,保證單臺緩存宕機后數據庫還能撐得住 。
中小模下緩存層和業務層可以混合部署, 這樣可以節省機器
大型規模網站,業務層和緩存層分開部署。
緩存層高可用,緩存可以啟用主從兩臺,主緩存活著的時候,主緩存讀,主從緩存都寫,主緩存宕機后,從變主,主恢復后, 變成新的從。這樣可以保證數據完整性,實現高可用
數據庫高可用
MySQL有主從模式, 還有主主模式都能滿足你的需求
MongoDB也有ReplicaSet的概念,基本都能滿足大家的需求。
這里就不做詳細介紹了,有興趣的同學可以自行百度。
高可用小結
原文鏈接:http://www.cnblogs.com/liuroy/p/6536630.html
.NET社區新聞,深度好文,微信中搜索dotNET跨平臺或掃描二維碼關注
總結
以上是生活随笔為你收集整理的后端架构高可用可伸缩讲解之高可用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [干货来袭]C#7.0新特性(VS201
- 下一篇: Asp.Net Core Authent