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