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