偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

明明服務(wù)化了,為啥耦合更加嚴(yán)重了?

開(kāi)發(fā) 開(kāi)發(fā)工具 架構(gòu)
耦合,是架構(gòu)中,本來(lái)不相干的代碼、模塊、服務(wù)、系統(tǒng)因?yàn)槟承┰蚵?lián)系在一起,各自獨(dú)立性差,影響則相互影響,變動(dòng)則相互變動(dòng)的一種架構(gòu)狀態(tài)。

什么是耦合?

耦合,是架構(gòu)中,本來(lái)不相干的代碼、模塊、服務(wù)、系統(tǒng)因?yàn)槟承┰蚵?lián)系在一起,各自獨(dú)立性差,影響則相互影響,變動(dòng)則相互變動(dòng)的一種架構(gòu)狀態(tài)。

感官上,怎么發(fā)現(xiàn)系統(tǒng)中的耦合?

作為技術(shù)人,每每在心中罵上下游,罵兄弟部門(mén),“這個(gè)東西跟我有什么關(guān)系?為什么需要我來(lái)配合做這個(gè)事情?”。明明不應(yīng)該聯(lián)動(dòng),卻要被動(dòng)配合,就可能有潛在的耦合。

但如果服務(wù)化不合理,將部分個(gè)性化業(yè)務(wù)下沉到了底層,就是一個(gè)耦合的典型案例。

場(chǎng)景還原

業(yè)務(wù)1,業(yè)務(wù)2,業(yè)務(wù)3,因?yàn)閖oin導(dǎo)致數(shù)據(jù)庫(kù)實(shí)例耦合在了一起。

為了實(shí)現(xiàn)通用數(shù)據(jù)庫(kù)table-user的解耦,實(shí)施了服務(wù)化,將通用user數(shù)據(jù)的訪問(wèn)抽象出了服務(wù)。

由于服務(wù)化不合理,會(huì)有很少很少的個(gè)性化業(yè)務(wù)邏輯,實(shí)現(xiàn)在底層的服務(wù)中,典型的偽代碼是:

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

為什么會(huì)引發(fā)耦合呢?

不妨設(shè),業(yè)務(wù)1來(lái)了一個(gè)新的個(gè)性化需求,這個(gè)需求本來(lái)實(shí)現(xiàn)在業(yè)務(wù)1自己的代碼里是合理的,但工程師S想到,底層的通用服務(wù)里也有業(yè)務(wù)1的一小撮個(gè)性化代碼,評(píng)估后,發(fā)現(xiàn)實(shí)現(xiàn)在底層新的需求改動(dòng)的代碼最小,時(shí)間最短,于是來(lái)找底層服務(wù)的負(fù)責(zé)人工程師B。

- 業(yè)務(wù)1工程師S:“有個(gè)小需求,幫個(gè)忙唄”

- 底層工程師B:“個(gè)性化實(shí)現(xiàn)在底層不合理”

- 業(yè)務(wù)1工程師S:“反正都有switch case的代碼了,再改一點(diǎn)也不麻煩,在我這邊實(shí)現(xiàn)特別復(fù)雜,要xxoo這么搞”

- 底層工程師B:“確實(shí)很復(fù)雜,那我來(lái)吧”-

- …

遺留了不合理的代碼,就會(huì)有第一次妥協(xié),妥協(xié)了業(yè)務(wù)1,就會(huì)妥協(xié)業(yè)務(wù)2,隨著時(shí)間的推移,底層服務(wù)越來(lái)越復(fù)雜:

  • 業(yè)務(wù)1,業(yè)務(wù)2,業(yè)務(wù)3的個(gè)性化代碼越來(lái)越多;
  • 業(yè)務(wù)1,業(yè)務(wù)2,業(yè)務(wù)3的需求越來(lái)越多提給底層工程師;
  • 底層工程師慢慢成了項(xiàng)目瓶頸,業(yè)務(wù)1,業(yè)務(wù)2,業(yè)務(wù)3的項(xiàng)目逐步delay,但逐步都怪到了底層工程師的頭上;

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

- 業(yè)務(wù)1的大boss在群里首先發(fā)飆:“技術(shù)都干啥了,怎么系統(tǒng)掛了”

- 業(yè)務(wù)1的工程師S一臉無(wú)辜:“底層系統(tǒng)改造,工程師S的bug”

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

- 底層服務(wù)工程師B一臉委屈:“...”。明明需求是業(yè)務(wù)方的,為什么修改代碼的是我底層呢,業(yè)務(wù)代碼出了問(wèn)題,為什么責(zé)怪的是我底層呢,每每心中罵娘,系統(tǒng)中很可能就存在耦合。

如何解耦呢?

業(yè)務(wù)代碼上浮,通用代碼下沉,服務(wù)化徹底。

解決方案并不復(fù)雜,分層架構(gòu)中,每一層都有自己的職責(zé),每一層都應(yīng)該守住自己的底線。

你在做技術(shù)方案時(shí),碰到過(guò)這種場(chǎng)景嗎?

  • “放在你那邊做代碼少”
  • “放在你那邊做時(shí)間短”

作為設(shè)計(jì)折衷的理由,而要多問(wèn):

  • “怎么做合理”

業(yè)務(wù)代碼上浮,通用代碼下沉,服務(wù)化徹底,只是一個(gè)很小的優(yōu)化點(diǎn),但對(duì)于底層服務(wù)解耦卻是非常的有效。

希望大家每天收獲一點(diǎn)點(diǎn),這樣架構(gòu)就能美好一點(diǎn)點(diǎn)。

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

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

 

 

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

2017-12-26 15:41:26

2022-03-07 10:54:34

內(nèi)存Linux

2022-02-12 17:48:03

InnoDBMySQL查詢(xún)數(shù)據(jù)

2020-05-14 18:50:35

Chrome漏洞瀏覽器

2020-07-21 09:05:47

CPU1號(hào)核寄存器

2020-11-30 22:50:48

AWS服務(wù)云計(jì)算

2022-05-08 13:17:14

CPU內(nèi)存中斷

2020-06-28 09:12:31

CPU網(wǎng)卡中斷

2022-09-16 09:13:27

代碼偷懶方法

2019-05-13 09:01:13

程序員職責(zé)產(chǎn)品經(jīng)理

2022-12-09 17:53:36

MyBatis聯(lián)表查詢(xún)

2020-12-09 08:35:45

Shell腳本語(yǔ)法

2020-09-26 10:43:57

Python語(yǔ)言數(shù)據(jù)分析

2023-06-21 11:19:21

2024-11-26 07:37:22

2025-05-12 08:25:00

架構(gòu)服務(wù)化耦合

2017-12-26 15:52:31

MQ互聯(lián)網(wǎng)耦合

2024-02-01 08:38:19

項(xiàng)目代碼CICD

2021-03-29 12:57:31

漏洞OpenSSLDos

2021-07-19 17:56:44

比特幣加密貨幣勒索軟件
點(diǎn)贊
收藏

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