日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產(chǎn)品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
我去,拷貝代碼,居然還有這等好處?

什么是耦合?

耦合,是架構中,本來不相干的代碼、模塊、服務、系統(tǒng)因為某些原因聯(lián)系在一起,各自獨立性差,影響則相互影響,變動則相互變動的一種架構狀態(tài)。

公司主營業(yè)務:成都網(wǎng)站設計、做網(wǎng)站、移動網(wǎng)站開發(fā)等業(yè)務。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。創(chuàng)新互聯(lián)是一支青春激揚、勤奮敬業(yè)、活力青春激揚、勤奮敬業(yè)、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴謹、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領域給我們帶來的挑戰(zhàn),讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)推出原平免費做網(wǎng)站回饋大家。

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

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

因為公共庫,導致相互受影響,就是一個耦合的典型案例。

場景還原

一個看似“公共”的業(yè)務庫(*.so *.jar *.dll *.php),很多業(yè)務系統(tǒng)都依賴于這個公共庫,這個庫使得這些系統(tǒng)都耦合在了一起。

畫外音:這里的公共庫不是指像“字符串操作”這樣的不變化的工具庫,更多是指通用業(yè)務的公共庫。

耦合如何導致相互影響?

業(yè)務1,業(yè)務2,業(yè)務3都依賴于某一個biz.jar,業(yè)務1因為某個需求需要升級biz.jar。上線前,業(yè)務1的QA進行了大量的測試,確保無誤后,代碼發(fā)布,發(fā)布完線上驗證無誤后,上線完成,閃人。

突然,bug群里有人反饋,業(yè)務2的系統(tǒng)掛了,業(yè)務3的系統(tǒng)也掛了,一下炸開了鍋:

  • 業(yè)務2的大boss首先發(fā)飆:“技術都干啥了,怎么系統(tǒng)掛了”
  • 業(yè)務2的rd一臉無辜:“業(yè)務1上線了,所以我們掛了”

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

  • 業(yè)務2的大boss:“業(yè)務1上線?業(yè)務1上線前測試了么”
  • 業(yè)務1的qa自信滿滿:“測試了呀,上線前上線后都驗證了,沒問題呀”
  • 業(yè)務2的大boss對業(yè)務2的rd吼道“還想甩鍋,拖出去祭天”

不知道大家工作中會不會遇到這樣的場景,因為公共庫的耦合,兄弟部門上線,影響的確是你,此時你心里可能就在罵娘了,這幫不靠譜的**隊友。

特別的,如果公共庫的使用方很廣,這個耦合很嚴重,可能影響很大的范圍。

如何解除公共庫耦合?

方案一:代碼拷貝一份。

別嘲笑這個方案,誰敢說自己寫代碼的時候沒這么干過?

我們都知道這不是一個好的方案,但不可否認,拷貝之后,代碼各自演化,一個地方升級出錯,只影響一方,拷貝方只要不動原有代碼,至少是不會受影響的。

代碼拷貝缺點很多,系統(tǒng)拆分時,萬不得已不要使用這個方案。

方案二:垂直拆分,將公共庫里業(yè)務個性化的代碼拆到調(diào)用方去,不要放在公共庫里。

需要把業(yè)務個性的代碼拆分到各個業(yè)務線自己的工程,自己的業(yè)務庫里去,例如s1.jar / s2.jar / s3.jar,修改各自的代碼,至少不會擴大影響范圍。

大家為什么都把代碼往一個公共庫里塞?

很多時候,因為惰性,一點一點的惰性,日積月累,終成大坑。

這個垂直拆分是一個架構重構的過程,需要各業(yè)務方配合。

方案三:服務化,將公共庫里通用業(yè)務代碼拆到下層去。

完成了第一步,業(yè)務個性化的代碼提取到業(yè)務側(cè)上游。

接下來是第二步,業(yè)務通用的代碼,下沉抽取一層服務,服務對上游提供RPC接口:

  • 每次修改底層接口,需要測試接口的兼容性,保證不影響舊調(diào)用方;
  • 如果是新的業(yè)務,則建議新增接口;

最終,達到通過服務RPC調(diào)用的方式來解除耦合。

有朋友會問:

  • 底層服務接口的測試;
  • 上游業(yè)務層對公共庫的測試;

都是測試,為何前者能控制影響范圍呢?

  • 底層接口,所有人調(diào)用,接口沒問題則調(diào)用方都沒問題
  • 上游業(yè)務層對公共庫測試,只能保證自己的業(yè)務沒有問題,并不能保證其他業(yè)務方?jīng)]有問題。

個性業(yè)務代碼上浮,共性業(yè)務代碼服務化下沉,只是一個很小的優(yōu)化點,但對于公共庫解耦卻是非常的有效。

希望大家每天收獲一點點,這樣架構就能美好一點點。

畫外音:原來拷貝代碼,還有解耦的功效?

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


網(wǎng)站欄目:我去,拷貝代碼,居然還有這等好處?
本文地址:http://www.5511xx.com/article/dpsidgi.html