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