柚子快報(bào)邀請(qǐng)碼778899分享:冰河開(kāi)始對(duì)Dubbo下手了!
柚子快報(bào)邀請(qǐng)碼778899分享:冰河開(kāi)始對(duì)Dubbo下手了!
無(wú)法針對(duì)某個(gè)具體模塊來(lái)提升性能。 無(wú)法對(duì)項(xiàng)目進(jìn)行水平擴(kuò)展。
正是由于單體應(yīng)用架構(gòu)存在著諸多的缺點(diǎn),才逐漸演變?yōu)榇怪睉?yīng)用架構(gòu)。接下來(lái),我們就來(lái)看看垂直應(yīng)用架構(gòu)。
垂直應(yīng)用架構(gòu)
隨著企業(yè)業(yè)務(wù)的不斷發(fā)展,發(fā)現(xiàn)單節(jié)點(diǎn)的單體應(yīng)用不足以支撐業(yè)務(wù)的發(fā)展,于是企業(yè)會(huì)將單體應(yīng)用部署多份,分別放在不同的服務(wù)器上。但是,此時(shí)會(huì)發(fā)現(xiàn)不是所有的模塊都會(huì)有比較大的訪(fǎng)問(wèn)量。如果想針對(duì)項(xiàng)目中的某些模塊進(jìn)行優(yōu)化和性能提升,此時(shí)對(duì)于單體應(yīng)用來(lái)說(shuō),是做不到的。于是乎,垂直應(yīng)用架構(gòu)誕生了。
垂直應(yīng)用架構(gòu),就是將原來(lái)一個(gè)項(xiàng)目應(yīng)用進(jìn)行拆分,將其拆分為互不想干的幾個(gè)應(yīng)用,以此來(lái)提升系統(tǒng)的整體性能。
這里,我們同樣以電商系統(tǒng)為例,在垂直應(yīng)用架構(gòu)下,我們可以將整個(gè)電商項(xiàng)目拆分為:電商交易系統(tǒng)、后臺(tái)管理系統(tǒng)、CMS管理系統(tǒng)等。
我們將單體應(yīng)用架構(gòu)拆分為垂直應(yīng)用架構(gòu)之后,一旦訪(fǎng)問(wèn)量變大,我們只需要針對(duì)訪(fǎng)問(wèn)量大的業(yè)務(wù)增加服務(wù)器節(jié)點(diǎn)即可,無(wú)需針對(duì)整個(gè)項(xiàng)目增加服務(wù)器節(jié)點(diǎn)了。
這種架構(gòu)的優(yōu)點(diǎn):
系統(tǒng)進(jìn)行了拆分,可根據(jù)不同系統(tǒng)的訪(fǎng)問(wèn)情況,有針對(duì)性的進(jìn)行優(yōu)化。 能夠?qū)崿F(xiàn)應(yīng)用的水平擴(kuò)展。 各系統(tǒng)能夠分擔(dān)整體訪(fǎng)問(wèn)的流量,解決了并發(fā)問(wèn)題。 一個(gè)系統(tǒng)發(fā)生了故障,不應(yīng)用其他系統(tǒng)的運(yùn)行情況,提高了整體的容錯(cuò)率。
這種架構(gòu)的缺點(diǎn):
拆分后的各系統(tǒng)之間相對(duì)比較獨(dú)立,無(wú)法進(jìn)行互相調(diào)用。 各系統(tǒng)難免存在重疊的業(yè)務(wù),會(huì)存在重復(fù)開(kāi)發(fā)的業(yè)務(wù),后期維護(hù)比較困難。
分布式架構(gòu)
我們將系統(tǒng)演變?yōu)榇怪睉?yīng)用架構(gòu)之后,當(dāng)垂直應(yīng)用越來(lái)越多,重復(fù)編寫(xiě)的業(yè)務(wù)代碼就會(huì)越來(lái)越多。此時(shí),我們需要將重復(fù)的代碼抽象出來(lái),形成統(tǒng)一的服務(wù)供其他系統(tǒng)或者業(yè)務(wù)模塊來(lái)進(jìn)行調(diào)用。此時(shí),系統(tǒng)就會(huì)演變?yōu)榉植际郊軜?gòu)。
在分布式架構(gòu)中,我們會(huì)將系統(tǒng)整體拆分為服務(wù)層和表現(xiàn)層。服務(wù)層封裝了具體的業(yè)務(wù)邏輯供表現(xiàn)層調(diào)用,表現(xiàn)層則負(fù)責(zé)處理與頁(yè)面的交互操作。
這種架構(gòu)的優(yōu)點(diǎn):
將重復(fù)的業(yè)務(wù)代碼抽象出來(lái),形成公共的訪(fǎng)問(wèn)服務(wù),提高了代碼的復(fù)用性。 可以有針對(duì)性的對(duì)系統(tǒng)和服務(wù)進(jìn)行性能優(yōu)化,以提升整體的訪(fǎng)問(wèn)性能。
這種架構(gòu)的缺點(diǎn):
系統(tǒng)之間的耦合度變高,調(diào)用關(guān)系變得復(fù)雜,難以維護(hù)。
SOA架構(gòu)
在分布式架構(gòu)下,當(dāng)部署的服務(wù)越來(lái)越多,重復(fù)的代碼就會(huì)越來(lái)越多,對(duì)于容量的評(píng)估,小服務(wù)資源的浪費(fèi)等問(wèn)題比較嚴(yán)重。此時(shí),我們就需要增加一個(gè)統(tǒng)一的調(diào)度中心來(lái)對(duì)集群進(jìn)行實(shí)時(shí)管理。此時(shí),系統(tǒng)就會(huì)演變?yōu)镾OA(面向服務(wù))的架構(gòu)。
這種架構(gòu)的優(yōu)點(diǎn):
使用注冊(cè)中心解決了各個(gè)服務(wù)之間的服務(wù)依賴(lài)和調(diào)用關(guān)系的自動(dòng)注冊(cè)與發(fā)現(xiàn)。
這種架構(gòu)的缺點(diǎn):
各服務(wù)之間存在依賴(lài)關(guān)系,如果某個(gè)服務(wù)出現(xiàn)故障可能會(huì)造成服務(wù)的雪崩(關(guān)于穿透、擊穿和雪崩的問(wèn)題,小伙伴們可以參見(jiàn)我之前寫(xiě)的《【高并發(fā)】面試官:講講什么是緩存穿透?擊穿?雪崩?如何解決?》一文)。 服務(wù)之間的依賴(lài)與調(diào)用關(guān)系復(fù)雜,測(cè)試部署的困難比較大。
微服務(wù)架構(gòu)
隨著業(yè)務(wù)的發(fā)展,我們?cè)赟OA架構(gòu)的基礎(chǔ)上進(jìn)一步擴(kuò)展,將其徹底拆分為微服務(wù)架構(gòu)。在微服務(wù)架構(gòu)下,我們將一個(gè)大的項(xiàng)目拆分為一個(gè)個(gè)小的可以獨(dú)立部署的微服務(wù),每個(gè)微服務(wù)都有自己的數(shù)據(jù)庫(kù)。
這種架構(gòu)的優(yōu)點(diǎn):
服務(wù)徹底拆分,各服務(wù)獨(dú)立打包、獨(dú)立部署和獨(dú)立升級(jí)。 每個(gè)微服務(wù)負(fù)責(zé)的業(yè)務(wù)比較清晰,利于后期擴(kuò)展和維護(hù)。 微服務(wù)之間可以采用REST和RPC協(xié)議進(jìn)行通信。
這種架構(gòu)的缺點(diǎn):
開(kāi)發(fā)的成本比較高。 涉及到各服務(wù)的容錯(cuò)性問(wèn)題。 涉及到數(shù)據(jù)的一致性問(wèn)題。 涉及到分布式事務(wù)問(wèn)題(小伙伴們可以參見(jiàn)我后續(xù)會(huì)持續(xù)更新的【分布式事務(wù)】專(zhuān)題)。
為何學(xué)習(xí)Dubbo?
(1)系統(tǒng)升級(jí)過(guò)程中需要使用dubbo解決問(wèn)題。
在系統(tǒng)架構(gòu)升級(jí)和微服務(wù)落地的過(guò)程中,我們需要解決很多的問(wèn)題,比如:
將一個(gè)項(xiàng)目拆分為多個(gè)服務(wù)之后,服務(wù)于服務(wù)之間如何高效的通信? 服務(wù)的調(diào)用如何做到負(fù)載均衡和高可用? 服務(wù)的調(diào)用如何做到限流?又如何快速的感知到依賴(lài)服務(wù)宕機(jī)? 服務(wù)的邊界如何定義? 當(dāng)系統(tǒng)中存在的服務(wù)越來(lái)越多時(shí),如何進(jìn)行服務(wù)治理等等。
這些問(wèn)題,我們都可以使用Dubbo來(lái)解決。
(2)互聯(lián)網(wǎng)大廠(chǎng)需要掌握Dubbo技術(shù)。
很明確,很多互聯(lián)網(wǎng)大廠(chǎng)都需要深度掌握Dubbo這項(xiàng)技術(shù)。這里說(shuō)的深度掌握,并不只是停留在簡(jiǎn)單的使用層面,而是對(duì)Dubbo的核心原理和源碼有一定的理解。換句話(huà)說(shuō):就是你要對(duì)Dubbo的核心原理和源碼很熟,在高并發(fā)、大流量場(chǎng)景下要能夠結(jié)合Dubbo的原理和源碼分析出問(wèn)題所在,并能夠進(jìn)行相應(yīng)的性能調(diào)優(yōu)。
所以說(shuō),如果你想進(jìn)互聯(lián)網(wǎng)大廠(chǎng),最好是掌握Dubbo的核心原理和源碼。
Dubbo的使用場(chǎng)景
在分布式架構(gòu)、SOA架構(gòu)和微服務(wù)架構(gòu)下,Dubbo有其充分的用武之地。有些小伙伴可能會(huì)說(shuō):我們系統(tǒng)中使用的是SpringCloud技術(shù)棧,不需要使用Dubbo呀!其實(shí),使用SpringCloud和Dubbo是不沖突的,甚至二者也可以結(jié)合使用。例如,我所經(jīng)歷的項(xiàng)目,有些獨(dú)立的模塊使用了Dubbo作為RPC框架,有些模塊則使用了SpringCloud,二者并不是沖突的,可以做到互相促進(jìn)的作用。
總體來(lái)說(shuō),Dubbo的使用場(chǎng)景如下:
RPC分布式服務(wù)
當(dāng)網(wǎng)站變大后,不可避免的需要拆分應(yīng)用進(jìn)行服務(wù)化,以提高開(kāi)發(fā)效率,調(diào)優(yōu)性能,節(jié)省關(guān)鍵競(jìng)爭(zhēng)資源等。
自我介紹一下,小編13年上海交大畢業(yè),曾經(jīng)在小公司待過(guò),也去過(guò)華為、OPPO等大廠(chǎng),18年進(jìn)入阿里一直到現(xiàn)在。
深知大多數(shù)Java工程師,想要提升技能,往往是自己摸索成長(zhǎng)或者是報(bào)班學(xué)習(xí),但對(duì)于培訓(xùn)機(jī)構(gòu)動(dòng)則幾千的學(xué)費(fèi),著實(shí)壓力不小。自己不成體系的自學(xué)效果低效又漫長(zhǎng),而且極易碰到天花板技術(shù)停滯不前!
因此收集整理了一份《2024年Java開(kāi)發(fā)全套學(xué)習(xí)資料》,初衷也很簡(jiǎn)單,就是希望能夠幫助到想自學(xué)提升又不知道該從何學(xué)起的朋友,同時(shí)減輕大家的負(fù)擔(dān)。
既有適合小白學(xué)習(xí)的零基礎(chǔ)資料,也有適合3年以上經(jīng)驗(yàn)的小伙伴深入學(xué)習(xí)提升的進(jìn)階課程,基本涵蓋了95%以上Java開(kāi)發(fā)知識(shí)點(diǎn),真正體系化!
由于文件比較大,這里只是將部分目錄截圖出來(lái),每個(gè)節(jié)點(diǎn)里面都包含大廠(chǎng)面經(jīng)、學(xué)習(xí)筆記、源碼講義、實(shí)戰(zhàn)項(xiàng)目、講解視頻,并且會(huì)持續(xù)更新!
如果你覺(jué)得這些內(nèi)容對(duì)你有幫助,可以?huà)叽a獲?。。。▊渥ava獲取)
最后
現(xiàn)在其實(shí)從大廠(chǎng)招聘需求可見(jiàn),在招聘要求上有高并發(fā)經(jīng)驗(yàn)優(yōu)先,包括很多朋友之前都是做傳統(tǒng)行業(yè)或者外包項(xiàng)目,一直在小公司,技術(shù)搞的比較簡(jiǎn)單,沒(méi)有怎么搞過(guò)分布式系統(tǒng),但是現(xiàn)在互聯(lián)網(wǎng)公司一般都是做分布式系統(tǒng)。
所以說(shuō),如果你想進(jìn)大廠(chǎng),想脫離傳統(tǒng)行業(yè),這些技術(shù)知識(shí)都是你必備的,下面自己手打了一份Java并發(fā)體系思維導(dǎo)圖,希望對(duì)你有所幫助。
《一線(xiàn)大廠(chǎng)Java面試題解析+核心總結(jié)學(xué)習(xí)筆記+最新講解視頻+實(shí)戰(zhàn)項(xiàng)目源碼》,點(diǎn)擊傳送門(mén)即可獲??! 沒(méi)有怎么搞過(guò)分布式系統(tǒng),但是現(xiàn)在互聯(lián)網(wǎng)公司一般都是做分布式系統(tǒng)。
所以說(shuō),如果你想進(jìn)大廠(chǎng),想脫離傳統(tǒng)行業(yè),這些技術(shù)知識(shí)都是你必備的,下面自己手打了一份Java并發(fā)體系思維導(dǎo)圖,希望對(duì)你有所幫助。
[外鏈圖片轉(zhuǎn)存中…(img-VoO0PPfx-1711891866104)]
《一線(xiàn)大廠(chǎng)Java面試題解析+核心總結(jié)學(xué)習(xí)筆記+最新講解視頻+實(shí)戰(zhàn)項(xiàng)目源碼》,點(diǎn)擊傳送門(mén)即可獲??!
柚子快報(bào)邀請(qǐng)碼778899分享:冰河開(kāi)始對(duì)Dubbo下手了!
相關(guān)閱讀
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場(chǎng)。
轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。