-
當(dāng)前位置:首頁 > 創(chuàng)意學(xué)院 > 技術(shù) > 專題列表 > 正文
高可用網(wǎng)站架構(gòu)(高可用網(wǎng)站架構(gòu)設(shè)計(jì)與實(shí)現(xiàn))
大家好!今天讓創(chuàng)意嶺的小編來大家介紹下關(guān)于高可用網(wǎng)站架構(gòu)的問題,以下是小編對此問題的歸納整理,讓我們一起來看看吧。
開始之前先推薦一個(gè)非常厲害的Ai人工智能工具,一鍵生成原創(chuàng)文章、方案、文案、工作計(jì)劃、工作報(bào)告、論文、代碼、作文、做題和對話答疑等等
只需要輸入關(guān)鍵詞,就能返回你想要的內(nèi)容,越精準(zhǔn),寫出的就越詳細(xì),有微信小程序端、在線網(wǎng)頁版、PC客戶端
官網(wǎng):https://ai.de1919.com。
創(chuàng)意嶺作為行業(yè)內(nèi)優(yōu)秀的企業(yè),服務(wù)客戶遍布全球各地,如需了解相關(guān)業(yè)務(wù)請撥打電話175-8598-2043,或添加微信:1454722008
本文目錄:
一、HDFS的高可用架構(gòu)是怎樣工作的?
在HDFS分布式文件系統(tǒng)中,NameNode是系統(tǒng)的核心節(jié)點(diǎn),它存儲(chǔ)了各類元數(shù)據(jù)信息,并負(fù)責(zé)管理文件系統(tǒng)的命名空間和客戶端對文件的訪問。但是,在Hadoop1.0版本中,NameNode只有一個(gè),一旦這個(gè)NameNode發(fā)生故障,就會(huì)導(dǎo)致整個(gè)Hadoop集群不可用,也就是發(fā)生了單點(diǎn)故障問題。
為了解決單點(diǎn)故障問題,Hadoop2.0中的HDFS中增加了對高可用的支持。在高可用的HDFS集群中,通常有兩臺(tái)或者兩臺(tái)以上的機(jī)器充當(dāng)NameNode,在任意時(shí)間內(nèi),都要保證至少有一臺(tái)機(jī)器處于活動(dòng)(Active)狀態(tài),一臺(tái)機(jī)器處于備用(Standby)狀態(tài)。處于活動(dòng)狀態(tài)的NameNode負(fù)責(zé)處理客戶端請求,而處于備用狀態(tài)的NameNode則處于“隨時(shí)待命”狀態(tài)。一旦處于活動(dòng)狀態(tài)NameNode節(jié)點(diǎn)發(fā)生故障,那么處于備用狀態(tài)的NameNode會(huì)立即接管它的任務(wù)并開始處理客戶端請求,保證業(yè)務(wù)不會(huì)出現(xiàn)明顯中斷,不影響系統(tǒng)的正常對外服務(wù)。接下來,通過一張圖來描述HDFS的高可用架構(gòu),如圖1所示。
圖1 HDFS的高可用架構(gòu)
圖1所示的高可用架構(gòu)中,共包含了兩個(gè)NameNode,其中一個(gè)處于活動(dòng)狀態(tài),一個(gè)處于備用狀態(tài),活躍狀態(tài)的NameNode將更新的數(shù)據(jù)寫入共享存儲(chǔ)系統(tǒng)中,備用狀態(tài)的NameNode會(huì)一直監(jiān)聽共享存儲(chǔ)系統(tǒng),一旦發(fā)現(xiàn)有新的數(shù)據(jù),就會(huì)立即從共享存儲(chǔ)系統(tǒng)中將這些數(shù)據(jù)加載到自己內(nèi)存中,從而保證與活躍狀態(tài)的數(shù)據(jù)同步。
Zookeeper是一種在HDFS高可用集群中集中提供自動(dòng)故障轉(zhuǎn)移功能的服務(wù),它為每個(gè)NameNode都分配了一個(gè)故障恢復(fù)控制器(Zookeeper Failover Controller,簡稱ZKFC),該控制器用于監(jiān)控NameNode的健康狀態(tài),并通過“心跳”方式定期和Zookeeper保持通信。一旦NameNode發(fā)生故障,Zookeeper會(huì)通知備用狀態(tài)的NameNode啟動(dòng),使其成為活動(dòng)狀態(tài)去處理客戶端請求,從而實(shí)現(xiàn)高可用。
轉(zhuǎn)自: http://www.itheima.com/news/20201112/182647.html
二、當(dāng)前比較流行的網(wǎng)站架構(gòu)有哪些?
目前功能相似的能解決同類需求的主要是國外的開源框架,如Bootstrap、Foundation、Semantic UI。Bootstrap是由Twitter在2011年8月推出的開源WEB前端框架,集合CSS和HTML,使用了最新的瀏覽器技術(shù),為快速WEB開發(fā)提供了一套前端工具包,包括布局、網(wǎng)格、表格、按鈕、表單、導(dǎo)航、提示,其核心就是基于Less框架構(gòu)建的CSS。Bootstrap框架擁有美觀的樣式和封裝完善的JQ插件,使用方便,基于Bootstrap的擴(kuò)展也很多,這是其他框架所無法比擬的,也是其最受歡迎的條件之一。
Foundation宣稱是世界最好的響應(yīng)式前端框架,默認(rèn)支持5種網(wǎng)格布局,是三款框架中最復(fù)雜也是最靈活的。Bootstrap默認(rèn)支持四種網(wǎng)格布局,Pure默認(rèn)支持一種。
Semantic UI是語義化設(shè)計(jì)的前端框架,開發(fā)更加直觀,UI組建可實(shí)時(shí)調(diào)試輸出,其最大的特點(diǎn)是充分利用CSS3動(dòng)畫特效,簡潔實(shí)用漂亮的樣式。以上各種產(chǎn)品我們也用過,當(dāng)時(shí)我們發(fā)現(xiàn)全球有將近6%的網(wǎng)站是基于Bootstrap做的。不過對于中國開發(fā)者來說,Bootstrap門檻仍然較高,而且本土化支持不夠好。
首先,Bootstrap只支持英文字體,并沒有對中文字體做設(shè)置。在不同操作系統(tǒng)、不同瀏覽器下,默認(rèn)的中文字體可能是不一樣的,這樣會(huì)導(dǎo)致網(wǎng)頁在某些時(shí)候顯示得不太好看。而且英文字號和中文字號的大小也不一樣,直接用Bootstrap來做文字排版并不能達(dá)到最好的效果。另外,國內(nèi)瀏覽器種類繁多,Bootstrap也無法照顧到對國內(nèi)瀏覽器的支持,我們希望不斷加強(qiáng)對各種本土瀏覽器的支持,幫助廣大前端開發(fā)者從最繁瑣痛苦的瀏覽器性問題中解脫出來。其次,Bootstrap還沒有把重點(diǎn)放在豐富界面組件上,而Amaze UI非常注重提高開發(fā)者的效率,我們會(huì)不斷增加跨屏的界面組件,讓開發(fā)者盡量少些代碼。第三,Bootstrap 因?yàn)樽钤缡菑腜C端開始做的,所以有些地方是先PC后移動(dòng),而Amaze UI的思路是先移動(dòng)后PC。例如,Bootstrap使用了jQuery庫,而Amaze UI使用了Zepto.js,Zepto.js的體積不到j(luò)Query的1/3,對移動(dòng)端的性能很大提升。
因此,一個(gè)針對中國市場的、移動(dòng)優(yōu)先的跨屏前端開發(fā)框架開發(fā)者有很強(qiáng)的需求,也是一個(gè)行業(yè)的空白。
Amaze UI應(yīng)該是中國首個(gè)HTML5跨屏前端開發(fā)框架,其不僅兼容前幾者的優(yōu)勢,還具有以下優(yōu)勢:
1、加入更多符合中國市場特性的元素:中文排版更優(yōu)化,兼容中國本土主流瀏覽器
2、更輕量化,不僅適用于桌面端,更適合移動(dòng)端3、包含一些封裝好的Widgets,其他框架則沒有
三、kafka高可用架構(gòu)
作為一個(gè)非常優(yōu)秀的消息中間件,kafka如何做到高可用的,我們可以一起看看它的架構(gòu)。
我們知道雞蛋是不能放在同一個(gè)籃子的,那消息同樣也如此。在kafka里有一個(gè)核心的概念叫做topic,類似于一個(gè)數(shù)據(jù)集合,我們所有的消息都是在topic里。
從上面的架構(gòu)來看,什么情況下會(huì)丟數(shù)據(jù)?當(dāng)我們寫數(shù)據(jù)時(shí)一般都是往leader寫數(shù)據(jù),但如果這個(gè)時(shí)候leader掛了,follower還沒來得及同步數(shù)據(jù),那這時(shí)候數(shù)據(jù)就丟失了。
要弄懂?dāng)?shù)據(jù)丟失的問題,我們得先知道ISR。簡單來說kafka會(huì)自動(dòng)給每個(gè)partition維護(hù)一個(gè)ISR列表。這個(gè)列表中一定會(huì)有一個(gè)leader,同步包含一個(gè)跟leader數(shù)據(jù)一致的follower。如果follower因?yàn)槟撤N原因數(shù)據(jù)不一致了就會(huì)被踢出去。
四、高可用無單點(diǎn)架構(gòu)之kubernetes集群
需要元數(shù)據(jù)的存儲(chǔ)和處理能力高可用
通過etcd存儲(chǔ)元數(shù)據(jù),etcd三節(jié)點(diǎn)集群保證高可用
通過多個(gè) kube-controller 和 kube-scheduler 節(jié)點(diǎn)來保證高可用
節(jié)點(diǎn)請求通信通過多Ip或負(fù)載均衡來保證高可用,這里也有幾種方式
如下圖所示,可將worker node的訪問地址指向負(fù)載均衡的地址
私有化部署場景常用keepAlived提供浮動(dòng)IP來給 worker node 或其他組件訪問,如下圖所示
如果你覺得同一時(shí)刻只有單個(gè)apiServer工作會(huì)成瓶頸,也可以使用 KeepAlived 加 Nginx 或 HaProxy 來對 ApiServer 做負(fù)載均衡
為了簡化圖像,只畫出了master1上的Nginx向后轉(zhuǎn)發(fā)的場景。
至于Nginx和KeepAlived如何部署,推薦采用容器化的部署模式,方便進(jìn)行監(jiān)控和運(yùn)維;但是鏡像不從鏡像倉庫拉取,而是保存在 master 節(jié)點(diǎn)上,這樣雖然升級復(fù)雜一點(diǎn),但是這樣子 kubernetes 的高可用就不依賴鏡像倉庫了,不會(huì)和鏡像倉庫形成循環(huán)依賴,更不會(huì)影響鏡像倉庫的高可用方案,大大簡化了后續(xù)的技術(shù)方案。(因?yàn)殓R像倉庫可能會(huì)占據(jù)較大的存儲(chǔ)空間,可能會(huì)和 master 節(jié)點(diǎn)分離部署,這時(shí)會(huì)作為 worker 節(jié)點(diǎn)連接 master 節(jié)點(diǎn))。
以上就是關(guān)于高可用網(wǎng)站架構(gòu)相關(guān)問題的回答。希望能幫到你,如有更多相關(guān)問題,您也可以聯(lián)系我們的客服進(jìn)行咨詢,客服也會(huì)為您講解更多精彩的知識和內(nèi)容。
推薦閱讀: