[導讀]關注星標公眾號,不錯過精彩內(nèi)容來源?|網(wǎng)絡我從事嵌入式軟件開發(fā)有6、7個年頭,bsp,驅(qū)動,應用軟件,androidhall,framework等都有涉獵。平時除了關注嵌入式行業(yè)的發(fā)展,也多少對Web,后臺服務端,分布式等方向的技術(shù)有一些關注。近期有萌生換個行業(yè)方向的想法,想做做...
關注 星標公眾號,不錯過精彩內(nèi)容
抽象通用組件,分離通用功能和業(yè)務邏輯功能:當把一個多線程模型修改為多進程模型的過程中,經(jīng)常會發(fā)現(xiàn)有些接口代碼重復的出現(xiàn)在多個進程模塊中,因為之前接口函數(shù)是在一個進程空間,大家都可以直接調(diào)用的,比如接口A被模塊a,b調(diào)用,模塊a,b分離為兩個獨立的進程后,接口A需要在a,b中分別實現(xiàn)了,無需解釋,重復代碼這個在軟件工程中是大忌,必須消除。做法也很簡單,將這些被多個模塊調(diào)用的接口分離處理做成lib,供其他模塊調(diào)用,當你完成這部分工作后,你發(fā)現(xiàn)了什么,是不是剝離的接口,可以作為整個項目的通用組件存在了,完美的情況下,lib下的代碼是通用基礎組件,各個模塊中是獨立的業(yè)務處理模塊。
首當其沖的問題就是:選擇多進程的通訊方式,多線程間的直接調(diào)用是不能用了,那么如何選擇多進程的通訊方式呢?
簡單的做法即基于方案一,把直接調(diào)用改為socket通信(定義好通信協(xié)議即可),但是熟悉socket開發(fā)的工程師都清楚,開始socket通信要先進行一些前期的工作(主要就是連接,將兩個模塊關聯(lián)起來),所以前面的例子會變成這個樣子,模塊a要和模塊b,c建立連接,如果加入f模塊,模塊a還要和f模塊建立連接。這樣情況在心里畫一張連接圖就會發(fā)現(xiàn)好像我們織了一張蜘蛛網(wǎng),節(jié)點間的關系錯綜復雜,而且和方案一一樣,我們添加一個和a關聯(lián)的模塊,就要修改模塊a的代碼,而且這種情況比多線程模型還有繁瑣復雜的多了。這種做法絕對是個噩夢。
查看下各大網(wǎng)站架構(gòu)師對本網(wǎng)站技術(shù)架構(gòu)變革分享的文章,首先提到的一般都是,基于業(yè)務將之前的一個應用服務器功能拆分,更加細化(比如電商對登錄,注冊,交易,商品,賣家等業(yè)務服務的拆分),然后將拆分出來的服務部署在多臺服務器上,來提供并發(fā)。這里是否有些耳熟,和前面講到的多線程到多進程的劃分是否有相似呢。
聲明:本文素材來源網(wǎng)絡,版權(quán)歸原作者所有。如涉及作品版權(quán)問題,請與我聯(lián)系刪除。
抽象通用組件,分離通用功能和業(yè)務邏輯功能:當把一個多線程模型修改為多進程模型的過程中,經(jīng)常會發(fā)現(xiàn)有些接口代碼重復的出現(xiàn)在多個進程模塊中,因為之前接口函數(shù)是在一個進程空間,大家都可以直接調(diào)用的,比如接口A被模塊a,b調(diào)用,模塊a,b分離為兩個獨立的進程后,接口A需要在a,b中分別實現(xiàn)了,無需解釋,重復代碼這個在軟件工程中是大忌,必須消除。做法也很簡單,將這些被多個模塊調(diào)用的接口分離處理做成lib,供其他模塊調(diào)用,當你完成這部分工作后,你發(fā)現(xiàn)了什么,是不是剝離的接口,可以作為整個項目的通用組件存在了,完美的情況下,lib下的代碼是通用基礎組件,各個模塊中是獨立的業(yè)務處理模塊。
首當其沖的問題就是:選擇多進程的通訊方式,多線程間的直接調(diào)用是不能用了,那么如何選擇多進程的通訊方式呢?
簡單的做法即基于方案一,把直接調(diào)用改為socket通信(定義好通信協(xié)議即可),但是熟悉socket開發(fā)的工程師都清楚,開始socket通信要先進行一些前期的工作(主要就是連接,將兩個模塊關聯(lián)起來),所以前面的例子會變成這個樣子,模塊a要和模塊b,c建立連接,如果加入f模塊,模塊a還要和f模塊建立連接。這樣情況在心里畫一張連接圖就會發(fā)現(xiàn)好像我們織了一張蜘蛛網(wǎng),節(jié)點間的關系錯綜復雜,而且和方案一一樣,我們添加一個和a關聯(lián)的模塊,就要修改模塊a的代碼,而且這種情況比多線程模型還有繁瑣復雜的多了。這種做法絕對是個噩夢。
查看下各大網(wǎng)站架構(gòu)師對本網(wǎng)站技術(shù)架構(gòu)變革分享的文章,首先提到的一般都是,基于業(yè)務將之前的一個應用服務器功能拆分,更加細化(比如電商對登錄,注冊,交易,商品,賣家等業(yè)務服務的拆分),然后將拆分出來的服務部署在多臺服務器上,來提供并發(fā)。這里是否有些耳熟,和前面講到的多線程到多進程的劃分是否有相似呢。
聲明:本文素材來源網(wǎng)絡,版權(quán)歸原作者所有。如涉及作品版權(quán)問題,請與我聯(lián)系刪除。





