成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

服務化了,沒想到耦合更加嚴重?

開發 開發工具
通過“庫”來實現業務,可能會引發業務系統之間耦合,需要通用業務服務化,;通過“join”來實現業務,可能會導致數據庫之間耦合,需要基礎數據服務化;但如果服務化不合理,將部分個性化業務下沉到了底層,耦合與瓶頸會更加嚴重。

通過“庫”來實現業務,可能會引發業務系統之間耦合,需要通用業務服務化,將通用業務下沉,詳見《小小的公共庫,大大的耦合,你痛過嗎》。

通過“join”來實現業務,可能會導致數據庫之間耦合,需要基礎數據服務化,實現數據庫私有化,解除數據庫之間的耦合,詳見《CA,給了數據庫,給了機器,為啥也擴不了容?》。

但如果服務化不合理,將部分個性化業務下沉到了底層,耦合與瓶頸會更加嚴重。

場景還原

業務1,業務2,業務3,因為join導致數據庫實例耦合在了一起。

數據庫實例耦合

為了實現通用數據庫table-user的解耦,實施了服務化,將通用user數據的訪問抽象出了服務。

由于服務化不合理,會有很少很少的個性化業務邏輯,實現在底層的服務中,典型的偽代碼是:

  1. switch(biz_type){ 
  2.  case(1) : exec_logic1(); 
  3.  case(2) : exec_logic2(); 
  4.  case(3) : exec_logic3(); 
  5.  default : exec_default(); 

為什么會引發耦合呢?

為什么會引發耦合呢?

不妨設,業務1來了一個新的個性化需求,這個需求本來實現在業務1自己的代碼里是合理的,但工程師S想到,底層的通用服務里也有業務1的一小撮個性化代碼,評估后,發現實現在底層新的需求改動的代碼最小,時間最短,于是來找底層服務的負責人工程師B。

  • 業務1工程師S:“有個小需求,幫個忙唄”
  • 底層工程師B:“個性化實現在底層不合理”
  • 業務1工程師S:“反正都有switch case的代碼了,再改一點也不麻煩,在我這邊實現特別復雜,要xxoo這么搞”
  • 底層工程師B:“確實很復雜,那我來吧”

遺留了不合理的代碼,就會有第一次妥協,妥協了業務1,就會妥協業務2,隨著時間的推移,底層服務越來越復雜:

  • 業務1,業務2,業務3的個性化代碼越來越多
  • 業務1,業務2,業務3的需求越來越多提給底層工程師
  • 底層工程師慢慢成了項目瓶頸,業務1,業務2,業務3的項目逐步delay,但逐步都怪到了底層工程師的頭上

直到有一天,底層服務出了一個小bug,影響了業務1,業務2,業務3,歷史總是驚人的相似:

  • 業務1的大boss在群里首先發飆:“技術都干啥了,怎么系統掛了”
  • 業務1的工程師S一臉無辜:“底層系統改造,工程師S的bug”

額,然而,這個理由,好像在大boss那解釋不通…

  • 底層服務工程師B一臉委屈:“...”。明明需求是業務方的,為什么修改代碼的是我底層呢,業務代碼出了問題,為什么責怪的是我底層呢,每每心中罵娘,系統中很可能就存在耦合。

如何解耦呢?

業務代碼上浮,通用代碼下沉,服務化徹底。

解決方案并不復雜,分層架構中,每一層都有自己的職責,每一層都應該守住自己的底線。

啟示

1. 討論技術方案時,不要總以:

  • “放在你那邊做代碼少”
  • “放在你那邊做時間短”
  • 作為設計折衷的理由,而要多問:“怎么做合理”

2. 盡量杜絕底層出現switch case(biz_type)走不同分支的代碼。

業務代碼上浮,通用代碼下沉,服務化徹底,只是一個很小的優化點,但對于底層服務解耦卻是非常的有效。

【本文為51CTO專欄作者“58沈劍”原創稿件,轉載請聯系原作者】

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

責任編輯:趙寧寧 來源: 51CTO專欄
相關推薦

2021-08-26 16:55:26

耦合服務化架構

2021-01-27 18:13:35

日志nginx信息

2018-01-26 23:23:23

JDBC MySQL數據庫

2012-12-28 13:47:36

Raspberry PGeek

2017-02-09 17:00:00

iOSSwiftKVC

2022-01-05 17:13:28

監控HTTPS網站

2020-08-14 08:19:25

Shell命令行數據

2021-11-29 05:37:24

Windows Def操作系統微軟

2009-04-28 07:48:29

蓋茨打工基金會

2023-10-31 12:29:25

模型訓練

2021-08-12 06:52:02

谷歌面試ArrayList

2022-03-21 08:55:53

RocketMQ客戶端過濾機制

2019-03-08 10:08:41

網絡程序猿代碼

2023-02-26 00:00:02

字符串分割String

2023-09-07 06:48:38

Intel顯卡AMD

2018-10-22 15:29:50

2021-02-25 17:58:26

Python 開發編程語言

2022-11-02 07:46:31

GoFrameGcache緩存

2020-12-31 06:12:38

Siri Windows電腦

2023-05-26 07:25:46

微服務架構Dubbo
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日韩免费网站 | 羞羞网站在线免费观看 | 免费的av网站 | 日韩中文字幕 | av在线免费观看网站 | 网站国产 | www.蜜桃av| 欧美精品久久久久久久久久 | 国产成人av在线播放 | 岛国毛片在线观看 | 精品视频在线观看 | 久久精品免费一区二区 | 国产精品毛片无码 | 精品国产一区二区国模嫣然 | 国产精品欧美一区二区三区不卡 | 一本一道久久a久久精品蜜桃 | 久久久妇女国产精品影视 | 亚洲欧美一区在线 | 日韩精品一区二区三区免费视频 | 日日天天 | 国产精品久久久久久久久久免费看 | 国精产品一区二区三区 | 精品国产乱码久久久久久88av | 精品91久久 | 黑人久久久 | 成人av网站在线观看 | 亚洲午夜精品在线观看 | 四虎成人免费视频 | 动漫www.被爆羞羞av44 | 涩涩视频在线观看 | 国产天堂 | 国产精品高潮呻吟 | 激情一区二区三区 | 免费xxxx大片国产在线 | 伊人网站在线观看 | 九九99靖品 | 成人av在线播放 | 国产免费一区二区 | 亚洲美女一区 | 亚洲成人av一区二区 | 日韩精品在线看 |