短視頻系統(tǒng)源碼,如何推進(jìn)服務(wù)拆分工作?
無論是為了降低系統(tǒng)的復(fù)雜度,還是為了提升軟件的開發(fā)效率,在恰當(dāng)?shù)臅r(shí)機(jī)下均可對短視頻系統(tǒng)源碼中的服務(wù)進(jìn)行拆分。對于一個(gè)穩(wěn)定且不斷迭代的系統(tǒng)而言,實(shí)現(xiàn)正確的服務(wù)拆分是很有必要的,那么服務(wù)拆分工作該如何推進(jìn)呢?

一、調(diào)整代碼結(jié)構(gòu),分析模塊間依賴
由于短視頻系統(tǒng)源碼中可能存在單元測試代碼混雜在一起、一個(gè)聚合的代碼直接訪問另一個(gè)聚合代碼或數(shù)據(jù)庫等情況,所以在進(jìn)行服務(wù)拆分前,需要通過工具或業(yè)務(wù)上下文進(jìn)行代碼結(jié)構(gòu)的調(diào)整,并理清模塊間的依賴。
二、添加測試保護(hù)
在短視頻系統(tǒng)源碼進(jìn)行服務(wù)拆分前添加測試保護(hù)的目的就是為了保障后續(xù)工作的安全和正確性,通常添加測試保護(hù)需要從兩個(gè)方面的分析入手,第一個(gè)是確定是否缺少契約測試,第二個(gè)是是否缺少接口級別的測試。
三、消除業(yè)務(wù)代碼依賴
在短視頻系統(tǒng)源碼進(jìn)行服務(wù)拆分時(shí),常用的消除業(yè)務(wù)代碼依賴的方式有:
1、遷移實(shí)現(xiàn)位置錯誤的代碼到正確的package中;
2、將直接訪問另一個(gè)聚合數(shù)據(jù)庫表的操作改為訪問聚合的接口;
3、將不同領(lǐng)域中同時(shí)依賴一個(gè)工具類的服務(wù)獨(dú)立出現(xiàn),分別復(fù)制到兩個(gè)服務(wù)中;
4、利用聚合接口的調(diào)用來實(shí)現(xiàn)數(shù)據(jù)庫實(shí)體嵌套。

四、分離單元測試代碼
分離單元測試代碼可以從兩個(gè)方面進(jìn)行,其一是進(jìn)行函數(shù)方面的單元測試。其二是進(jìn)行使用內(nèi)存數(shù)據(jù)庫的接口級別的測試,相較而言,后者的復(fù)雜程度比較高,實(shí)現(xiàn)起來有一定難度。
五、跨聚合SQL查詢和信息冗余處理
在進(jìn)行服務(wù)拆分工作時(shí),需要通過一定的業(yè)務(wù)調(diào)整來適配服務(wù)拆分帶來的影響,從而保證服務(wù)拆分能帶給短視頻系統(tǒng)源碼正面影響。
六、服務(wù)拆分
從物理角度上進(jìn)行服務(wù)拆分需要保持現(xiàn)有服務(wù)的接口和代碼不變,然后新建服務(wù)并將上游系統(tǒng)的代碼拆分到新服務(wù)中,通過BFF和Toggle保證拆分過程的平穩(wěn)過渡。
七、拆分?jǐn)?shù)據(jù)庫
服務(wù)拆分完畢并沒有結(jié)束,還需要將數(shù)據(jù)庫拆分成兩個(gè),以此來提供對應(yīng)的數(shù)據(jù)服務(wù)。

在推薦短視頻系統(tǒng)源碼的服務(wù)拆分工作時(shí),有很多需要注意的細(xì)節(jié),只有做好這些細(xì)節(jié)才能保證服務(wù)拆分的效果。對于短視頻系統(tǒng)源碼而言,在合適的時(shí)機(jī)進(jìn)行服務(wù)拆分可以帶來很多不容忽視的好處。
聲明:本文由云豹科技原創(chuàng),轉(zhuǎn)載請注明作者名及原文鏈接,否則視為侵權(quán)