一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

高可用服務(wù)設(shè)計(jì)概述[1]

 xujin3 2017-12-16

1. 負(fù)載均衡與反向代理


當(dāng)我們的應(yīng)用單實(shí)例不能支撐用戶請(qǐng)求時(shí),就需要擴(kuò)容,從一天服務(wù)器擴(kuò)容到兩臺(tái)、幾十臺(tái)、幾百臺(tái)。然而用戶訪問時(shí)是通過如http://www.jd.com的方式訪問,在請(qǐng)求時(shí),瀏覽器首先會(huì)查詢DNS服務(wù)器獲取對(duì)應(yīng)的IP,然后通過此IP訪問對(duì)應(yīng)的服務(wù)。


對(duì)于負(fù)載均衡需要關(guān)心的幾個(gè)方面如下:


  • 上游服務(wù)器配置:使用upstream server配置上游服務(wù)器。

  • 負(fù)載均衡算法:配置多個(gè)上游服務(wù)器時(shí)的負(fù)載均衡機(jī)制。

  • 失敗重試機(jī)制:配置當(dāng)超時(shí)或上游服務(wù)器不存活時(shí),是否需要重試其他上游服務(wù)器。

  • 服務(wù)器心跳檢查:上游服務(wù)器的健康檢查/心跳檢查。


Nginx提供的負(fù)載均衡機(jī)制可以實(shí)現(xiàn)服務(wù)器的負(fù)載均衡、故障轉(zhuǎn)移、失敗重試、容錯(cuò)、健康檢查等,當(dāng)某些上游服務(wù)器出現(xiàn)問題時(shí)可以將請(qǐng)求轉(zhuǎn)到其他上游服務(wù)器以保障高可用,并通過OpenResty實(shí)現(xiàn)更智能的負(fù)載均衡,如將熱點(diǎn)與非熱點(diǎn)流量分離、正常流量與爬蟲流量分離等。Nginx負(fù)載均衡器本身也是一臺(tái)反向代理服務(wù)器,將用戶請(qǐng)求通過Ningx代理到內(nèi)網(wǎng)中的某臺(tái)上游服務(wù)器處理,反向代理服務(wù)器可以對(duì)響應(yīng)結(jié)果進(jìn)行緩存、壓縮等處理以提升性能。


負(fù)載均衡算法


負(fù)載均衡算法用來解決用戶請(qǐng)求到來時(shí)如何選擇upstream server進(jìn)行處理,默認(rèn)采用的是round-robin(輪詢),同時(shí)支持其他幾種算法。


  • round-robin:輪詢,默認(rèn)負(fù)載均衡算法,即以輪詢的方式將請(qǐng)求轉(zhuǎn)發(fā)到上游服務(wù)器,通過配合weight配置可以實(shí)現(xiàn)基于權(quán)重的輪詢。

  • ip-hash:根據(jù)客戶IP進(jìn)行負(fù)載均衡,即相同的IP將負(fù)載均衡到同一個(gè)upstream server。

  • hash key [consistent]:對(duì)某一個(gè)key進(jìn)行哈希或者使用一致性哈希算法進(jìn)行負(fù)載均衡。使用Hash算法那存在的問題是,當(dāng)添加/刪除一臺(tái)服務(wù)器時(shí),將導(dǎo)致很多key被重新負(fù)載均衡到不同的服務(wù)器(從而導(dǎo)致后端肯可能出現(xiàn)問題);因此,建議考慮使用一致性hash算法,這樣當(dāng)添加/刪除一臺(tái)服務(wù)器時(shí),只有少數(shù)key將被重新負(fù)載均衡到不同的服務(wù)器。

  • 哈希算法:此處是根據(jù)請(qǐng)求uri進(jìn)行負(fù)載均衡,可以使用Nginx變量,因此可以實(shí)現(xiàn)復(fù)雜的算法。


失敗重試


當(dāng)fail_timeout時(shí)間內(nèi)失敗了max_fails次請(qǐng)求,則認(rèn)為該上游服務(wù)器不可用/不存活,然后將摘掉該上游服務(wù)器,fail_timeout時(shí)間后會(huì)再次將該服務(wù)器加入到存活上游服務(wù)器列表進(jìn)行重試。


健康檢查


Nginx對(duì)上游服務(wù)器的健康檢查默認(rèn)采用的是惰性策略,Nginx商業(yè)版提供了health_check進(jìn)行主動(dòng)健康檢查。也可以集成nginx_upstream_check_module模塊進(jìn)行主動(dòng)健康檢查,它支持TCP心跳和HTTP心跳來實(shí)現(xiàn)健康檢查。


HTTP動(dòng)態(tài)負(fù)載均衡


Consul是一款開源的分布式服務(wù)注冊(cè)與發(fā)現(xiàn)系統(tǒng),通過HTTP API可以使得服務(wù)注冊(cè)、發(fā)現(xiàn)實(shí)現(xiàn)起來非常簡單,它支持以下特性:


  • 服務(wù)注冊(cè):服務(wù)注冊(cè)者可以通過HTTP API或DNS方式,將服務(wù)注冊(cè)到Consul。

  • 服務(wù)發(fā)現(xiàn):服務(wù)消費(fèi)者可以通過HTTP API或DNS方式,從Consul獲取服務(wù)的IP和PORT。

  • 故障檢測(cè):支持如TCP、HTTP等方式的健康檢查機(jī)制,從而當(dāng)服務(wù)有故障時(shí)自動(dòng)摘除。

  • K/V存儲(chǔ):使用K/V存儲(chǔ)實(shí)現(xiàn)動(dòng)態(tài)配置中心,其使用HTTP長輪詢方式實(shí)現(xiàn)變更觸發(fā)和配置更改。

  • 多數(shù)據(jù)中心:支持多數(shù)據(jù)中心,可以按照數(shù)據(jù)中心注冊(cè)和發(fā)現(xiàn)服務(wù),即支持只消費(fèi)本地機(jī)房服務(wù),使用多數(shù)據(jù)中心集群還可以避免單數(shù)據(jù)中心的單點(diǎn)故障。

  • Raft算法:Consul使用Raft算法實(shí)現(xiàn)集群數(shù)據(jù)一致性。


2. 隔離術(shù)


隔離是指將系統(tǒng)或資源分隔開。系統(tǒng)隔離是為了在系統(tǒng)發(fā)生故障時(shí)能限定傳播范圍和影響范圍,即發(fā)生故障后不會(huì)出現(xiàn)滾雪球效應(yīng),從而保證只有出問題的服務(wù)不可用,其他服務(wù)還是可用的。資源隔離是通過隔離來減少資源競(jìng)爭(zhēng),保障服務(wù)間的相互不影響和可用性。


線程隔離


線程隔離主要是指線程池隔離,在實(shí)際使用時(shí),我們會(huì)把請(qǐng)求分類,然后交給不同的線程池處理。當(dāng)一種業(yè)務(wù)的請(qǐng)求處理發(fā)生問題時(shí),不會(huì)將故障擴(kuò)散到其他線程池,從而保證其他服務(wù)可用。


進(jìn)程隔離


在公司發(fā)展初期,一般是先進(jìn)行從零到一,不會(huì)一上來就進(jìn)行系統(tǒng)拆分,這樣就會(huì)開發(fā)出一些大而全的系統(tǒng),系統(tǒng)中的一個(gè)模塊/功能出現(xiàn)問題,整個(gè)系統(tǒng)就不可用了。首先想到的解決方案是通過部署多個(gè)實(shí)例,通過負(fù)載均衡進(jìn)行路由轉(zhuǎn)發(fā)。但是這種情況無法避免某個(gè)模塊因?yàn)锽UG而出現(xiàn)如OOM導(dǎo)致整個(gè)系統(tǒng)不可用的風(fēng)險(xiǎn)。因此這種解決方案只能是一個(gè)過渡,較好的解決方案是通過將系統(tǒng)拆分為多個(gè)子系統(tǒng)來實(shí)現(xiàn)物理隔離。通過進(jìn)程隔離使得某一個(gè)子系統(tǒng)出現(xiàn)問題時(shí)不會(huì)影響到其他子系統(tǒng)。


集群隔離


隨著系統(tǒng)的發(fā)展,單實(shí)例服務(wù)無法滿足需求,此時(shí)需要服務(wù)化技術(shù),通過部署多個(gè)服務(wù)形成服務(wù)集群,以提升系統(tǒng)容量。

隨著調(diào)用方的增多,當(dāng)秒殺服務(wù)被刷會(huì)影響到其他服務(wù)的穩(wěn)定性時(shí),應(yīng)該考慮為秒殺提供單獨(dú)的服務(wù)集群,即為服務(wù)分組,這樣當(dāng)某一個(gè)分組出現(xiàn)問題時(shí),不會(huì)影響到其他分組,從而實(shí)現(xiàn)了故障隔離。

機(jī)房隔離


隨著對(duì)系統(tǒng)可用性的要求,會(huì)進(jìn)行多機(jī)房部署,每個(gè)機(jī)房的服務(wù)都有自己的服務(wù)分組,本機(jī)房的服務(wù)應(yīng)該只調(diào)用本機(jī)房的服務(wù),不進(jìn)行跨機(jī)房調(diào)用。其中,一個(gè)機(jī)房服務(wù)發(fā)生問題時(shí),可以通過DNS/負(fù)載均衡將請(qǐng)求全部切到另一個(gè)機(jī)房,或者考慮服務(wù)能自動(dòng)重試其他機(jī)房的服務(wù),從而提供系統(tǒng)可用性。

讀寫隔離


通過主從模式將讀和寫集群隔離,讀服務(wù)只從Rdis集群獲取數(shù)據(jù),當(dāng)主Redis集群出現(xiàn)問題時(shí),從Redis集群還是可用的,從而不影響用戶訪問。而當(dāng)從集群出現(xiàn)問題時(shí),可以進(jìn)行其他集群的重試。

動(dòng)靜隔離


當(dāng)用戶訪問如結(jié)算頁時(shí),如果JS/CSS等靜態(tài)資源也在結(jié)算頁系統(tǒng)中,很可能因?yàn)樵L問量太大導(dǎo)致帶寬被打滿,從而導(dǎo)致服務(wù)不可用。因此,應(yīng)該將動(dòng)態(tài)內(nèi)容和靜態(tài)資源分離,一般應(yīng)該將靜態(tài)資源放在CDN上。


爬蟲隔離


通過負(fù)載均衡將爬蟲路由到單獨(dú)集群,從而保證正常流量可用,爬蟲流量盡量可用。


熱點(diǎn)隔離


秒殺、搶購屬于非常合適的熱點(diǎn)例子,對(duì)于這種熱點(diǎn),是能提前知道的,所以可以將秒殺和搶購做成獨(dú)立系統(tǒng)或服務(wù)進(jìn)行隔離,從而保證秒殺/搶購流程出現(xiàn)問題時(shí)不影響主流程。


資源隔離


如磁盤、CPU、網(wǎng)絡(luò)等的隔離。


還有一些其他類似的隔離術(shù),如環(huán)境隔離(測(cè)試環(huán)境、預(yù)發(fā)布環(huán)境/灰度環(huán)境、正式環(huán)境)、壓測(cè)隔離(真實(shí)數(shù)據(jù)、壓測(cè)數(shù)據(jù)隔離)、AB測(cè)試(為不同的用戶提供不同版本的服務(wù))、緩存隔離(有些系統(tǒng)混用緩存,而有些系統(tǒng)會(huì)扔大字節(jié)值到Redis,造成Redis慢查詢)、查詢隔離(簡單、批量、復(fù)雜查詢條件分別路由到不同的集群)等。通過隔離,可以將風(fēng)險(xiǎn)降到最低,將性能提升至最優(yōu)。


使用Hystrix實(shí)現(xiàn)隔離


Hystrix是Netflix開源的一款針對(duì)分布式系統(tǒng)的延遲和容錯(cuò)庫,目的是用來隔離分布式服務(wù)故障。它提供線程隔離信號(hào)量隔離,以減少不同服務(wù)之間資源競(jìng)爭(zhēng)帶來的相互影響;提供優(yōu)雅降級(jí)機(jī)制;提供熔斷機(jī)制使得服務(wù)可以快速失敗,而不是一直阻塞等待服務(wù)響應(yīng),從能從中快速恢復(fù)。Hystrix通過這些機(jī)制來阻止級(jí)聯(lián)失敗并保證系統(tǒng)彈性、可用。


參考來源:  [1] 億級(jí)流量網(wǎng)站架構(gòu)核心技術(shù).張開濤著

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多

    国产精品熟女在线视频| 精品丝袜一区二区三区性色| 亚洲av日韩av高潮无打码| 国产精品亚洲欧美一区麻豆| 亚洲国产性生活高潮免费视频 | 欧美加勒比一区二区三区| 日韩一区二区三区在线日| 色婷婷激情五月天丁香| 日韩aa一区二区三区| 亚洲国产成人一区二区在线观看| 九九热在线视频精品免费| 国产丝袜美女诱惑一区二区| 欧美日本道一区二区三区| 亚洲av熟女国产一区二区三区站| 欧美午夜不卡在线观看| 成年男女午夜久久久精品| 又色又爽又无遮挡的视频| 在线免费观看一二区视频| 日韩精品一区二区一牛| 欧美日韩国产欧美日韩| 五月婷婷六月丁香在线观看| 日本高清一道一二三区四五区| 国产高清一区二区不卡| 亚洲精品深夜福利视频| 国产欧美精品对白性色| 国产91麻豆精品成人区| 夫妻激情视频一区二区三区| 午夜福利视频六七十路熟女| 国产精品一级香蕉一区| 可以在线看的欧美黄片| 日韩欧美国产精品自拍| 日韩亚洲激情在线观看| 亚洲一区在线观看蜜桃| 精品伊人久久大香线蕉综合| 微拍一区二区三区福利| 五月激情婷婷丁香六月网| 亚洲欧美日韩在线看片| 国产一区二区在线免费| 精品精品国产自在久久高清| 国产亚洲中文日韩欧美综合网| 自拍偷拍福利视频在线观看|