免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
單點(diǎn)系統(tǒng)架構(gòu)的可用性與性能優(yōu)化

一、需求緣起

明明架構(gòu)要求高可用,為何系統(tǒng)中還會(huì)存在單點(diǎn)?

回答:?jiǎn)吸c(diǎn)master的設(shè)計(jì),會(huì)大大簡(jiǎn)化系統(tǒng)設(shè)計(jì),何況有時(shí)候避免不了單點(diǎn)

 

在哪些場(chǎng)景中會(huì)存在單點(diǎn)?先來(lái)看一下一個(gè)典型互聯(lián)網(wǎng)高可用架構(gòu)。


典型互聯(lián)網(wǎng)高可用架構(gòu):

1客戶(hù)端層,這一層是瀏覽器或者APP,第一步先訪(fǎng)問(wèn)DNS-server,由域名拿到nginx的外網(wǎng)IP

2負(fù)載均衡層,nginx是整個(gè)服務(wù)端的入口,負(fù)責(zé)反向代理與負(fù)載均衡工作

3站點(diǎn)層,web-server層,典型的是tomcat或者apache

4服務(wù)層,service層,典型的是dubbo或者thrift等提供RPC調(diào)用的后端服務(wù)

5數(shù)據(jù)層,包含cachedb,典型的是主從復(fù)制讀寫(xiě)分離的db架構(gòu)

在這個(gè)互聯(lián)網(wǎng)架構(gòu)中,站點(diǎn)層、服務(wù)層、數(shù)據(jù)庫(kù)的從庫(kù)都可以通過(guò)冗余的方式來(lái)保證高可用,但至少

1nginx層是一個(gè)潛在的單點(diǎn)

2)數(shù)據(jù)庫(kù)寫(xiě)庫(kù)master也是一個(gè)潛在的單點(diǎn)

 

再舉一個(gè)GFSGoogle File System)架構(gòu)的例子。


GFS的系統(tǒng)架構(gòu)里主要有這么幾種角色:

1client,就是發(fā)起文件讀寫(xiě)的調(diào)用端

2master,這是一個(gè)單點(diǎn)服務(wù),它有全局事業(yè),掌握文件元信息

3chunk-server,實(shí)際存儲(chǔ)文件額服務(wù)器

這個(gè)系統(tǒng)里,master也是一個(gè)單點(diǎn)的服務(wù),Map-reduce系統(tǒng)里也有類(lèi)似的全局協(xié)調(diào)的master單點(diǎn)角色。

 

系統(tǒng)架構(gòu)設(shè)計(jì)中,像nginx,db-master,gfs-master這樣的單點(diǎn)服務(wù),會(huì)存在什么問(wèn)題,有什么方案來(lái)優(yōu)化呢,這是本文要討論的問(wèn)題。

 

二、單點(diǎn)架構(gòu)存在的問(wèn)題

單點(diǎn)系統(tǒng)一般來(lái)說(shuō)存在兩個(gè)很大的問(wèn)題

1非高可用:既然是單點(diǎn),master一旦發(fā)生故障,服務(wù)就會(huì)受到影響

2性能瓶頸:既然是單點(diǎn),不具備良好的擴(kuò)展性,服務(wù)性能總有一個(gè)上限,這個(gè)單點(diǎn)的性能上限往往就是整個(gè)系統(tǒng)的性能上限

 

接下來(lái),就看看有什么優(yōu)化手段可以?xún)?yōu)化上面提到的兩個(gè)問(wèn)題

 

三、shadow-master解決單點(diǎn)高可用問(wèn)題

shadow-master是一種很常見(jiàn)的解決單點(diǎn)高可用問(wèn)題的技術(shù)方案。

影子master”,顧名思義,服務(wù)正常時(shí),它只是單點(diǎn)master的一個(gè)影子,在master出現(xiàn)故障時(shí),shadow-master會(huì)自動(dòng)變成master,繼續(xù)提供服務(wù)。

shadow-master它能夠解決高可用的問(wèn)題,并且故障的轉(zhuǎn)移是自動(dòng)的,不需要人工介入,但不足是它使服務(wù)資源的利用率降為了50%,業(yè)內(nèi)經(jīng)常使用keepalived+vip的方式實(shí)現(xiàn)這類(lèi)單點(diǎn)的高可用。

 


GFSmaster為例,master正常時(shí):

1client會(huì)連接正常的master,shadow-master不對(duì)外提供服務(wù)

2mastershadow-master之間有一種存活探測(cè)機(jī)制

3mastershadow-master有相同的虛IPvirtual-IP

 


當(dāng)發(fā)現(xiàn)master異常時(shí):

shadow-master會(huì)自動(dòng)頂上成為master,虛IP機(jī)制可以保證這個(gè)過(guò)程對(duì)調(diào)用方是透明的

 

除了GFSMapReduce系統(tǒng)中的主控master,nginx亦可用類(lèi)似的方式保證高可用,數(shù)據(jù)庫(kù)的主庫(kù)master(主庫(kù))亦可用類(lèi)似的方式來(lái)保證高可用,只是細(xì)節(jié)上有些地方要注意:


傳統(tǒng)的一主多從,讀寫(xiě)分離的db架構(gòu),只能保證讀庫(kù)的高可用,是無(wú)法保證寫(xiě)庫(kù)的高可用的,要想保證寫(xiě)庫(kù)的高可用,也可以使用上述的shadow-master機(jī)制:


1)兩個(gè)主庫(kù)設(shè)置相互同步的雙主模式

2)平時(shí)只有一個(gè)主庫(kù)提供服務(wù),言下之意,shadow-master不會(huì)往master同步數(shù)據(jù)

3)異常時(shí),虛IP漂移到另一個(gè)主庫(kù),shadow-master變成主庫(kù)繼續(xù)提供服務(wù)

需要說(shuō)明的是,由于數(shù)據(jù)庫(kù)的特殊性,數(shù)據(jù)同步需要時(shí)延,如果數(shù)據(jù)還沒(méi)有同步完成,流量就切到了shadow-master,可能引起小部分?jǐn)?shù)據(jù)的不一致。

 

四、減少與單點(diǎn)的交互,是存在單點(diǎn)的系統(tǒng)優(yōu)化的核心方向

既然知道單點(diǎn)存在性能上限,單點(diǎn)的性能(例如GFS中的master)有可能成為系統(tǒng)的瓶頸,那么,減少與單點(diǎn)的交互,便成了存在單點(diǎn)的系統(tǒng)優(yōu)化的核心方向。

怎么來(lái)減少與單點(diǎn)的交互,這里提兩種常見(jiàn)的方法。

批量寫(xiě)

批量寫(xiě)是一種常見(jiàn)的提升單點(diǎn)性能的方式。

例如一個(gè)利用數(shù)據(jù)庫(kù)寫(xiě)單點(diǎn)生成做“ID生成器的例子:


1)業(yè)務(wù)方需要ID

2)利用數(shù)據(jù)庫(kù)寫(xiě)單點(diǎn)的auto increament id來(lái)生成和返回ID

這是一個(gè)很常見(jiàn)的例子,很多公司也就是這么生成ID的,它利用了數(shù)據(jù)庫(kù)寫(xiě)單點(diǎn)的特性,方便快捷,無(wú)額外開(kāi)發(fā)成本,是一個(gè)非常帥氣的方案。

潛在的問(wèn)題是:生成ID的并發(fā)上限,取決于單點(diǎn)數(shù)據(jù)庫(kù)的寫(xiě)性能上限。

如何提升性能呢?批量寫(xiě)

 


1)中間加一個(gè)服務(wù),每次從數(shù)據(jù)庫(kù)拿出100個(gè)id

2)業(yè)務(wù)方需要ID

3)服務(wù)直接返回100個(gè)id中的1個(gè),100個(gè)分配完,再訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)

這樣一來(lái),每分配100個(gè)才會(huì)寫(xiě)數(shù)據(jù)庫(kù)一次,分配id的性能可以認(rèn)為提升了100倍。

 

客戶(hù)端緩存

客戶(hù)端緩存也是一種降低與單點(diǎn)交互次數(shù),提升系統(tǒng)整體性能的方法。

還是以GFS文件系統(tǒng)為例:


1GFS的調(diào)用客戶(hù)端client要訪(fǎng)問(wèn)shenjian.txt,先查詢(xún)本地緩存,miss

2client訪(fǎng)問(wèn)master問(wèn)說(shuō)文件在哪里,master告訴clientchunk3

3clientshenjian.txt存放在chunk3上記錄到本地的緩存,然后進(jìn)行文件的讀寫(xiě)操作

4)未來(lái)client要訪(fǎng)問(wèn)文件,從本地緩存中查找到對(duì)應(yīng)的記錄,就不用再請(qǐng)求master了,可以直接訪(fǎng)問(wèn)chunk-server。如果文件發(fā)生了轉(zhuǎn)移,chunk3返回client說(shuō)“文件不在我這兒了”,client再訪(fǎng)問(wèn)master,詢(xún)問(wèn)文件所在的服務(wù)器。

 

根據(jù)經(jīng)驗(yàn),這類(lèi)緩存的命中非常非常高,可能在99.9%以上(因?yàn)槲募淖詣?dòng)遷移是小概率事件),這樣與master的交互次數(shù)就降低了1000倍。

 

五、水平擴(kuò)展是提升單點(diǎn)系統(tǒng)性能的好方案

無(wú)論怎么批量寫(xiě),客戶(hù)端緩存,單點(diǎn)畢竟是單機(jī),還是有性能上限的。

想方設(shè)法水平擴(kuò)展,消除系統(tǒng)單點(diǎn),理論上才能夠無(wú)限的提升系統(tǒng)系統(tǒng)。

nginx為例,如何來(lái)進(jìn)行水平擴(kuò)展呢?


第一步的DNS解析,只能返回一個(gè)nginx外網(wǎng)IP么?答案顯然是否定的,DNS輪詢(xún)”技術(shù)支持DNS-server返回不同的nginx外網(wǎng)IP,這樣就能實(shí)現(xiàn)nginx負(fù)載均衡層的水平擴(kuò)展。

 


DNS-server部分,一個(gè)域名可以配置多個(gè)IP,每次DNS解析請(qǐng)求,輪詢(xún)返回不同的IP,就能實(shí)現(xiàn)nginx的水平擴(kuò)展,擴(kuò)充負(fù)載均衡層的整體性能。

 

數(shù)據(jù)庫(kù)單點(diǎn)寫(xiě)庫(kù)也是同樣的道理,在數(shù)據(jù)量很大的情況下,可以通過(guò)水平拆分,來(lái)提升寫(xiě)入性能。

 

遺憾的是,并不是所有的業(yè)務(wù)場(chǎng)景都可以水平拆分,例如秒殺業(yè)務(wù),商品的條數(shù)可能不多,數(shù)據(jù)庫(kù)的數(shù)據(jù)量不大,就不能通過(guò)水平拆分來(lái)提升秒殺系統(tǒng)的整體寫(xiě)性能(總不能一個(gè)庫(kù)100條記錄吧?)。

 

六、總結(jié)

今天的話(huà)題就討論到這里,內(nèi)容很多,占用大家寶貴的時(shí)間深表內(nèi)疚,估計(jì)大部分都記不住,至少記住這幾個(gè)點(diǎn)吧:

1單點(diǎn)系統(tǒng)存在的問(wèn)題可用性問(wèn)題,性能瓶頸問(wèn)題

2shadow-master是一種常見(jiàn)的解決單點(diǎn)系統(tǒng)可用性問(wèn)題的方案

3減少與單點(diǎn)的交互,是存在單點(diǎn)的系統(tǒng)優(yōu)化的核心方向,常見(jiàn)方法有批量寫(xiě),客戶(hù)端緩存

4水平擴(kuò)展也是提升單點(diǎn)系統(tǒng)性能的好方案


本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶(hù)發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
IM服務(wù)器架構(gòu)實(shí)現(xiàn) - 陽(yáng)光 - 博客園
分布式塊存儲(chǔ)系統(tǒng)Ursa的設(shè)計(jì)與實(shí)現(xiàn)
分布式集群系統(tǒng)下的高可用session解決方案
1 分鐘抗住 10 億請(qǐng)求!某些 App 是怎么做到的? | 原力計(jì)劃
16 張圖詳解,淘寶十年架構(gòu)演進(jìn)過(guò)程
主機(jī)管理系統(tǒng)
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服