日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

项目复盘

發(fā)布時(shí)間:2023/11/30 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 项目复盘 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

前言

  最近一年半多一直在做一個(gè)CMS項(xiàng)目,做了快兩年了也沒有上線,而且開發(fā)還走了不少,其中有不少原因是因?yàn)殚_發(fā)中頻繁改動(dòng)需求導(dǎo)致開發(fā)人員失去耐心,但是其中還有一個(gè)重要的原因就是架構(gòu)設(shè)計(jì)的不好,導(dǎo)致很多服務(wù)的邊界很模糊,耦合性強(qiáng),改一處需求從而導(dǎo)致遷一發(fā)動(dòng)全身的惡果!下面復(fù)盤下這個(gè)項(xiàng)目中架構(gòu)設(shè)計(jì)的坑,從中吸取教訓(xùn)!

架構(gòu)圖

  首先,這個(gè)項(xiàng)目采用的SOA的架構(gòu),分為多媒體、廣告、任務(wù)調(diào)度、核心這四個(gè)模塊,其中核心這個(gè)模塊定義的很模糊,把認(rèn)證、授權(quán)、站群全部放在的核心模塊中,這樣導(dǎo)致核心模塊成了一個(gè)臃腫的單體服務(wù)。

    

?

多媒體模塊:負(fù)責(zé)圖片、視頻、文件資源的上傳下載,需要視頻轉(zhuǎn)碼、圖片處理時(shí)則調(diào)用task模塊負(fù)責(zé),task處理完成后再通過mq回調(diào)core通知任務(wù)處理成功。

廣告模塊:負(fù)責(zé)接入大數(shù)據(jù)便簽,通過大數(shù)據(jù)推送的人物畫像標(biāo)簽動(dòng)態(tài)生成廣告,實(shí)現(xiàn)千人千頁廣告效果(廣告模塊的理想狀態(tài)下的功能,實(shí)質(zhì)上有各種原因沒有實(shí)現(xiàn)‘千人千頁’的效果,后面會(huì)具體說下原因)

調(diào)度模塊:負(fù)責(zé)處理多媒體的圖片、視頻,站群的發(fā)布任務(wù)(這個(gè)模塊的服務(wù)邊界很模糊,導(dǎo)致調(diào)度模塊過多耦合業(yè)務(wù)最終成了一個(gè)誰也說不清楚的爛攤子服務(wù)……)

核心模塊:這個(gè)模塊同樣存在服務(wù)邊界模糊的問題,核心模塊里面有包含了用戶模塊、站群站點(diǎn)模塊、OpenApi模塊,最終結(jié)果就是一個(gè)四不像的單體應(yīng)用……

通過上面的描述,其實(shí)發(fā)現(xiàn)一最大的問題就是模塊之間服務(wù)邊界很模糊,大家誰也說不清楚這個(gè)模塊到底是一個(gè)工具模塊(調(diào)度模塊)還是一個(gè)業(yè)務(wù)模塊,開發(fā)者不清楚那些邏輯要寫在core里面,那些邏輯是要交給task里面,再加上開發(fā)者的水平也參差不齊,對(duì)業(yè)務(wù)和架構(gòu)理解不透徹,架構(gòu)師也沒有及時(shí)的codeview(或者說,架構(gòu)師自己對(duì)模塊之間的服務(wù)邊界問題也很模糊),最終的結(jié)果就是大家沒有統(tǒng)一的開發(fā)原則,自己的代碼想寫在那個(gè)模塊就寫到哪個(gè)模塊中,時(shí)間長(zhǎng)了連開發(fā)者自己也不清楚一個(gè)業(yè)務(wù)到底有哪個(gè)幾個(gè)模塊參與了或者自己捋不清楚自己負(fù)責(zé)的業(yè)務(wù)線(當(dāng)然,這里還有一種可能,就是模塊之間的服務(wù)邊界很模糊,有些開發(fā)者可能為了偷懶強(qiáng)行把一個(gè)業(yè)務(wù)部分邏輯放在其他模塊中,讓別人替自己實(shí)現(xiàn),美其曰,這是按照模塊開發(fā)的思想,其實(shí)這本質(zhì)是一種不負(fù)責(zé)的表現(xiàn)!)。

優(yōu)化后的架構(gòu)

  優(yōu)化后的架構(gòu)還是SOA架構(gòu),把核心模塊拆分成了用戶模塊、站群站點(diǎn)模塊,調(diào)度模塊里面的業(yè)務(wù)邏輯遷移到業(yè)務(wù)層中,從此調(diào)度模塊不再負(fù)責(zé)業(yè)務(wù)處理,只負(fù)責(zé)任務(wù)的調(diào)度,所有的業(yè)務(wù)代碼全部放在業(yè)務(wù)層中,生命周期也全部在業(yè)務(wù)層中。

這里強(qiáng)調(diào)一下,之前的調(diào)度模塊里面有業(yè)務(wù)代碼,所有有些業(yè)務(wù)的生命周期是跨模塊的,這樣會(huì)導(dǎo)致業(yè)務(wù)線不完整,或者耦合很大。調(diào)整后的調(diào)度模塊,只服務(wù)調(diào)度任務(wù),任務(wù)的的具體實(shí)現(xiàn)是由發(fā)起調(diào)度任務(wù)的開發(fā)者實(shí)現(xiàn),即:誰調(diào)度誰實(shí)現(xiàn),這樣的好處有兩點(diǎn),一是調(diào)度模塊由業(yè)務(wù)模塊轉(zhuǎn)變成了工具模塊,解耦合,二是業(yè)務(wù)代碼的生命周期完全在業(yè)務(wù)層中,不會(huì)再出現(xiàn)一個(gè)業(yè)務(wù)線開發(fā)者自己都捋不清楚的情況發(fā)生,即:誰開發(fā)誰掌握代碼的生命周期。具體調(diào)度模塊怎么調(diào)度任務(wù),這里有很很多的實(shí)現(xiàn)方式,rest、rpc都可以實(shí)現(xiàn),完全沒有必要通過MQ來調(diào)度任務(wù)。

最后吐個(gè)槽,一個(gè)合格的架構(gòu)師一定是一直保持在一線碼代碼的高級(jí)工程師,如果只會(huì)ppt不能技術(shù)落地這樣會(huì)害死人的……

?

轉(zhuǎn)載于:https://www.cnblogs.com/salvinlee/p/10986460.html

總結(jié)

以上是生活随笔為你收集整理的项目复盘的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。