<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          什么是集群?什么又是負(fù)載均衡?

          共 3856字,需瀏覽 8分鐘

           ·

          2020-08-17 19:56


          點(diǎn)擊上方?程序IT圈選擇?設(shè)為星標(biāo)

          優(yōu)質(zhì)文章,及時(shí)送達(dá)

          來源 |?www.cnblogs.com/nullering/p/9311151.html

          在“高并發(fā),海量數(shù)據(jù),分布式,NoSql,云計(jì)算......”概念滿天飛的年代,相信不少朋友都聽說過甚至常與人提起“集群,負(fù)載均衡”等,

          但不是所有人都有機(jī)會(huì)真正接觸到這些技術(shù),也不是所有人都真正理解了這些“聽起來很牛的”技術(shù)名詞。下面簡單解釋一下吧。

          要了解這些概念首先要了解一下項(xiàng)目架構(gòu)的演進(jìn),我這里應(yīng)用一張Dubbo的文檔圖片如圖

          一:項(xiàng)目架構(gòu)的演進(jìn)

          img

          ORM與MVC:

          早期的架構(gòu)都集中在一臺服務(wù)器上,這樣對于小型的業(yè)務(wù)訪問量是完全可以的,但是隨著業(yè)務(wù)的增多,我們引進(jìn)的MVC的架構(gòu),這種架構(gòu)是將整個(gè)業(yè)務(wù)分成不同的層(表現(xiàn)層,業(yè)務(wù)層,數(shù)據(jù)訪問層)維護(hù)也更加方面了,開發(fā)更加方便。

          PRC架構(gòu):

          但是業(yè)務(wù)如果繼續(xù)增大,項(xiàng)目會(huì)出現(xiàn)臃腫,一臺服務(wù)器已經(jīng)完全沒辦法支持了,所以出現(xiàn)了RPC分布式的架構(gòu),RPC架構(gòu)就是將服務(wù)進(jìn)行合理拆分,分別放入多臺服務(wù)器執(zhí)行,服務(wù)器與服務(wù)器之間通過遠(yuǎn)程調(diào)用的方式進(jìn)行通信。

          • 服務(wù)提供者:運(yùn)行在服務(wù)器端,提供服務(wù)接口與服務(wù)實(shí)現(xiàn)類
          • 服務(wù)中心:運(yùn)行在服務(wù)器端,負(fù)責(zé)將本地服務(wù)發(fā)布成遠(yuǎn)程服務(wù),管理遠(yuǎn)程服務(wù),提供服務(wù)給消費(fèi)者使用。
          • 服務(wù)消費(fèi)者:運(yùn)行在客戶端,通過遠(yuǎn)程代理對象調(diào)用遠(yuǎn)程服務(wù)
          目前Java中常用的RPC框架:
          1:Dubbo:
          2:Spring Cloud
          3:Thrift
          SOA架構(gòu):
          但是業(yè)務(wù)繼續(xù)增加,對RPC架構(gòu)來說,各個(gè)服務(wù)與服務(wù)之間的通信越來越多,依賴越來越多,越來越混亂,給開發(fā)帶來了困難,于是SOA架構(gòu)應(yīng)運(yùn)而生,SOA架構(gòu)將服務(wù)與服務(wù)集中起來進(jìn)行管理,加上一個(gè)服務(wù)治理中心。誰發(fā)布了服務(wù)來中心進(jìn)行注冊,誰需要依賴什么服務(wù)來中心進(jìn)行請求。
          而最近很火的微服務(wù),則是將業(yè)務(wù)拆分更加精細(xì),每一個(gè)可以成為一個(gè)完整的服務(wù)。演變肯定會(huì)演變,但是過程得多久誰也不好說。

          二:名詞解釋

          接下來進(jìn)入正題,解釋讓外行看起來高大上的名詞

          1:集群

          集群(Cluster)
          所謂集群是指一組獨(dú)立的計(jì)算機(jī)系統(tǒng)構(gòu)成的一個(gè)松耦合的多處理器系統(tǒng),它們之間通過網(wǎng)絡(luò)實(shí)現(xiàn)進(jìn)程間的通信。應(yīng)用程序可以通過網(wǎng)絡(luò)共享內(nèi)存進(jìn)行消息傳送,實(shí)現(xiàn)分布式計(jì)算機(jī)。通俗一點(diǎn)來說,就是讓若干臺計(jì)算機(jī)聯(lián)合起來工作(服務(wù)),可以是并行的,也可以是做備份。
          大規(guī)模集群,通常具備以下一些特點(diǎn):
          (1)高可靠性(HA)
          利用集群管理軟件,當(dāng)主服務(wù)器故障時(shí),備份服務(wù)器能夠自動(dòng)接管主服務(wù)器的工作,并及時(shí)切換過去,以實(shí)現(xiàn)對用戶的不間斷服務(wù)。
          (2)高性能計(jì)算(HP)
          即充分利用集群中的每一臺計(jì)算機(jī)的資源,實(shí)現(xiàn)復(fù)雜運(yùn)算的并行處理,通常用于科學(xué)計(jì)算領(lǐng)域,比如基因分析、化學(xué)分析等。
          (3)負(fù)載平衡(LB)
          即把負(fù)載壓力根據(jù)某種算法合理分配到集群中的每一臺計(jì)算機(jī)上,以減輕主服務(wù)器的壓力,降低對主服務(wù)器的硬件和軟件要求。
          常用的集群又分以下幾種:
          load balance cluster(負(fù)載均衡集群)
          一共有四兄弟開裁縫鋪,生意特別多,一個(gè)人做不下來,老是延誤工期,于是四個(gè)兄弟商量:老大接訂單, 三個(gè)兄弟來干活。客戶多起來之后,老大根據(jù)一定的原則(policy) 根據(jù)三兄弟手上的工作量來分派新任務(wù)。
          High availability cluster(高可用集群)
          兩兄弟開早餐鋪,生意不大,但是每天早上7點(diǎn)到9點(diǎn)之間客戶很多并且不能中斷。為了保證2個(gè)小時(shí)內(nèi)這個(gè)早餐鋪能夠保證持續(xù)提供服務(wù),兩兄弟商量幾個(gè)方法:
          方法一:平時(shí)老大做生意,老二這個(gè)時(shí)間段在家等候,一旦老大無法做生意了,老二就出來頂上,這個(gè)叫做 Active/Standby.(雙機(jī)熱備)
          方法二:平時(shí)老大做生意,老二這個(gè)時(shí)候就在旁邊幫工,一旦老大無法做生意,老二就馬上頂上,這個(gè)叫做Active/Passive.(雙機(jī)雙工)
          方法三:平時(shí)老大賣包子,老二也在旁邊賣豆?jié){,老大有問題,老二就又賣包子,又賣豆?jié){,老二不行了,老大就又賣包子,又賣豆?jié){.這個(gè)叫做Active/Active (dual Active)(雙機(jī)互備)
          high computing clustering(高性能計(jì)算集群)
          10個(gè)兄弟一起做手工家具生意,一個(gè)客戶來找他們的老爹要求做一套非常復(fù)雜的仿古家具,一個(gè)人做也可以做,不過要做很久很久,為了1個(gè)星期就交出這一套家具,10個(gè)兄弟決定一起做。
          老爹把這套家具的不同部分分開交給兒子們作,然后每個(gè)兒子都在做木制家具的加工,最后拼在一起叫貨。
          老爹是scheduler任務(wù)調(diào)度器,兒子們是compute node. 他們做的工作叫做作業(yè)。

          2:負(fù)載均衡

          HTTP重定向負(fù)載均衡
          當(dāng)用戶發(fā)來請求的時(shí)候,Web服務(wù)器通過修改HTTP響應(yīng)頭中的Location標(biāo)記來返回一個(gè)新的url,然后瀏覽器再繼續(xù)請求這個(gè)新url,實(shí)際上就是頁面重定向。通過重定向,來達(dá)到“負(fù)載均衡”的目標(biāo)。例如,我們在下載JAVA源碼包的時(shí)候,點(diǎn)擊下載鏈接時(shí),為了解決不同國家和地域下載速度的問題,它會(huì)返回一個(gè)離我們近的下載地址。重定向的HTTP返回碼是302。優(yōu)點(diǎn):比較簡單。缺點(diǎn):瀏覽器需要兩次請求服務(wù)器才能完成一次訪問,性能較差。重定向服務(wù)自身的處理能力有可能成為瓶頸,整個(gè)集群的伸縮性國模有限;使用HTTP302響應(yīng)碼重定向,有可能使搜索引擎判斷為SEO作弊,降低搜索排名。
          DNS域名解析負(fù)載均衡
          DNS(Domain Name System)負(fù)責(zé)域名解析的服務(wù),域名url實(shí)際上是服務(wù)器的別名,實(shí)際映射是一個(gè)IP地址,解析過程,就是DNS完成域名到IP的映射。而一個(gè)域名是可以配置成對應(yīng)多個(gè)IP的。因此,DNS也就可以作為負(fù)載均衡服務(wù)。事實(shí)上,大型網(wǎng)站總是部分使用DNS域名解析,利用域名解析作為第一級負(fù)載均衡手段,即域名解析得到的一組服務(wù)器并不是實(shí)際提供Web服務(wù)的物理服務(wù)器,而是同樣提供負(fù)載均衡服務(wù)的內(nèi)部服務(wù)器,這組內(nèi)部負(fù)載均衡服務(wù)器再進(jìn)行負(fù)載均衡,將請求分發(fā)到真是的Web服務(wù)器上。優(yōu)點(diǎn):將負(fù)載均衡的工作轉(zhuǎn)交給DNS,省掉了網(wǎng)站管理維護(hù)負(fù)載均衡服務(wù)器的麻煩,同時(shí)許多DNS還支持基于地理位置的域名解析,即會(huì)將域名解析成舉例用戶地理最近的一個(gè)服務(wù)器地址,這樣可以加快用戶訪問速度,改善性能。缺點(diǎn):不能自由定義規(guī)則,而且變更被映射的IP或者機(jī)器故障時(shí)很麻煩,還存在DNS生效延遲的問題。而且DNS負(fù)載均衡的控制權(quán)在域名服務(wù)商那里,網(wǎng)站無法對其做更多改善和更強(qiáng)大的管理。
          反向代理負(fù)載均衡
          反向代理服務(wù)可以緩存資源以改善網(wǎng)站性能。實(shí)際上,在部署位置上,反向代理服務(wù)器處于Web服務(wù)器前面(這樣才可能緩存Web相應(yīng),加速訪問),這個(gè)位置也正好是負(fù)載均衡服務(wù)器的位置,所以大多數(shù)反向代理服務(wù)器同時(shí)提供負(fù)載均衡的功能,管理一組Web服務(wù)器,將請求根據(jù)負(fù)載均衡算法轉(zhuǎn)發(fā)到不同的Web服務(wù)器上。Web服務(wù)器處理完成的響應(yīng)也需要通過反向代理服務(wù)器返回給用戶。由于web服務(wù)器不直接對外提供訪問,因此Web服務(wù)器不需要使用外部ip地址,而反向代理服務(wù)器則需要配置雙網(wǎng)卡和內(nèi)部外部兩套IP地址。優(yōu)點(diǎn):和反向代理服務(wù)器功能集成在一起,部署簡單。缺點(diǎn):反向代理服務(wù)器是所有請求和響應(yīng)的中轉(zhuǎn)站,其性能可能會(huì)成為瓶頸。
          負(fù)載均衡策略
          • 輪詢
          • 加權(quán)輪詢
          • 最少連接數(shù)
          • 最快響應(yīng)
          • Hash法

          3:緩存

          緩存就是將數(shù)據(jù)存放在距離計(jì)算最近的位置以加快處理速度。緩存是改善軟件性能的第一手段,現(xiàn)在CPU越來越快的一個(gè)重要因素就是使用了更多的緩存,在復(fù)雜的軟件設(shè)計(jì)中,緩存幾乎無處不在。大型網(wǎng)站架構(gòu)設(shè)計(jì)在很多方面都使用了緩存設(shè)計(jì)。
          CDN緩存
          內(nèi)容分發(fā)網(wǎng)絡(luò),部署在距離終端用戶最近的網(wǎng)絡(luò)服務(wù)商,用戶的網(wǎng)絡(luò)請求總是先到達(dá)他的網(wǎng)絡(luò)服務(wù)商哪里,在這里緩存網(wǎng)站的一些靜態(tài)資源(較少變化的數(shù)據(jù)),可以就近以最快速度返回給用戶,如視頻網(wǎng)站和門戶網(wǎng)站會(huì)將用戶訪問量大的熱點(diǎn)內(nèi)容緩存在CDN中。
          反向代理緩存
          反向代理屬于網(wǎng)站前端架構(gòu)的一部分,部署在網(wǎng)站的前端,當(dāng)用戶請求到達(dá)網(wǎng)站的數(shù)據(jù)中心時(shí),最先訪問到的就是反向代理服務(wù)器,這里緩存網(wǎng)站的靜態(tài)資源,無需將請求繼續(xù)轉(zhuǎn)發(fā)給應(yīng)用服務(wù)器就能返回給用戶。
          本地緩存
          在應(yīng)用服務(wù)器本地緩存著熱點(diǎn)數(shù)據(jù),應(yīng)用程序可以在本機(jī)內(nèi)存中直接訪問數(shù)據(jù),而無需訪問數(shù)據(jù)庫。
          分布式緩存
          大型網(wǎng)站的數(shù)據(jù)量非常龐大,即使只緩存一小部分,需要的內(nèi)存空間也不是單機(jī)能承受的,所以除了本地緩存,還需要分布式緩存,將數(shù)據(jù)緩存在一個(gè)專門的分布式緩存集群中,應(yīng)用程序通過網(wǎng)絡(luò)通信訪問緩存數(shù)據(jù)。

          3:流控(流量控制)

          流量丟棄
          通過單機(jī)內(nèi)存隊(duì)列來進(jìn)行有限的等待,直接丟棄用戶請求的處理方式顯得簡單而粗暴,并且如果是I/O密集型應(yīng)用(包括網(wǎng)絡(luò)I/O和磁盤I/O),瓶頸一般不再CPU和內(nèi)存。因此,適當(dāng)?shù)牡却饶軌蛱嫔碛脩趔w驗(yàn),又能夠提高資源利用率。
          通過分布式消息隊(duì)列來將用戶的請求異步化。

          -?掃下面二維碼,獲取23套完整的編程視頻資料?-



          2T技術(shù)資源大放送!包括但不限于:C/C++,Linux,Python,Java,人工智能,考研,軟考,英語,等等。在公眾號內(nèi)回復(fù)「資源」,即可免費(fèi)獲取!回復(fù)「社群」,可以邀請你加入讀者群!


          明天見(??ω??)??
          瀏覽 109
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  一区二区三区免费在线 | 日本黄色片网站视频 | 国产18女人高潮 | 一区无码 | 国产在线字幕 |