日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

服务端高并发分布式架构演进之路(转载,图画的好)

發(fā)布時(shí)間:2024/7/23 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 服务端高并发分布式架构演进之路(转载,图画的好) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

這個(gè)文章基本上從單機(jī)版到最終版,經(jīng)歷了加緩存,加機(jī)器,高可用,分布式,最后到云等過程,其實(shí)我一直想總結(jié)一套類似的東西,沒想到有人已經(jīng)先弄出來了,那就不重復(fù)造輪子了,而且我感覺這個(gè)文章也是花了功夫的。

其實(shí)中國的技術(shù)基本都是這么個(gè)套路,并發(fā)高了就加機(jī)器,數(shù)據(jù)庫扛不住就加緩存,再就分庫分表,業(yè)務(wù)復(fù)雜了就抽中臺(tái),微服務(wù)。

但要注意的一點(diǎn),公司的架構(gòu)選型一定要根據(jù)公司已有業(yè)務(wù)設(shè)計(jì),比如你公司業(yè)務(wù)是toB的或者用戶群體不大,那就沒必要設(shè)計(jì)這么復(fù)雜,其實(shí)大部分公司,到下面的第五次演進(jìn),也就夠了,除非是淘寶京東這些大型業(yè)務(wù),才需要再往后的套路。

當(dāng)然,后面的套路也有參考的價(jià)值,比如公司類似是業(yè)務(wù)復(fù)雜,但用戶群體不大,這種公司那就在并發(fā)上少下功夫,在服務(wù)上多搞搞,最好有個(gè)中臺(tái)等等。

淘寶千萬級并發(fā)分布式架構(gòu)的14次演進(jìn)

一、概述

本文以淘寶作為例子,介紹從一百個(gè)并發(fā)到千萬級并發(fā)情況下服務(wù)端的架構(gòu)的演進(jìn)過程,同時(shí)列舉出每個(gè)演進(jìn)階段會(huì)遇到的相關(guān)技術(shù),讓大家對架構(gòu)的演進(jìn)有一個(gè)整體的認(rèn)知,文章最后匯總了一些架構(gòu)設(shè)計(jì)的原則。

二、基本概念

在介紹架構(gòu)之前,為了避免部分讀者對架構(gòu)設(shè)計(jì)中的一些概念不了解,下面對幾個(gè)最基礎(chǔ)的概念進(jìn)行介紹:

1)分布式

系統(tǒng)中的多個(gè)模塊在不同服務(wù)器上部署,即可稱為分布式系統(tǒng),如Tomcat和數(shù)據(jù)庫分別部署在不同的服務(wù)器上,或兩個(gè)相同功能的Tomcat分別部署在不同服務(wù)器上。

2)高可用

系統(tǒng)中部分節(jié)點(diǎn)失效時(shí),其他節(jié)點(diǎn)能夠接替它繼續(xù)提供服務(wù),則可認(rèn)為系統(tǒng)具有高可用性。

3)集群

一個(gè)特定領(lǐng)域的軟件部署在多臺(tái)服務(wù)器上并作為一個(gè)整體提供一類服務(wù),這個(gè)整體稱為集群。如Zookeeper中的Master和Slave分別部署在多臺(tái)服務(wù)器上,共同組成一個(gè)整體提供集中配置服務(wù)。

在常見的集群中,客戶端往往能夠連接任意一個(gè)節(jié)點(diǎn)獲得服務(wù),并且當(dāng)集群中一個(gè)節(jié)點(diǎn)掉線時(shí),其他節(jié)點(diǎn)往往能夠自動(dòng)的接替它繼續(xù)提供服務(wù),這時(shí)候說明集群具有高可用性。

4)負(fù)載均衡

請求發(fā)送到系統(tǒng)時(shí),通過某些方式把請求均勻分發(fā)到多個(gè)節(jié)點(diǎn)上,使系統(tǒng)中每個(gè)節(jié)點(diǎn)能夠均勻的處理請求負(fù)載,則可認(rèn)為系統(tǒng)是負(fù)載均衡的。

5)正向代理和反向代理

  • 系統(tǒng)內(nèi)部要訪問外部網(wǎng)絡(luò)時(shí),統(tǒng)一通過一個(gè)代理服務(wù)器把請求轉(zhuǎn)發(fā)出去,在外部網(wǎng)絡(luò)看來就是代理服務(wù)器發(fā)起的訪問,此時(shí)代理服務(wù)器實(shí)現(xiàn)的是正向代理;
  • 當(dāng)外部請求進(jìn)入系統(tǒng)時(shí),代理服務(wù)器把該請求轉(zhuǎn)發(fā)到系統(tǒng)中的某臺(tái)服務(wù)器上,對外部請求來說,與之交互的只有代理服務(wù)器,此時(shí)代理服務(wù)器實(shí)現(xiàn)的是反向代理。

簡單來說,正向代理是代理服務(wù)器代替系統(tǒng)內(nèi)部來訪問外部網(wǎng)絡(luò)的過程,反向代理是外部請求訪問系統(tǒng)時(shí)通過代理服務(wù)器轉(zhuǎn)發(fā)到內(nèi)部服務(wù)器的過程。

三、架構(gòu)演進(jìn)

單機(jī)架構(gòu)

以淘寶作為例子。在網(wǎng)站最初時(shí),應(yīng)用數(shù)量與用戶數(shù)都較少,可以把Tomcat和數(shù)據(jù)庫部署在同一臺(tái)服務(wù)器上。瀏覽器往www.taobao.com發(fā)起請求時(shí),首先經(jīng)過DNS服務(wù)器(域名系統(tǒng))把域名轉(zhuǎn)換為實(shí)際IP地址10.102.4.1,瀏覽器轉(zhuǎn)而訪問該IP對應(yīng)的Tomcat。

隨著用戶數(shù)的增長,Tomcat和數(shù)據(jù)庫之間競爭資源,單機(jī)性能不足以支撐業(yè)務(wù)。

第一次演進(jìn):Tomcat與數(shù)據(jù)庫分開部署

Tomcat和數(shù)據(jù)庫分別獨(dú)占服務(wù)器資源,顯著提高兩者各自性能。

隨著用戶數(shù)的增長,并發(fā)讀寫數(shù)據(jù)庫成為瓶頸。

第二次演進(jìn):引入本地緩存和分布式緩存

在Tomcat同服務(wù)器上或同JVM中增加本地緩存,并在外部增加分布式緩存,緩存熱門商品信息或熱門商品的html頁面等。通過緩存能把絕大多數(shù)請求在讀寫數(shù)據(jù)庫前攔截掉,大大降低數(shù)據(jù)庫壓力。

其中涉及的技術(shù)包括:使用memcached作為本地緩存,使用Redis作為分布式緩存,還會(huì)涉及緩存一致性、緩存穿透/擊穿、緩存雪崩、熱點(diǎn)數(shù)據(jù)集中失效等問題。

緩存抗住了大部分的訪問請求,隨著用戶數(shù)的增長,并發(fā)壓力主要落在單機(jī)的Tomcat上,響應(yīng)逐漸變慢。

第三次演進(jìn):引入反向代理實(shí)現(xiàn)負(fù)載均衡

在多臺(tái)服務(wù)器上分別部署Tomcat,使用反向代理軟件(Nginx)把請求均勻分發(fā)到每個(gè)Tomcat中。

此處假設(shè)Tomcat最多支持100個(gè)并發(fā),Nginx最多支持50000個(gè)并發(fā),那么理論上Nginx把請求分發(fā)到500個(gè)Tomcat上,就能抗住50000個(gè)并發(fā)。

其中涉及的技術(shù)包括:Nginx、HAProxy,兩者都是工作在網(wǎng)絡(luò)第七層的反向代理軟件,主要支持http協(xié)議,還會(huì)涉及session共享、文件上傳下載的問題。

反向代理使應(yīng)用服務(wù)器可支持的并發(fā)量大大增加,但并發(fā)量的增長也意味著更多請求穿透到數(shù)據(jù)庫,單機(jī)的數(shù)據(jù)庫最終成為瓶頸。

第四次演進(jìn):數(shù)據(jù)庫讀寫分離

把數(shù)據(jù)庫劃分為讀庫和寫庫,讀庫可以有多個(gè),通過同步機(jī)制把寫庫的數(shù)據(jù)同步到讀庫,對于需要查詢最新寫入數(shù)據(jù)場景,可通過在緩存中多寫一份,通過緩存獲得最新數(shù)據(jù)。

其中涉及的技術(shù)包括:Mycat,它是數(shù)據(jù)庫中間件,可通過它來組織數(shù)據(jù)庫的分離讀寫和分庫分表,客戶端通過它來訪問下層數(shù)據(jù)庫,還會(huì)涉及數(shù)據(jù)同步,數(shù)據(jù)一致性的問題。

業(yè)務(wù)逐漸變多,不同業(yè)務(wù)之間的訪問量差距較大,不同業(yè)務(wù)直接競爭數(shù)據(jù)庫,相互影響性能。

第五次演進(jìn):數(shù)據(jù)庫按業(yè)務(wù)分庫

把不同業(yè)務(wù)的數(shù)據(jù)保存到不同的數(shù)據(jù)庫中,使業(yè)務(wù)之間的資源競爭降低,對于訪問量大的業(yè)務(wù),可以部署更多的服務(wù)器來支撐。

這樣同時(shí)導(dǎo)致跨業(yè)務(wù)的表無法直接做關(guān)聯(lián)分析,需要通過其他途徑來解決,但這不是本文討論的重點(diǎn),有興趣的可以自行搜索解決方案。

隨著用戶數(shù)的增長,單機(jī)的寫庫會(huì)逐漸會(huì)達(dá)到性能瓶頸。

第六次演進(jìn):把大表拆分為小表

比如針對評論數(shù)據(jù),可按照商品ID進(jìn)行hash,路由到對應(yīng)的表中存儲(chǔ);針對支付記錄,可按照小時(shí)創(chuàng)建表,每個(gè)小時(shí)表繼續(xù)拆分為小表,使用用戶ID或記錄編號來路由數(shù)據(jù)。

只要實(shí)時(shí)操作的表數(shù)據(jù)量足夠小,請求能夠足夠均勻的分發(fā)到多臺(tái)服務(wù)器上的小表,那數(shù)據(jù)庫就能通過水平擴(kuò)展的方式來提高性能。其中前面提到的Mycat也支持在大表拆分為小表情況下的訪問控制。

這種做法顯著的增加了數(shù)據(jù)庫運(yùn)維的難度,對DBA的要求較高。數(shù)據(jù)庫設(shè)計(jì)到這種結(jié)構(gòu)時(shí),已經(jīng)可以稱為分布式數(shù)據(jù)庫,但是這只是一個(gè)邏輯的數(shù)據(jù)庫整體,數(shù)據(jù)庫里不同的組成部分是由不同的組件單獨(dú)來實(shí)現(xiàn)的。

如分庫分表的管理和請求分發(fā),由Mycat實(shí)現(xiàn),SQL的解析由單機(jī)的數(shù)據(jù)庫實(shí)現(xiàn),讀寫分離可能由網(wǎng)關(guān)和消息隊(duì)列來實(shí)現(xiàn),查詢結(jié)果的匯總可能由數(shù)據(jù)庫接口層來實(shí)現(xiàn)等等,這種架構(gòu)其實(shí)是MPP(大規(guī)模并行處理)架構(gòu)的一類實(shí)現(xiàn)。

目前開源和商用都已經(jīng)有不少M(fèi)PP數(shù)據(jù)庫,開源中比較流行的有Greenplum、TiDB、Postgresql XC、HAWQ等,商用的如南大通用的GBase、睿帆科技的雪球DB、華為的LibrA等等。

不同的MPP數(shù)據(jù)庫的側(cè)重點(diǎn)也不一樣,如TiDB更側(cè)重于分布式OLTP場景,Greenplum更側(cè)重于分布式OLAP場景。

這些MPP數(shù)據(jù)庫基本都提供了類似Postgresql、Oracle、MySQL那樣的SQL標(biāo)準(zhǔn)支持能力,能把一個(gè)查詢解析為分布式的執(zhí)行計(jì)劃分發(fā)到每臺(tái)機(jī)器上并行執(zhí)行,最終由數(shù)據(jù)庫本身匯總數(shù)據(jù)進(jìn)行返回。

也提供了諸如權(quán)限管理、分庫分表、事務(wù)、數(shù)據(jù)副本等能力,并且大多能夠支持100個(gè)節(jié)點(diǎn)以上的集群,大大降低了數(shù)據(jù)庫運(yùn)維的成本,并且使數(shù)據(jù)庫也能夠?qū)崿F(xiàn)水平擴(kuò)展。

數(shù)據(jù)庫和Tomcat都能夠水平擴(kuò)展,可支撐的并發(fā)大幅提高,隨著用戶數(shù)的增長,最終單機(jī)的Nginx會(huì)成為瓶頸。

第七次演進(jìn):使用LVS或F5來使多個(gè)Nginx負(fù)載均衡

由于瓶頸在Nginx,因此無法通過兩層的Nginx來實(shí)現(xiàn)多個(gè)Nginx的負(fù)載均衡。

圖中的LVS和F5是工作在網(wǎng)絡(luò)第四層的負(fù)載均衡解決方案,其中LVS是軟件,運(yùn)行在操作系統(tǒng)內(nèi)核態(tài),可對TCP請求或更高層級的網(wǎng)絡(luò)協(xié)議進(jìn)行轉(zhuǎn)發(fā),因此支持的協(xié)議更豐富,并且性能也遠(yuǎn)高于Nginx,可假設(shè)單機(jī)的LVS可支持幾十萬個(gè)并發(fā)的請求轉(zhuǎn)發(fā);F5是一種負(fù)載均衡硬件,與LVS提供的能力類似,性能比LVS更高,但價(jià)格昂貴。

由于LVS是單機(jī)版的軟件,若LVS所在服務(wù)器宕機(jī)則會(huì)導(dǎo)致整個(gè)后端系統(tǒng)都無法訪問,因此需要有備用節(jié)點(diǎn)。可使用keepalived軟件模擬出虛擬IP,然后把虛擬IP綁定到多臺(tái)LVS服務(wù)器上,瀏覽器訪問虛擬IP時(shí),會(huì)被路由器重定向到真實(shí)的LVS服務(wù)器,當(dāng)主LVS服務(wù)器宕機(jī)時(shí),keepalived軟件會(huì)自動(dòng)更新路由器中的路由表,把虛擬IP重定向到另外一臺(tái)正常的LVS服務(wù)器,從而達(dá)到LVS服務(wù)器高可用的效果。

此處需要注意的是,上圖中從Nginx層到Tomcat層這樣畫并不代表全部Nginx都轉(zhuǎn)發(fā)請求到全部的Tomcat。

在實(shí)際使用時(shí),可能會(huì)是幾個(gè)Nginx下面接一部分的Tomcat,這些Nginx之間通過keepalived實(shí)現(xiàn)高可用,其他的Nginx接另外的Tomcat,這樣可接入的Tomcat數(shù)量就能成倍的增加。

由于LVS也是單機(jī)的,隨著并發(fā)數(shù)增長到幾十萬時(shí),LVS服務(wù)器最終會(huì)達(dá)到瓶頸,此時(shí)用戶數(shù)達(dá)到千萬甚至上億級別,用戶分布在不同的地區(qū),與服務(wù)器機(jī)房距離不同,導(dǎo)致了訪問的延遲會(huì)明顯不同。

第八次演進(jìn):通過DNS輪詢實(shí)現(xiàn)機(jī)房間的負(fù)載均衡

在DNS服務(wù)器中可配置一個(gè)域名對應(yīng)多個(gè)IP地址,每個(gè)IP地址對應(yīng)到不同的機(jī)房里的虛擬IP。

當(dāng)用戶訪問www.taobao.com時(shí),DNS服務(wù)器會(huì)使用輪詢策略或其他策略,來選擇某個(gè)IP供用戶訪問。此方式能實(shí)現(xiàn)機(jī)房間的負(fù)載均衡,至此,系統(tǒng)可做到機(jī)房級別的水平擴(kuò)展,千萬級到億級的并發(fā)量都可通過增加機(jī)房來解決,系統(tǒng)入口處的請求并發(fā)量不再是問題。

隨著數(shù)據(jù)的豐富程度和業(yè)務(wù)的發(fā)展,檢索、分析等需求越來越豐富,單單依靠數(shù)據(jù)庫無法解決如此豐富的需求。

第九次演進(jìn):引入NoSQL數(shù)據(jù)庫和搜索引擎等技術(shù)

當(dāng)數(shù)據(jù)庫中的數(shù)據(jù)多到一定規(guī)模時(shí),數(shù)據(jù)庫就不適用于復(fù)雜的查詢了,往往只能滿足普通查詢的場景。

對于統(tǒng)計(jì)報(bào)表場景,在數(shù)據(jù)量大時(shí)不一定能跑出結(jié)果,而且在跑復(fù)雜查詢時(shí)會(huì)導(dǎo)致其他查詢變慢,對于全文檢索、可變數(shù)據(jù)結(jié)構(gòu)等場景,數(shù)據(jù)庫天生不適用。

因此需要針對特定的場景,引入合適的解決方案。如對于海量文件存儲(chǔ),可通過分布式文件系統(tǒng)HDFS解決,對于key value類型的數(shù)據(jù),可通過HBase和Redis等方案解決,對于全文檢索場景,可通過搜索引擎如ElasticSearch解決,對于多維分析場景,可通過Kylin或Druid等方案解決。

當(dāng)然,引入更多組件同時(shí)會(huì)提高系統(tǒng)的復(fù)雜度,不同的組件保存的數(shù)據(jù)需要同步,需要考慮一致性的問題,需要有更多的運(yùn)維手段來管理這些組件等。

引入更多組件解決了豐富的需求,業(yè)務(wù)維度能夠極大擴(kuò)充,隨之而來的是一個(gè)應(yīng)用中包含了太多的業(yè)務(wù)代碼,業(yè)務(wù)的升級迭代變得困難。

第十次演進(jìn):大應(yīng)用拆分為小應(yīng)用

按照業(yè)務(wù)板塊來劃分應(yīng)用代碼,使單個(gè)應(yīng)用的職責(zé)更清晰,相互之間可以做到獨(dú)立升級迭代。這時(shí)候應(yīng)用之間可能會(huì)涉及到一些公共配置,可以通過分布式配置中心Zookeeper來解決。

不同應(yīng)用之間存在共用的模塊,由應(yīng)用單獨(dú)管理會(huì)導(dǎo)致相同代碼存在多份,導(dǎo)致公共功能升級時(shí)全部應(yīng)用代碼都要跟著升級。

第十一次演進(jìn):復(fù)用的功能抽離成微服務(wù)

如用戶管理、訂單、支付、鑒權(quán)等功能在多個(gè)應(yīng)用中都存在,那么可以把這些功能的代碼單獨(dú)抽取出來形成一個(gè)單獨(dú)的服務(wù)來管理,這樣的服務(wù)就是所謂的微服務(wù)。

應(yīng)用和服務(wù)之間通過HTTP、TCP或RPC請求等多種方式來訪問公共服務(wù),每個(gè)單獨(dú)的服務(wù)都可以由單獨(dú)的團(tuán)隊(duì)來管理。此外,可以通過Dubbo、SpringCloud等框架實(shí)現(xiàn)服務(wù)治理、限流、熔斷、降級等功能,提高服務(wù)的穩(wěn)定性和可用性。

不同服務(wù)的接口訪問方式不同,應(yīng)用代碼需要適配多種訪問方式才能使用服務(wù),此外,應(yīng)用訪問服務(wù),服務(wù)之間也可能相互訪問,調(diào)用鏈將會(huì)變得非常復(fù)雜,邏輯變得混亂。

第十二次演進(jìn):引入企業(yè)服務(wù)總線ESB屏蔽服務(wù)接口的訪問差異

通過ESB統(tǒng)一進(jìn)行訪問協(xié)議轉(zhuǎn)換,應(yīng)用統(tǒng)一通過ESB來訪問后端服務(wù),服務(wù)與服務(wù)之間也通過ESB來相互調(diào)用,以此降低系統(tǒng)的耦合程度。這種單個(gè)應(yīng)用拆分為多個(gè)應(yīng)用,公共服務(wù)單獨(dú)抽取出來來管理,并使用企業(yè)消息總線來解除服務(wù)之間耦合問題的架構(gòu),就是所謂的SOA(面向服務(wù))架構(gòu),這種架構(gòu)與微服務(wù)架構(gòu)容易混淆,因?yàn)楸憩F(xiàn)形式十分相似。

個(gè)人理解,微服務(wù)架構(gòu)更多是指把系統(tǒng)里的公共服務(wù)抽取出來單獨(dú)運(yùn)維管理的思想,而SOA架構(gòu)則是指一種拆分服務(wù)并使服務(wù)接口訪問變得統(tǒng)一的架構(gòu)思想,SOA架構(gòu)中包含了微服務(wù)的思想。

業(yè)務(wù)不斷發(fā)展,應(yīng)用和服務(wù)都會(huì)不斷變多,應(yīng)用和服務(wù)的部署變得復(fù)雜,同一臺(tái)服務(wù)器上部署多個(gè)服務(wù)還要解決運(yùn)行環(huán)境沖突的問題,此外,對于如大促這類需要?jiǎng)討B(tài)擴(kuò)縮容的場景,需要水平擴(kuò)展服務(wù)的性能,就需要在新增的服務(wù)上準(zhǔn)備運(yùn)行環(huán)境,部署服務(wù)等,運(yùn)維將變得十分困難。

第十三次演進(jìn):引入容器化技術(shù)實(shí)現(xiàn)運(yùn)行環(huán)境隔離與動(dòng)態(tài)服務(wù)管理

目前最流行的容器化技術(shù)是Docker,最流行的容器管理服務(wù)是Kubernetes(K8S),應(yīng)用/服務(wù)可以打包為Docker鏡像,通過K8S來動(dòng)態(tài)分發(fā)和部署鏡像。

Docker鏡像可理解為一個(gè)能運(yùn)行你的應(yīng)用/服務(wù)的最小的操作系統(tǒng),里面放著應(yīng)用/服務(wù)的運(yùn)行代碼,運(yùn)行環(huán)境根據(jù)實(shí)際的需要設(shè)置好。把整個(gè)“操作系統(tǒng)”打包為一個(gè)鏡像后,就可以分發(fā)到需要部署相關(guān)服務(wù)的機(jī)器上,直接啟動(dòng)Docker鏡像就可以把服務(wù)起起來,使服務(wù)的部署和運(yùn)維變得簡單。

在大促的之前,可以在現(xiàn)有的機(jī)器集群上劃分出服務(wù)器來啟動(dòng)Docker鏡像,增強(qiáng)服務(wù)的性能,大促過后就可以關(guān)閉鏡像,對機(jī)器上的其他服務(wù)不造成影響(在3.14節(jié)之前,服務(wù)運(yùn)行在新增機(jī)器上需要修改系統(tǒng)配置來適配服務(wù),這會(huì)導(dǎo)致機(jī)器上其他服務(wù)需要的運(yùn)行環(huán)境被破壞)。

使用容器化技術(shù)后服務(wù)動(dòng)態(tài)擴(kuò)縮容問題得以解決,但是機(jī)器還是需要公司自身來管理,在非大促的時(shí)候,還是需要閑置著大量的機(jī)器資源來應(yīng)對大促,機(jī)器自身成本和運(yùn)維成本都極高,資源利用率低。

第十四次演進(jìn):以云平臺(tái)承載系統(tǒng)

系統(tǒng)可部署到公有云上,利用公有云的海量機(jī)器資源,解決動(dòng)態(tài)硬件資源的問題,在大促的時(shí)間段里,在云平臺(tái)中臨時(shí)申請更多的資源,結(jié)合Docker和K8S來快速部署服務(wù),在大促結(jié)束后釋放資源,真正做到按需付費(fèi),資源利用率大大提高,同時(shí)大大降低了運(yùn)維成本。

所謂的云平臺(tái),就是把海量機(jī)器資源,通過統(tǒng)一的資源管理,抽象為一個(gè)資源整體。在之上可按需動(dòng)態(tài)申請硬件資源(如CPU、內(nèi)存、網(wǎng)絡(luò)等),并且之上提供通用的操作系統(tǒng),提供常用的技術(shù)組件(如Hadoop技術(shù)棧,MPP數(shù)據(jù)庫等)供用戶使用,甚至提供開發(fā)好的應(yīng)用。用戶不需要關(guān)系應(yīng)用內(nèi)部使用了什么技術(shù),就能夠解決需求(如音視頻轉(zhuǎn)碼服務(wù)、郵件服務(wù)、個(gè)人博客等)。在云平臺(tái)中會(huì)涉及如下幾個(gè)概念:

  • IaaS:基礎(chǔ)設(shè)施即服務(wù)。對應(yīng)于上面所說的機(jī)器資源統(tǒng)一為資源整體,可動(dòng)態(tài)申請硬件資源的層面;
  • PaaS:平臺(tái)即服務(wù)。對應(yīng)于上面所說的提供常用的技術(shù)組件方便系統(tǒng)的開發(fā)和維護(hù);
  • SaaS:軟件即服務(wù)。對應(yīng)于上面所說的提供開發(fā)好的應(yīng)用或服務(wù),按功能或性能要求付費(fèi)。

至此,以上所提到的從高并發(fā)訪問問題,到服務(wù)的架構(gòu)和系統(tǒng)實(shí)施的層面都有了各自的解決方案,但同時(shí)也應(yīng)該意識到,在上面的介紹中,其實(shí)是有意忽略了諸如跨機(jī)房數(shù)據(jù)同步、分布式事務(wù)實(shí)現(xiàn)等等的實(shí)際問題,這些問題以后有機(jī)會(huì)再拿出來單獨(dú)討論。

四、 架構(gòu)設(shè)計(jì)總結(jié)

架構(gòu)的調(diào)整是否必須按照上述演變路徑進(jìn)行?

不是的,以上所說的架構(gòu)演變順序只是針對某個(gè)側(cè)面進(jìn)行單獨(dú)的改進(jìn),在實(shí)際場景中,可能同一時(shí)間會(huì)有幾個(gè)問題需要解決,或者可能先達(dá)到瓶頸的是另外的方面,這時(shí)候就應(yīng)該按照實(shí)際問題實(shí)際解決。

如在政府類的并發(fā)量可能不大,但業(yè)務(wù)可能很豐富的場景,高并發(fā)就不是重點(diǎn)解決的問題,此時(shí)優(yōu)先需要的可能會(huì)是豐富需求的解決方案。

對于將要實(shí)施的系統(tǒng),架構(gòu)應(yīng)該設(shè)計(jì)到什么程度?

對于單次實(shí)施并且性能指標(biāo)明確的系統(tǒng),架構(gòu)設(shè)計(jì)到能夠支持系統(tǒng)的性能指標(biāo)要求就足夠了,但要留有擴(kuò)展架構(gòu)的接口以便不備之需。對于不斷發(fā)展的系統(tǒng),如電商平臺(tái),應(yīng)設(shè)計(jì)到能滿足下一階段用戶量和性能指標(biāo)要求的程度,并根據(jù)業(yè)務(wù)的增長不斷的迭代升級架構(gòu),以支持更高的并發(fā)和更豐富的業(yè)務(wù)。

服務(wù)端架構(gòu)和大數(shù)據(jù)架構(gòu)有什么區(qū)別?

所謂的“大數(shù)據(jù)”其實(shí)是海量數(shù)據(jù)采集清洗轉(zhuǎn)換、數(shù)據(jù)存儲(chǔ)、數(shù)據(jù)分析、數(shù)據(jù)服務(wù)等場景解決方案的一個(gè)統(tǒng)稱。

在每一個(gè)場景都包含了多種可選的技術(shù),如數(shù)據(jù)采集有Flume、Sqoop、Kettle等,數(shù)據(jù)存儲(chǔ)有分布式文件系統(tǒng)HDFS、FastDFS,NoSQL數(shù)據(jù)庫HBase、MongoDB等,數(shù)據(jù)分析有Spark技術(shù)棧、機(jī)器學(xué)習(xí)算法等。

總的來說大數(shù)據(jù)架構(gòu)就是根據(jù)業(yè)務(wù)的需求,整合各種大數(shù)據(jù)組件組合而成的架構(gòu),一般會(huì)提供分布式存儲(chǔ)、分布式計(jì)算、多維分析、數(shù)據(jù)倉庫、機(jī)器學(xué)習(xí)算法等能力。而服務(wù)端架構(gòu)更多指的是應(yīng)用組織層面的架構(gòu),底層能力往往是由大數(shù)據(jù)架構(gòu)來提供。

有沒有一些架構(gòu)設(shè)計(jì)的原則?

1)N+1設(shè)計(jì)

系統(tǒng)中的每個(gè)組件都應(yīng)做到?jīng)]有單點(diǎn)故障。

2)回滾設(shè)計(jì)

確保系統(tǒng)可以向前兼容,在系統(tǒng)升級時(shí)應(yīng)能有辦法回滾版本。

3)禁用設(shè)計(jì)

應(yīng)該提供控制具體功能是否可用的配置,在系統(tǒng)出現(xiàn)故障時(shí)能夠快速下線功能。

4)監(jiān)控設(shè)計(jì)

在設(shè)計(jì)階段就要考慮監(jiān)控的手段。

5)多活數(shù)據(jù)中心設(shè)計(jì)

若系統(tǒng)需要極高的高可用,應(yīng)考慮在多地實(shí)施數(shù)據(jù)中心進(jìn)行多活,至少在一個(gè)機(jī)房斷電的情況下系統(tǒng)依然可用

6)采用成熟的技術(shù)

剛開發(fā)的或開源的技術(shù)往往存在很多隱藏的bug,出了問題沒有商業(yè)支持可能會(huì)是一個(gè)災(zāi)難。

7)資源隔離設(shè)計(jì)

應(yīng)避免單一業(yè)務(wù)占用全部資源。

8)架構(gòu)應(yīng)能水平擴(kuò)展

系統(tǒng)只有做到能水平擴(kuò)展,才能有效避免瓶頸問題

9)非核心則購買

非核心功能若需要占用大量的研發(fā)資源才能解決,則考慮購買成熟的產(chǎn)品。

10)使用商用硬件

商用硬件能有效降低硬件故障的機(jī)率。

11)快速迭代

系統(tǒng)應(yīng)該快速開發(fā)小功能模塊,盡快上線進(jìn)行驗(yàn)證,早日發(fā)現(xiàn)問題大大降低系統(tǒng)交付的風(fēng)險(xiǎn)。

12)無狀態(tài)設(shè)計(jì)

服務(wù)接口應(yīng)該做成無狀態(tài)的,當(dāng)前接口的訪問不依賴于接口上次訪問的狀態(tài)。

原創(chuàng)文章,轉(zhuǎn)載請注明: 轉(zhuǎn)載自segmentfault.com本文鏈接地址: 服務(wù)端高并發(fā)分布式架構(gòu)演進(jìn)之路

總結(jié)

以上是生活随笔為你收集整理的服务端高并发分布式架构演进之路(转载,图画的好)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 成人公开免费视频 | 97超碰网| 亚洲鲁鲁| 日本一区二区在线 | 国产调教打屁股xxxx网站 | 天天狠天天操 | 国产乱性| 91视频看片 | 午夜h | 黄色小视频网 | 性做久久| 欧美一区二区高清视频 | 亚洲一区二区不卡视频 | 中国av一区 | 香蕉视频99| 国产伦精品一区三区精东 | 亚洲免费国产 | 午夜在线小视频 | 合欢视频污 | 狠狠干狠狠操视频 | 绿帽在线 | 久久91精品国产91久久小草 | 中文字幕 亚洲一区 | 日本大乳美女 | 天堂av免费在线 | 国产激情视频在线播放 | 日本我不卡 | 国产性猛交╳xxx乱大交 | 广州毛片| 性色av网址| 美女131爽爽爽 | 在线观看无遮挡 | 伊人网色| 中国成熟妇女毛茸茸 | 毛片直接看 | 日韩高清av| 日韩午夜毛片 | 日韩91视频 | 国产3p露脸普通话对白 | 国产一区二区三区免费观看视频 | 久草免费福利 | 欧美成人免费在线观看 | 欧美亚洲色综久久精品国产 | av在观看| a毛片在线 | 黄色电影在线视频 | 亚洲一区,二区 | 国产乱人视频 | 五月网 | 国产奶头好大揉着好爽视频 | 在线天堂av| 网友自拍视频 | 又黄又爽又色的视频 | 国产精品一区二区在线播放 | 狂野欧美性猛交xxxx777 | 超碰福利在线观看 | 色综合啪啪 | 免费在线看黄网址 | 影音先锋亚洲天堂 | 三级av片| 久久久久久欧美 | 在线观看91视频 | 国产乱码一区二区三区 | 又色又爽又高潮免费视频国产 | 第一福利丝瓜av导航 | 国产精品日韩电影 | 亚洲欧美另类图片 | 深夜的私人秘书 | 日本三区在线 | 久久久精品在线观看 | 91资源站| 看全色黄大色黄女片18 | av网站有哪些 | 国产suv精品一区二区60 | 亚洲作爱 | 91在线色| 亚洲专区在线 | 精品国产一二三 | 国产第四页 | av十大美巨乳 | 精品国产人妻一区二区三区 | 天天综合网天天综合 | 亚洲91av | 久久久久久逼 | 欧美日韩一区二区三区国产精品成人 | 亚洲精品人妻无码 | 国产a一区二区三区 | 久久人人爽人人爽人人片av高清 | 午夜视频在线观看免费视频 | 久草91 | 精品探花| 国产做爰免费观看视频 | 国产一级不卡毛片 | 欧美日韩免费观看视频 | 久草中文在线 | 亚洲综合成人亚洲 | 国产免费毛卡片 | 中文字幕女优 | 玖玖爱在线精品视频 |