欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

高可用互聯(lián)網(wǎng)應用的架構及技術實踐

2021-01-31    分類: 網(wǎng)站建設

一、什么是高可用

高可用HA(High Availability)是分布式系統(tǒng)架構設計中必須考慮的因素之一,它通常是指,通過設計減少系統(tǒng)不能提供服務的時間。

假設系統(tǒng)一直能夠提供服務,我們說系統(tǒng)的可用性是100%。如果系統(tǒng)每運行100個時間單位,會有1個時間單位無法提供服務,我們說系統(tǒng)的可用性是99%。很多公司的高可用目標是4個9,也就是99.99%,這就意味著,系統(tǒng)的年停機時間為8.76個小時。

百度的搜索首頁,是業(yè)內(nèi)公認高可用保障非常出色的系統(tǒng),甚至人們會通過www.baidu.com能不能訪問來判斷“網(wǎng)絡的連通性”,百度高可用的服務讓人留下啦“網(wǎng)絡通暢,百度就能訪問”,“百度打不開,應該是網(wǎng)絡連不上”的印象,這其實是對百度HA高的褒獎。

二、如何保障系統(tǒng)的高可用

我們都知道,單點是系統(tǒng)高可用的大敵,單點往往是系統(tǒng)高可用大的風險和敵人,應該盡量在系統(tǒng)設計的過程中避免單點。方法論上,高可用保證的原則是“集群化”,或者叫“冗余”:只有一個單點,掛了服務會受影響;如果有冗余備份,掛了還有其他backup能夠頂上。

保證系統(tǒng)高可用,架構設計的核心準則是:冗余。有了冗余之后,還不夠,每次出現(xiàn)故障需要人工介入恢復勢必會增加系統(tǒng)的不可服務實踐。所以,又往往是通過“自動故障轉(zhuǎn)移”來實現(xiàn)系統(tǒng)的高可用。接下來我們看下典型互聯(lián)網(wǎng)架構中,如何通過冗余+自動故障轉(zhuǎn)移來保證系統(tǒng)的高可用特性。

三、常見的互聯(lián)網(wǎng)分層架構


常見互聯(lián)網(wǎng)分布式架構如上,分為:

  • (1)客戶端層:典型調(diào)用方是瀏覽器browser或者手機應用APP
  • (2)反向代理層:系統(tǒng)入口,反向代理
  • (3)站點應用層:實現(xiàn)核心應用邏輯,返回html或者json
  • (4)服務層:如果實現(xiàn)了服務化,就有這一層
  • (5)數(shù)據(jù)-緩存層:緩存加速訪問存儲
  • (6)數(shù)據(jù)-數(shù)據(jù)庫層:數(shù)據(jù)庫固化數(shù)據(jù)存儲

整個系統(tǒng)的高可用,又是通過每一層的冗余+自動故障轉(zhuǎn)移來綜合實現(xiàn)的。

四、分層高可用架構實踐

1.客戶端層->反向代理層的高可用


客戶端層到反向代理層的高可用,是通過反向代理層的冗余來實現(xiàn)的。以nginx為例:有兩臺nginx,一臺對線上提供服務,另一臺冗余以保證高可用,常見的實踐是keepalived存活探測,相同virtual IP提供服務。


自動故障轉(zhuǎn)移:當nginx掛了的時候,keepalived能夠探測到,會自動的進行故障轉(zhuǎn)移,將流量自動遷移到shadow-nginx,由于使用的是相同的virtual IP,這個切換過程對調(diào)用方是透明的。

2. 反向代理層->站點層的高可用


反向代理層到站點層的高可用,是通過站點層的冗余來實現(xiàn)的。假設反向代理層是nginx,nginx.conf里能夠配置多個web后端,并且nginx能夠探測到多個后端的存活性。


自動故障轉(zhuǎn)移:當web-server掛了的時候,nginx能夠探測到,會自動的進行故障轉(zhuǎn)移,將流量自動遷移到其他的web-server,整個過程由nginx自動完成,對調(diào)用方是透明的。

3. 站點層->服務層的高可用


站點層到服務層的高可用,是通過服務層的冗余來實現(xiàn)的?!胺者B接池”會建立與下游服務多個連接,每次請求會“隨機”選取連接來訪問下游服務。


自動故障轉(zhuǎn)移:當service掛了的時候,service-connection-pool能夠探測到,會自動的進行故障轉(zhuǎn)移,將流量自動遷移到其他的service,整個過程由連接池自動完成,對調(diào)用方是透明的(所以說RPC-client中的服務連接池是很重要的基礎組件)。

4. 服務層>緩存層的高可用


服務層到緩存層的高可用,是通過緩存數(shù)據(jù)的冗余來實現(xiàn)的。 緩存層的數(shù)據(jù)冗余又有幾種方式:第一種是利用客戶端的封裝,service對cache進行雙讀或者雙寫。


緩存層也可以通過支持主從同步的緩存集群來解決緩存層的高可用問題。

以redis為例,redis天然支持主從同步,redis官方也有sentinel哨兵機制,來做redis的存活性檢測。


自動故障轉(zhuǎn)移:當redis主掛了的時候,sentinel能夠探測到,會通知調(diào)用方訪問新的redis,整個過程由sentinel和redis集群配合完成,對調(diào)用方是透明的。

說完緩存的高可用,這里要多說一句,業(yè)務對緩存并不一定有“高可用”要求,更多的對緩存的使用場景,是用來“加速數(shù)據(jù)訪問”:把一部分數(shù)據(jù)放到緩存里,如果緩存掛了或者緩存沒有命中,是可以去后端的數(shù)據(jù)庫中再取數(shù)據(jù)的。

這類允許“cache miss”的業(yè)務場景,緩存架構的建議是:


將kv緩存封裝成服務集群,上游設置一個代理(代理可以用集群的方式保證高可用),代理的后端根據(jù)緩存訪問的key水平切分成若干個實例,每個實例的訪問并不做高可用。


緩存實例掛了屏蔽:當有水平切分的實例掛掉時,代理層直接返回cache miss,此時緩存掛掉對調(diào)用方也是透明的。key水平切分實例減少,不建議做re-hash,這樣容易引發(fā)緩存數(shù)據(jù)的不一致。

5. 服務層>數(shù)據(jù)庫層的高可用

大部分互聯(lián)網(wǎng)技術,數(shù)據(jù)庫層都用了“主從同步,讀寫分離”架構,所以數(shù)據(jù)庫層的高可用,又分為“讀庫高可用”與“寫庫高可用”兩類。

  • 服務層>數(shù)據(jù)庫層“讀”的高可用

服務層到數(shù)據(jù)庫讀的高可用,是通過讀庫的冗余來實現(xiàn)的。

既然冗余了讀庫,一般來說就至少有2個從庫,“數(shù)據(jù)庫連接池”會建立與讀庫多個連接,每次請求會路由到這些讀庫。


自動故障轉(zhuǎn)移:當讀庫掛了的時候,db-connection-pool能夠探測到,會自動的進行故障轉(zhuǎn)移,將流量自動遷移到其他的讀庫,整個過程由連接池自動完成,對調(diào)用方是透明的(所以說DAO中的數(shù)據(jù)庫連接池是很重要的基礎組件)。

  • 服務層>數(shù)據(jù)庫層“寫”的高可用

服務層到數(shù)據(jù)庫寫的高可用,是通過寫庫的冗余來實現(xiàn)的。

以mysql為例,可以設置兩個mysql雙主同步,一臺對線上提供服務,另一臺冗余以保證高可用,常見的實踐是keepalived存活探測,相同virtual IP提供服務。


自動故障轉(zhuǎn)移:當寫庫掛了的時候,keepalived能夠探測到,會自動的進行故障轉(zhuǎn)移,將流量自動遷移到shadow-db-master,由于使用的是相同的virtual IP,這個切換過程對調(diào)用方是透明的。

五、總結

高可用HA(High Availability)是分布式系統(tǒng)架構設計中必須考慮的因素之一,它通常是指,通過設計減少系統(tǒng)不能提供服務的時間。

方法論上,高可用是通過冗余+自動故障轉(zhuǎn)移來實現(xiàn)的。

整個互聯(lián)網(wǎng)分層系統(tǒng)架構的高可用,又是通過每一層的冗余+自動故障轉(zhuǎn)移來綜合實現(xiàn)的,具體的:

  • (1)客戶端層到反向代理層的高可用,是通過反向代理層的冗余實現(xiàn)的,常見實踐是keepalived + virtual IP自動故障轉(zhuǎn)移。
  • (2)反向代理層到站點層的高可用,是通過站點層的冗余實現(xiàn)的,常見實踐是nginx與web-server之間的存活性探測與自動故障轉(zhuǎn)移。
  • (3)站點層到服務層的高可用,是通過服務層的冗余實現(xiàn)的,常見實踐是通過service-connection-pool來保證自動故障轉(zhuǎn)移。
  • (4)服務層到緩存層的高可用,是通過緩存數(shù)據(jù)的冗余實現(xiàn)的,常見實踐是緩存客戶端雙讀雙寫,或者利用緩存集群的主從數(shù)據(jù)同步與sentinel?;钆c自動故障轉(zhuǎn)移;更多的業(yè)務場景,對緩存沒有高可用要求,可以使用緩存服務化來對調(diào)用方屏蔽底層復雜性。
  • (5)服務層到數(shù)據(jù)庫“讀”的高可用,是通過讀庫的冗余實現(xiàn)的,常見實踐是通過db-connection-pool來保證自動故障轉(zhuǎn)移。
  • (6)服務層到數(shù)據(jù)庫“寫”的高可用,是通過寫庫的冗余實現(xiàn)的,常見實踐是keepalived + virtual IP自動故障轉(zhuǎn)移。

轉(zhuǎn)自:http://www.cnblogs.com/afee666/p/6930029.html

本文題目:高可用互聯(lián)網(wǎng)應用的架構及技術實踐
文章網(wǎng)址:http://aaarwkj.com/news/98340.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站導航、網(wǎng)站設計、外貿(mào)網(wǎng)站建設、網(wǎng)站策劃、商城網(wǎng)站、ChatGPT

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

商城網(wǎng)站建設
亚洲一区麻豆文化传媒| 久久国产精品午夜视频| 久久中文字幕日韩精品| 欧美大片高清在线观看| 国产成人免费高清av| 91免费福利激情视频| 久久亚洲精品1区2区| 日本精品在线小视频| 亚洲最大成人av在线| 一区二区亚洲免费的视频| 亚洲一区二区三区免费观看视频| 国产传媒在线免费播放| 九九在线视频免费观看精彩| 日本午夜诱惑在线观看| 久久午夜av一区二区| 成人免费av在线网址| 国产亚洲精品女人久久久| 国产精品国产亚洲精品| 久久偷拍精品视频久久| 免费看欧美黄片在线看| 日韩一区二区三区av在线| 亚洲精品成人中文字幕 | 国产日韩欧在线视频| 日韩女同一区二区三区在线观看| 日韩免费色视频一区| 国产精品一区二区婷婷| 自拍偷拍欧美日韩第一页| 精品一区二区亚洲精品| 国产精品国产三级农村av| 国产精品一区二在线观看| 日本爱爱一区二区三区| 成人国产av一区二区三区| 成人看片亚欧大片在线观看| 欧美熟妇精品一区二区蜜桃| 日韩精品一区二区三区中文| 免费高清视频一区二区在线观看| 婷婷六月亚洲中文字幕| 亚洲国产精品日韩专区av有中文| 我的农村中年激情熟妇| 黄色免费大片在线播放| 国产精品国产亚洲av|