<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>

          SpringCloud:微服務(wù)概念

          共 3959字,需瀏覽 8分鐘

           ·

          2023-08-01 10:02

          走過(guò)路過(guò)不要錯(cuò)過(guò)

          點(diǎn)擊藍(lán)字關(guān)注我們

          一、單體架構(gòu)的問題
          微服務(wù)為什么會(huì)出現(xiàn)?在學(xué)習(xí)Springboot的時(shí)候知道Springboot極大的簡(jiǎn)化了我們的開發(fā),我們可以快速的進(jìn)行業(yè)務(wù)開發(fā),Springboot單體應(yīng)用在項(xiàng)目的開發(fā)初期能夠滿足我們需求,這種單體架構(gòu)優(yōu)點(diǎn)非常的明顯:
          1. 容易測(cè)試:本地就可以起完整的系統(tǒng),不需要外部依賴。
          2. 容易開發(fā):我們只需引入依賴,選擇框架便可快速開發(fā)。
          3. 易于部署:?jiǎn)误w架構(gòu)部署也較簡(jiǎn)單,直接打包即可。
          4. 易于水平伸縮:這里的收縮時(shí)指當(dāng)我們需要多個(gè)服務(wù)器時(shí)也比較方便
          在項(xiàng)目剛開始的時(shí)候我們可以快速的開發(fā),一個(gè)長(zhǎng)壽的項(xiàng)目,需求不斷增加,原先的模塊也再不斷優(yōu)化,這個(gè)時(shí)候單體架構(gòu)的缺點(diǎn)開始顯現(xiàn):
          1. 代碼膨脹,難以維護(hù):代碼越來(lái)越多,開發(fā)人員也就越來(lái)越多,一旦出現(xiàn)bug,定位、修復(fù)成本很高,而且人員太多,代碼都放在一起,容易引起沖突,且由于業(yè)務(wù)集中在一起,業(yè)務(wù)復(fù)雜,很難全局把握,改一個(gè)bug可能會(huì)再多出兩個(gè)bug。
          2. 構(gòu)建、部署成本大:項(xiàng)目太大,構(gòu)建和部署就會(huì)非常慢,效率低下。
          3. 上手困難:互聯(lián)網(wǎng)企業(yè)人員更迭快,代碼過(guò)于集中,導(dǎo)致業(yè)務(wù)非常復(fù)雜,新人想要上手變得非常困難。
          4. 技術(shù)創(chuàng)新困難:代碼過(guò)于集中,我們很難使用到新技術(shù),因?yàn)楦膭?dòng)實(shí)在太大,容易出現(xiàn)問題。
          5. 可擴(kuò)展性差:這里的可擴(kuò)展性是指因?yàn)轫?xiàng)目都必須部署在一臺(tái)服務(wù)器中,那項(xiàng)目所要的資源會(huì)越來(lái)越大,這樣我們只能擴(kuò)展硬件(集群可以分散壓力,但是單個(gè)應(yīng)用所要的資源還是不能少的)。
          二、微服務(wù)出現(xiàn)
          微服務(wù)的出現(xiàn)就是為了解決這些問題,看看是如何解決的,微服務(wù)將系統(tǒng)拆分成一個(gè)個(gè)小服務(wù)(一般是按照模塊進(jìn)行拆分,比如用戶服務(wù)、支付服務(wù)、訂單服務(wù)、出入庫(kù)服務(wù)等),那么即使業(yè)務(wù)量增加,我們也可以通過(guò)新增服務(wù)的形式來(lái)解決,這樣代碼就不會(huì)膨脹,構(gòu)建、部署也不是問題。
          由于服務(wù)不在一個(gè)框架中,那么我們可以很方便的對(duì)某一個(gè)服務(wù)進(jìn)行技術(shù)創(chuàng)新,對(duì)一個(gè)服務(wù)的進(jìn)行技術(shù)升級(jí)改動(dòng)不會(huì)太大,而當(dāng)我們有新技術(shù)產(chǎn)生時(shí),我們就可以也可以應(yīng)用到新服務(wù)中。
          微服務(wù)并沒有明確的定義,下面是一種比較通用的理解:
          使用一套小服務(wù)來(lái)開發(fā)單個(gè)應(yīng)用的方式,每個(gè)服務(wù)運(yùn)行在獨(dú)立的進(jìn)程里,一般采用輕量級(jí)的通訊機(jī)制互聯(lián),并且它們可以通過(guò)自動(dòng)化方式部署。
          通過(guò)定義我們可以知道微服務(wù)的特征:
          • 微服務(wù)是由一系列的小服務(wù)共同組成的。
          • 每個(gè)微服務(wù)都有自己獨(dú)立的進(jìn)程。
          • 每個(gè)服務(wù)都是獨(dú)立的業(yè)務(wù)開發(fā),單一原則
          • 每個(gè)服務(wù)都能獨(dú)立的部署(一般部署在容器中)。
          • 微服務(wù)之間通過(guò)輕量級(jí)通信機(jī)制進(jìn)行通信
          • 分布式的管理。
          三、微服務(wù)架構(gòu)圖
          講到這里,對(duì)微服務(wù)的概念應(yīng)該有了一定的了解,下面畫的一個(gè)比較簡(jiǎn)單的微服務(wù)架構(gòu)圖
          圖中可以看出每個(gè)微服務(wù)都有自己獨(dú)立的數(shù)據(jù)庫(kù),每個(gè)服務(wù)都會(huì)暴露自己的REST API 給外部調(diào)用,服務(wù)之間會(huì)存在互相調(diào)用關(guān)系,而每個(gè)服務(wù)都有可能被客戶端直接調(diào)用,另外我們看到還有一個(gè)API Gateway,這是統(tǒng)一個(gè)服務(wù)接口,它通常可以有以下作用:
          1. 提供統(tǒng)一服務(wù)入口,讓微服務(wù)對(duì)前臺(tái)透明
          2. 聚合后臺(tái)的服務(wù),節(jié)省流量,提升性能
          3. 提供安全,過(guò)濾,流控等API管理功能
          五、技術(shù)點(diǎn)
          要實(shí)現(xiàn)微服務(wù),我們需要解決以下幾個(gè)技術(shù)點(diǎn):
          • 客戶端訪問服務(wù):這個(gè)上面架構(gòu)圖中已經(jīng)給出,使用API Gateway。
          • 服務(wù)通信:服務(wù)與服務(wù)之間的通信有兩種方式,同步與異步:
          同步通信中又分為兩種:Http與RPC,http訪問很好理解,相信一般的系統(tǒng)也會(huì)調(diào)用外部的一些服務(wù),這些基本都是使用http,因?yàn)閔ttp可以跨語(yǔ)言,跨客戶端,相對(duì)使用較廣,如http Client ,而RPC也有自己的優(yōu)點(diǎn),首先是效率更高,更安全可控,特別是內(nèi)部服務(wù)互相調(diào)用時(shí),用統(tǒng)一的RPC框架,服務(wù)的侵入性更低,調(diào)用服務(wù)甚至就像調(diào)用自己的服務(wù)一樣簡(jiǎn)單,如dubbo(注:dubbo只能使用java語(yǔ)言)。
          異步通信是通過(guò)消息隊(duì)列來(lái)實(shí)現(xiàn),異步通信的好處是可以降低服務(wù)之間的耦合,有削峰的好處,而且使用消息隊(duì)列可以方便的實(shí)現(xiàn)數(shù)據(jù)的最終一致性。
          • 服務(wù)治理:為了服務(wù)的高可用,微服務(wù)一般都有多個(gè)拷貝,做負(fù)載均衡,而這個(gè)時(shí)候就必須知道服務(wù)的狀態(tài),一個(gè)服務(wù)隨時(shí)有可能下線,下線之后后續(xù)有可能重新啟動(dòng),這些都需要我們一個(gè)服務(wù)治理功能,也即是服務(wù)的注冊(cè)與發(fā)現(xiàn)。
          產(chǎn)品服務(wù)啟動(dòng)了三個(gè),他們都會(huì)去注冊(cè)中心進(jìn)行注冊(cè),注冊(cè)成功后,會(huì)通過(guò)心跳包告訴注冊(cè)中心是否在線或者下線,而訂單服務(wù)要去調(diào)用產(chǎn)品服務(wù),會(huì)先去注冊(cè)中心進(jìn)行查詢,查詢出相應(yīng)的地址然后再去調(diào)用產(chǎn)品服務(wù)。
          服務(wù)崩潰處理:在運(yùn)行期間會(huì)出現(xiàn)服務(wù)崩潰的情況,比如網(wǎng)絡(luò)原因,阻塞原因,這個(gè)時(shí)候服務(wù)并不是下線,還是能夠被找到,我們必須妥善要進(jìn)行處理,否則可能會(huì)導(dǎo)致整個(gè)系統(tǒng)的崩潰,處理的方式有:
          • 重試機(jī)制
          • 熔斷機(jī)制
          • 降級(jí)機(jī)制
          • 限流機(jī)制
          六、解決方案
          以上都是微服務(wù)的一些概念,既然有天上飛的概念,就有落地的實(shí)現(xiàn),現(xiàn)在主流的微服務(wù)架構(gòu)有兩套解決方案:Dubbo+Zookeeper與SpringCloud。
          我司現(xiàn)在兩種方案都在用,總體來(lái)說(shuō)兩種方案都可以很方便的進(jìn)行微服務(wù)開發(fā),其中的區(qū)別在于SpringCloud組件多,功能完備,全家桶式,基本微服務(wù)中會(huì)遇到的問題都有相應(yīng)的解決方案,在通信方面SpringCloud使用的是http。
          而Dubbo+Zookeeper使用的是RPC,組件較少,功能非完備(但是我們可以自己去找相應(yīng)的解決方案),并且現(xiàn)在交由Apache進(jìn)行孵化,后面應(yīng)該會(huì)實(shí)現(xiàn)功能的完備。
          RPC 也有自己的優(yōu)點(diǎn),傳輸協(xié)議更高效,安全更可控,特別在一個(gè)公司內(nèi)部,如果有統(tǒng)一個(gè)的開發(fā)規(guī)范和統(tǒng)一的服務(wù)框架時(shí),他的開發(fā)效率優(yōu)勢(shì)更明顯些。
          當(dāng)我們的服務(wù)時(shí)一個(gè)對(duì)內(nèi)服務(wù)時(shí),我們可以使用Dubbo+Zookeeper,比如一些公用的服務(wù),這些一般是提供給內(nèi)部

          想進(jìn)大廠的小伙伴請(qǐng)注意,

          大廠面試的套路很神奇,

          早做準(zhǔn)備對(duì)大家更有好處,

          埋頭刷題效率低,

          看面經(jīng)會(huì)更有效率!

          小編準(zhǔn)備了一份大廠常問面經(jīng)匯總集

          剩下的就不會(huì)給大家一展出來(lái)了,以上資料按照一下操作即可獲得

          ——將文章進(jìn)行轉(zhuǎn)發(fā)評(píng)論關(guān)注公眾號(hào)【Java烤豬皮】,關(guān)注后繼續(xù)后臺(tái)回復(fù)領(lǐng)取口令“ 666 ”即可免費(fèi)領(lǐng)文章取中所提供的資料。




          往期精品推薦



          騰訊、阿里、滴滴后臺(tái)試題匯集總結(jié) — (含答案)

          面試:史上最全多線程序面試題!

          最新阿里內(nèi)推Java后端試題

          JVM難學(xué)?那是因?yàn)槟銢]有真正看完整這篇文章


          結(jié)束


          關(guān)注作者微信公眾號(hào) — 《JAVA烤豬皮》


          了解了更多java后端架構(gòu)知識(shí)以及最新面試寶典



          看完本文記得給作者點(diǎn)贊+在看哦~~~大家的支持,是作者來(lái)源不斷出文的動(dòng)力~

          瀏覽 93
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

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

          手機(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>
                  亚洲无码免费观看视频 | 亚洲一级特黄大片 | 欧美大香蕉四级片在线网站成熟 | 亚洲激情操逼 | 最新地址久久 |