自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

業(yè)務(wù)層,到底需不需要服務(wù)化?

開(kāi)發(fā) 開(kāi)發(fā)工具 前端
除了基礎(chǔ)數(shù)據(jù)的訪問(wèn)需要服務(wù)化,業(yè)務(wù)層是否需要服務(wù)化?如果需要,什么時(shí)機(jī)進(jìn)行服務(wù)化?這是本文要討論的兩個(gè)問(wèn)題。

[[358813]]

很多公司,都實(shí)施了微服務(wù)架構(gòu),底層抽象出很多基礎(chǔ)數(shù)據(jù)服務(wù)。

基礎(chǔ)數(shù)據(jù)的訪問(wèn)服務(wù)化之后,架構(gòu)如上:

  • 站點(diǎn)業(yè)務(wù)通過(guò)RPC接口,調(diào)用基礎(chǔ)數(shù)據(jù)服務(wù);
  • 基礎(chǔ)數(shù)據(jù)服務(wù)通過(guò)DAO,從db/cache獲取數(shù)據(jù);
  • db/cache存儲(chǔ)數(shù)據(jù);

除了基礎(chǔ)數(shù)據(jù)的訪問(wèn)需要服務(wù)化,業(yè)務(wù)層是否需要服務(wù)化?如果需要,什么時(shí)機(jī)進(jìn)行服務(wù)化?這是本文要討論的兩個(gè)問(wèn)題。

隨著時(shí)間的推移,系統(tǒng)架構(gòu)并不會(huì)一成不變:

(1)隨著業(yè)務(wù)越來(lái)越復(fù)雜,業(yè)務(wù)會(huì)不斷進(jìn)行垂直拆分;

畫(huà)外音:以58同城為例,有招聘、房產(chǎn)、二手、二手車(chē)、黃頁(yè)等多個(gè)業(yè)務(wù)。

(2)隨著數(shù)據(jù)越來(lái)越復(fù)雜,基礎(chǔ)數(shù)據(jù)服務(wù)也會(huì)越來(lái)越多;

畫(huà)外音,例如:用戶服務(wù),訂單服務(wù),搜索服務(wù),推薦服務(wù)等。

于是系統(tǒng)架構(gòu)變成了上圖這個(gè)樣子,業(yè)務(wù)垂直拆分,有若干個(gè)基礎(chǔ)數(shù)據(jù)服務(wù):

  • 垂直業(yè)務(wù)要通過(guò)多個(gè)RPC接口訪問(wèn)不同的基礎(chǔ)數(shù)據(jù)服務(wù),服務(wù)共享是服務(wù)化的特征;
  • 每個(gè)基礎(chǔ)數(shù)據(jù)服務(wù)訪問(wèn)自己的數(shù)據(jù)存儲(chǔ),數(shù)據(jù)私有也是服務(wù)化的特征;

上面架構(gòu)圖中的依賴關(guān)系是不是看上去很別扭?

  • 基礎(chǔ)數(shù)據(jù)服務(wù)與存儲(chǔ)層之間連接關(guān)系很清晰;
  • 業(yè)務(wù)站點(diǎn)層與基礎(chǔ)數(shù)據(jù)服務(wù)層之間的連接關(guān)系錯(cuò)綜復(fù)雜,變成了蜘蛛網(wǎng);

再舉一個(gè)更具體的例子,58同城列表頁(yè)站點(diǎn)如何獲取底層的數(shù)據(jù)?

  • 首先調(diào)用商業(yè)基礎(chǔ)服務(wù),獲取商業(yè)廣告帖子數(shù)據(jù),用于頂部置頂/精準(zhǔn)的廣告帖子展示;
  • 再調(diào)用搜索基礎(chǔ)服務(wù),獲取自然搜索帖子數(shù)據(jù),用于中間自然搜索帖子展示;
  • 再調(diào)用推薦基礎(chǔ)服務(wù),獲取推薦帖子數(shù)據(jù),用于底部推薦帖子展示;
  • 再調(diào)用用戶基礎(chǔ)服務(wù),獲取用戶數(shù)據(jù),用于右側(cè)用戶信息展示;

如果只有一個(gè)列表頁(yè)這么寫(xiě)還行,但如果有招聘、房產(chǎn)、二手、二手車(chē)、黃頁(yè)等多個(gè)業(yè)務(wù),都這么獲取共性數(shù)據(jù),而只有少部分個(gè)性數(shù)據(jù),每次都這么一個(gè)個(gè)調(diào)用基礎(chǔ)服務(wù),有大量冗余、重復(fù)、每次必寫(xiě)的代碼。

特別的,不同業(yè)務(wù)上游列表頁(yè)都依賴于底層若干相同服務(wù):

  • 一旦一個(gè)服務(wù)RPC接口有稍許變化,所有上游的系統(tǒng)都需要升級(jí)修改;
  • 子系統(tǒng)之間很可能出現(xiàn)代碼拷貝;
  • 一旦拷貝代碼,出現(xiàn)一個(gè)bug,多個(gè)子系統(tǒng)都需要升級(jí)修改;

如何讓數(shù)據(jù)的獲取更加高效快捷呢?

業(yè)務(wù)服務(wù)化,通用業(yè)務(wù)服務(wù)層的抽象勢(shì)在必行。

通過(guò)抽象通用業(yè)務(wù)服務(wù)層,例如58同城“通用列表服務(wù)”:

  • 業(yè)務(wù)站點(diǎn)層,可以通過(guò)RPC接口,像調(diào)用本地函數(shù)一樣,調(diào)用通用業(yè)務(wù)服務(wù),一次性獲取所有通用數(shù)據(jù);
  • 通用業(yè)務(wù)服務(wù),也可以通過(guò)多次調(diào)用基礎(chǔ)數(shù)據(jù)服務(wù)提供的RPC接口,分別獲取數(shù)據(jù),底層數(shù)據(jù)獲取的復(fù)雜性,全都屏蔽在了此處;

是不是連接關(guān)系也看起來(lái)更清晰?

這樣的好處是:

  • 復(fù)雜的從基礎(chǔ)服務(wù)獲取數(shù)據(jù)代碼,只有在通用業(yè)務(wù)服務(wù)處寫(xiě)了一次,沒(méi)有代碼拷貝;
  • 底層基礎(chǔ)數(shù)據(jù)服務(wù)接口發(fā)生變化,只有通用業(yè)務(wù)服務(wù)一處需要升級(jí)修改;
  • 如果有bug,不管是底層基礎(chǔ)數(shù)據(jù)服務(wù)的bug,還是通用業(yè)務(wù)服務(wù)的bug,都只有一處需要升級(jí)修改;
  • 業(yè)務(wù)站點(diǎn)層獲取數(shù)據(jù)更便捷,獲取所有數(shù)據(jù),只需一個(gè)RPC接口調(diào)用;

于是,當(dāng)業(yè)務(wù)越來(lái)越復(fù)雜,垂直拆分的系統(tǒng)越來(lái)越多,基礎(chǔ)數(shù)據(jù)服務(wù)越來(lái)越多,底層數(shù)據(jù)獲取復(fù)雜性成為通用痛點(diǎn)的時(shí)候,就應(yīng)該抽象出通用業(yè)務(wù)服務(wù),簡(jiǎn)化數(shù)據(jù)獲取過(guò)程,提高數(shù)據(jù)獲取效率,向上游屏蔽底層的復(fù)雜性。

最后再?gòu)?qiáng)調(diào)兩點(diǎn):

(1)是否需要抽象通用業(yè)務(wù)服務(wù),和業(yè)務(wù)復(fù)雜性,以及業(yè)務(wù)發(fā)展階段有關(guān),不可一概而論;

畫(huà)外音:如果沒(méi)有多個(gè)業(yè)務(wù)線,大概率基礎(chǔ)服務(wù)就夠用。

(2)需要抽象什么通用業(yè)務(wù)服務(wù),和具體業(yè)務(wù)相關(guān);

畫(huà)外音:帖子列表業(yè)務(wù)服務(wù),帖子詳情業(yè)務(wù)服務(wù),是58同城特有的;而基礎(chǔ)服務(wù),例如用戶,訂單,支付等基礎(chǔ)服務(wù),基本上各個(gè)公司是類(lèi)似的。

任何脫離業(yè)務(wù)的架構(gòu)設(shè)計(jì),都是耍流氓。

【本文為51CTO專(zhuān)欄作者“58沈劍”原創(chuàng)稿件,轉(zhuǎn)載請(qǐng)聯(lián)系原作者】

戳這里,看該作者更多好文

 

責(zé)任編輯:趙寧寧 來(lái)源: 51CTO專(zhuān)欄
相關(guān)推薦

2022-02-15 07:26:34

web前端算法題

2010-11-23 10:55:47

跳槽

2020-09-09 10:07:06

導(dǎo)航手機(jī)導(dǎo)航北斗導(dǎo)航

2023-10-04 00:19:00

Java開(kāi)發(fā)

2011-09-02 09:45:39

交互設(shè)計(jì)Android

2009-11-23 12:45:22

2010-07-29 09:28:02

VMware虛擬化云計(jì)算

2017-10-21 22:47:46

服務(wù)化業(yè)務(wù)層分層架構(gòu)

2018-01-17 15:33:14

2017-03-13 13:54:40

戴爾

2017-08-08 14:33:36

無(wú)服務(wù)計(jì)算服務(wù)器

2015-07-02 14:15:28

云遷移應(yīng)用重構(gòu)頭號(hào)難題

2015-09-14 11:06:53

PYTHON運(yùn)維

2020-02-29 15:58:37

iPhoneiOS安卓

2012-08-23 09:50:07

測(cè)試測(cè)試人員軟件測(cè)試

2011-04-07 15:19:37

路由器

2015-09-30 09:57:53

天分熱情工程師

2013-12-02 09:43:29

字符串編程

2015-08-20 10:56:19

算法界面開(kāi)發(fā)

2024-02-22 09:00:00

LogitMat數(shù)據(jù)集算法
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)