欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

為什么要系統(tǒng)拆分?如何系統(tǒng)拆分?拆分后不用 dubbo 可以嗎?

2021-02-10    分類: 網站建設

面試題

為什么要進行系統(tǒng)拆分?如何進行系統(tǒng)拆分?拆分后不用 dubbo 可以嗎?

面試官心理分析

從這個問題開始就進行分布式系統(tǒng)環(huán)節(jié)了,現(xiàn)在出去面試分布式都成標配了,沒有哪個公司不問問你分布式的事兒。你要是不會分布式的東西,簡直這簡歷沒法看,沒人會讓你去面試。

其實為啥會這樣呢?這就是因為整個大行業(yè)技術發(fā)展的原因。

早些年,印象中在 2010 年初的時候,整個 IT 行業(yè),很少有人談分布式,更不用說微服務,雖然很多 BAT 等大型公司,因為系統(tǒng)的復雜性,很早就是分布式架構,大量的服務,只不過微服務大多基于自己搞的一套框架來實現(xiàn)而已。

但是確實,那個年代,大家很重視 ssh2,很多中小型公司幾乎大部分都是玩兒 struts2、spring、hibernate,稍晚一些,才進入了spring mvc、spring、mybatis 的組合。那個時候整個行業(yè)的技術水平就是那樣,當年 oracle 很火,oracle 管理員很吃香,oracle 性能優(yōu)化啥的都是 IT 男的大殺招啊。連大數(shù)據(jù)都沒人提,當年 OCP、OCM 等認證培訓機構,火的不行。

但是確實隨著時代的發(fā)展,慢慢的,很多公司開始接受分布式系統(tǒng)架構了,這里面尤為對行業(yè)有至關重要影響的,是阿里的 dubbo,某種程度上而言,阿里在這里推動了行業(yè)技術的前進。

正是因為有阿里的 dubbo,很多中小型公司才可以基于 dubbo,來把系統(tǒng)拆分成很多的服務,每個人負責一個服務,大家的代碼都沒有沖突,服務可以自治,自己選用什么技術都可以,每次發(fā)布如果就改動一個服務那就上線一個服務好了,不用所有人一起聯(lián)調,每次發(fā)布都是幾十萬行代碼,甚至幾百萬行代碼了。

直到今日,很高興看到分布式系統(tǒng)都成行業(yè)面試標配了,任何一個普通的程序員都該掌握這個東西,其實這是行業(yè)的進步,也是所有 IT 碼農的技術進步。所以既然分布式都成標配了,那么面試官當然會問了,因為很多公司現(xiàn)在都是分布式、微服務的架構,那面試官當然得考察考察你了。

如何進行系統(tǒng)拆分?

這個問題說大可以很大,可以扯到領域驅動模型設計上去,說小了也很小,我不太想給大家太過于學術的說法,因為你也不可能背這個答案,過去了直接說吧。還是說的簡單一點,大家自己到時候知道怎么回答就行了。

系統(tǒng)拆分為分布式系統(tǒng),拆成多個服務,拆成微服務的架構,是需要拆很多輪的。并不是說上來一個架構師一次就給拆好了,而以后都不用拆。

第一輪;團隊繼續(xù)擴大,拆好的某個服務,剛開始是 1 個人維護 1 萬行代碼,后來業(yè)務系統(tǒng)越來越復雜,這個服務是 10 萬行代碼,5 個人;第二輪,1個服務 -> 5個服務,每個服務 2 萬行代碼,每人負責一個服務。

如果是多人維護一個服務,最理想的情況下,幾十個人,1 個人負責 1 個或 2~3 個服務;某個服務工作量變大了,代碼量越來越多,某個同學,負責一個服務,代碼量變成了 10 萬行了,他自己不堪重負,他現(xiàn)在一個人拆開,5 個服務,1 個人頂著,負責 5 個人,接著招人,2 個人,給那個同學帶著,3 個人負責 5 個服務,其中 2 個人每個人負責 2 個服務,1 個人負責 1 個服務。

個人建議,一個服務的代碼不要太多,1萬行左右,兩三萬撐死了吧。

大部分的系統(tǒng),是要進行多輪拆分的,第一次拆分,可能就是將以前的多個模塊該拆分開來了,比如說將電商系統(tǒng)拆分成訂單系統(tǒng)、商品系統(tǒng)、采購系統(tǒng)、倉儲系統(tǒng)、用戶系統(tǒng),等等吧。

但是后面可能每個系統(tǒng)又變得越來越復雜了,比如說采購系統(tǒng)里面又分成了供應商管理系統(tǒng)、采購單管理系統(tǒng),訂單系統(tǒng)又拆分成了購物車系統(tǒng)、價格系統(tǒng)、訂單管理系統(tǒng)。

扯深了實在很深,所以這里先給大家舉個例子,你自己感受一下,核心意思就是根據(jù)情況,先拆分一輪,后面如果系統(tǒng)更復雜了,可以繼續(xù)分拆。你根據(jù)自己負責系統(tǒng)的例子,來考慮一下就好了。

拆分后不用 dubbo 可以嗎?

當然可以了,大不了最次,就是各個系統(tǒng)之間,直接基于 spring mvc,就純 http 接口互相通信唄,還能咋樣。但是這個肯定是有問題的,因為 http 接口通信維護起來成本很高,你要考慮超時重試、負載均衡等等各種亂七八糟的問題,比如說你的訂單系統(tǒng)調用商品系統(tǒng),商品系統(tǒng)部署了 5 臺機器,你怎么把請求均勻地甩給那 5 臺機器?這不就是負載均衡?你要是都自己搞那是可以的,但是確實很痛苦。

所以 dubbo 說白了,是一種 rpc 框架,就是說本地就是進行接口調用,但是 dubbo 會代理這個調用請求,跟遠程機器網絡通信,給你處理掉負載均衡了、服務實例上下線自動感知了、超時重試了,等等亂七八糟的問題。那你就不用自己做了,用 dubbo 就可以了。

網頁名稱:為什么要系統(tǒng)拆分?如何系統(tǒng)拆分?拆分后不用 dubbo 可以嗎?
本文鏈接:http://chinadenli.net/news/100112.html

成都網站建設公司_創(chuàng)新互聯(lián),為您提供網站設計公司、網站策劃域名注冊、品牌網站制作、企業(yè)網站制作小程序開發(fā)

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

商城網站建設