本站小編為你精心準(zhǔn)備了設(shè)計(jì)通信進(jìn)程通道服務(wù)方法參考范文,愿這些范文能點(diǎn)燃您思維的火花,激發(fā)您的寫(xiě)作靈感。歡迎深入閱讀并收藏。
摘要:當(dāng)前金融機(jī)構(gòu)正在尋求使用區(qū)塊鏈技術(shù)重構(gòu)關(guān)鍵性應(yīng)用軟件。通常,設(shè)計(jì)者引用通信順序進(jìn)程(CSP)庫(kù)去構(gòu)建這些軟件,便可方便套用CSP模型去驗(yàn)證軟件在并發(fā)通信過(guò)程中的安全性。然而,在現(xiàn)有的CSP庫(kù)中,通道以面向?qū)ο蠓绞奖怀橄蟆⒃O(shè)計(jì)和實(shí)現(xiàn),在名稱解析、序列化和反序列化方面存在單點(diǎn)故障和額外開(kāi)銷,設(shè)計(jì)者難以使用他們來(lái)構(gòu)建大規(guī)模網(wǎng)絡(luò)分布式應(yīng)用。利用Kademlia網(wǎng)絡(luò)實(shí)現(xiàn)的路由算法,對(duì)CSP模型中提出的通道進(jìn)行重新抽象,并把它設(shè)計(jì)為由一組遠(yuǎn)程調(diào)用過(guò)程構(gòu)成的網(wǎng)絡(luò)服務(wù),使其具有改良的可靠性和擴(kuò)展性,為設(shè)計(jì)者在區(qū)塊鏈網(wǎng)絡(luò)中開(kāi)發(fā)大規(guī)模、安全的分布式應(yīng)用提供了現(xiàn)實(shí)意義。
關(guān)鍵詞:Kademlia覆蓋網(wǎng)絡(luò);通信順序進(jìn)程(CSP)通道;進(jìn)程同步通信
使用進(jìn)程代數(shù)方法以通信順序進(jìn)程(CommunicatingSequentialProcesses,CSP)為模型,對(duì)網(wǎng)絡(luò)分布式軟件中的進(jìn)程進(jìn)行形式化驗(yàn)證是確認(rèn)其系統(tǒng)并發(fā)行為的有效理論途徑[1]。它適用于基于CSP原語(yǔ)和實(shí)用概念構(gòu)建的軟件。然而,在技術(shù)應(yīng)用層面,金融行業(yè)開(kāi)始將區(qū)塊鏈技術(shù)用來(lái)構(gòu)建大規(guī)模網(wǎng)絡(luò)分布式應(yīng)用[2]。面向金融科技行業(yè)而設(shè)計(jì)的領(lǐng)域特定編程語(yǔ)言尚不成熟[3],以面向?qū)ο蟮耐ㄓ镁幊陶Z(yǔ)言實(shí)現(xiàn)CSP原語(yǔ)、實(shí)用概念的做法對(duì)構(gòu)建大規(guī)模、可擴(kuò)展、其并發(fā)特性可驗(yàn)證的網(wǎng)絡(luò)分布式系統(tǒng)依然具有現(xiàn)實(shí)意義[4-8]。例如,Ian等[6]提出,通道被抽象為了具有緩沖或者非緩沖類型,具備數(shù)量不確定的讀取或者寫(xiě)入端的語(yǔ)言級(jí)別對(duì)象,進(jìn)程可以通過(guò)它發(fā)送和接收消息。但是,不支持分布在網(wǎng)絡(luò)主機(jī)上的進(jìn)程之間相互通信。文獻(xiàn)[5]以及對(duì)它的修訂文獻(xiàn)[9],采用基于名稱解析方法訪問(wèn)遠(yuǎn)程對(duì)象的機(jī)制,實(shí)現(xiàn)了適用于進(jìn)程在網(wǎng)絡(luò)主機(jī)之間進(jìn)行通信的通道[10]。進(jìn)程使用通道的基本過(guò)程:①A進(jìn)程在本地創(chuàng)建通道對(duì)象;②A進(jìn)程通道對(duì)象的名稱;③B進(jìn)程通過(guò)名稱服務(wù)解析獲取通道的讀取或者寫(xiě)入端對(duì)象;④A和B通過(guò)對(duì)象發(fā)送消息。在工程上,文獻(xiàn)[5,9]存在兩方面的問(wèn)題:①在可靠性方面,系統(tǒng)采用無(wú)冗余設(shè)計(jì)的遠(yuǎn)程對(duì)象訪問(wèn)服務(wù)。如果有關(guān)功能的實(shí)現(xiàn)發(fā)生故障,那么系統(tǒng)就無(wú)法管理通道實(shí)例;②在擴(kuò)展性方面,系統(tǒng)對(duì)語(yǔ)言級(jí)別對(duì)象進(jìn)行序列化和反序列化,在時(shí)間和空間上均存在額外開(kāi)銷[11]。如果進(jìn)程委托遠(yuǎn)程對(duì)象訪問(wèn)服務(wù)管理大量的通道實(shí)例,那么進(jìn)程頻繁創(chuàng)建、加入、獲取通道對(duì)象會(huì)延長(zhǎng)系統(tǒng)的響應(yīng)時(shí)間。
1設(shè)計(jì)方法
在Kademlia等[12]網(wǎng)絡(luò)上設(shè)計(jì)管理和實(shí)現(xiàn)通道的方法可以解決以上兩方面的問(wèn)題。該方法的核心是:①該對(duì)等網(wǎng)絡(luò)采用將鍵字與節(jié)點(diǎn)標(biāo)識(shí)的散列值進(jìn)行按位“抑或”后,比較相對(duì)距離的方法,每個(gè)節(jié)點(diǎn)都實(shí)現(xiàn)了相對(duì)可靠的查找和讀寫(xiě)塊表中哈希鍵值的功能,每個(gè)節(jié)點(diǎn)都可以為查找通道提供名稱解析功能,不存在單點(diǎn)故障。而且用戶可以查找至多3個(gè)鄰近的節(jié)點(diǎn),以副本形式保存哈希鍵值[13],該特性為實(shí)現(xiàn)冗余提供了可能。因此,構(gòu)建可靠且本質(zhì)上具備擴(kuò)展特性的通道服務(wù)是可能的。②在網(wǎng)絡(luò)主機(jī)之間對(duì)語(yǔ)言級(jí)別的通道對(duì)象序列化和反序列化產(chǎn)生額外開(kāi)銷之事實(shí),啟發(fā)了以簡(jiǎn)化的方式對(duì)通道進(jìn)行抽象和實(shí)現(xiàn)的構(gòu)想。即選擇使用遠(yuǎn)程過(guò)程調(diào)用實(shí)現(xiàn)進(jìn)程同步通信,可以降低對(duì)通道對(duì)象序列化和反序列化產(chǎn)生的額外開(kāi)銷,提高系統(tǒng)性能。
2設(shè)計(jì)通道
通道必須滿足以下原則:①進(jìn)程之間是匿名的;②進(jìn)程之間的通信是同步的;③進(jìn)程之間的通信是有序的。在本文闡述的方法中,通道被重新抽象為滿足以上原則的一組可被遠(yuǎn)程調(diào)用的過(guò)程,以及它們所操作的狀態(tài)數(shù)據(jù)。這些過(guò)程被設(shè)計(jì)為在對(duì)等網(wǎng)絡(luò)節(jié)點(diǎn)上運(yùn)行著的有狀態(tài)的網(wǎng)絡(luò)服務(wù)的一部分。因此,在設(shè)計(jì)中不存在對(duì)通道進(jìn)行具有創(chuàng)建、銷毀語(yǔ)義的操作,通道也不具有在面向?qū)ο蟮某橄笾械纳芷凇T谠O(shè)計(jì)中通道是包含實(shí)現(xiàn)以下功能的過(guò)程:①接收調(diào)用者關(guān)于讀取和寫(xiě)入操作的請(qǐng)求;②按照順序?qū)ψx取和寫(xiě)入操作進(jìn)行匹配;③向調(diào)用者返回有關(guān)讀取和寫(xiě)入操作之請(qǐng)求的應(yīng)答。為了使設(shè)計(jì)符合原則①和②的要求,采用分別對(duì)讀取和寫(xiě)入請(qǐng)求的數(shù)量進(jìn)行判定的方式控制同步通信。具體在上述過(guò)程②中,當(dāng)調(diào)用者發(fā)出有關(guān)讀取和寫(xiě)入請(qǐng)求的數(shù)量分別達(dá)到了為同步通信而設(shè)置的數(shù)量時(shí),在通道上才會(huì)發(fā)生同步通信,然后服務(wù)向每個(gè)調(diào)用者返回關(guān)于讀取或者寫(xiě)入請(qǐng)求的應(yīng)答。因此,服務(wù)對(duì)讀取和寫(xiě)入請(qǐng)求的處理,分別與讀取和寫(xiě)入請(qǐng)求的數(shù)量有關(guān),而與調(diào)用者無(wú)關(guān)。而且,進(jìn)程無(wú)需加入通道即可進(jìn)行讀取和寫(xiě)入操作。為了使設(shè)計(jì)符合原則③的要求,采用2種可遞增的序號(hào),確定有關(guān)調(diào)用時(shí)的交互操作和同步通信的順序。具體的,通道被設(shè)計(jì)保存以下?tīng)顟B(tài)信息:①調(diào)用者和會(huì)話序號(hào);②消息序號(hào)。以會(huì)話序號(hào)保證進(jìn)程在多次調(diào)用通道服務(wù)的交互過(guò)程中順序的一致性的做法,可以保證進(jìn)程間同步通信的過(guò)程滿足偏序關(guān)系,以消息序號(hào)控制讀取和寫(xiě)入操作同步的做法,就是保證進(jìn)程間同步通信的過(guò)程滿足全序關(guān)系。例如,為了滿足順序關(guān)系,服務(wù)只響應(yīng)同時(shí)滿足以下2個(gè)條件的讀取和寫(xiě)入請(qǐng)求,其他請(qǐng)求會(huì)被忽略:①在調(diào)用者有序發(fā)出的所有讀取或者寫(xiě)入請(qǐng)求中,按照調(diào)用者分組后存在最大的會(huì)話序號(hào)。②在調(diào)用者有序發(fā)出的所有讀取或者寫(xiě)入請(qǐng)求中,其消息序號(hào)與通道當(dāng)前的消息序號(hào)在數(shù)值上是相同的。在實(shí)現(xiàn)中通道是有狀態(tài)的。服務(wù)按照通道的名稱分別保存:①消息序號(hào);②調(diào)用者和會(huì)話序號(hào)。
3管理通道
在本文闡述的方法中,對(duì)通道的管理也被抽象為實(shí)現(xiàn)查找和配置功能的一組可被遠(yuǎn)程調(diào)用的過(guò)程。這些過(guò)程被設(shè)計(jì)為在對(duì)等網(wǎng)絡(luò)節(jié)點(diǎn)上運(yùn)行著的有狀態(tài)的網(wǎng)絡(luò)服務(wù)的另外一部分。在設(shè)計(jì)中對(duì)通道的管理包含以下功能:①根據(jù)通道的名稱定位服務(wù);②配置或者修改通道的參數(shù)和狀態(tài)。在網(wǎng)絡(luò)節(jié)點(diǎn)上的進(jìn)程調(diào)用遠(yuǎn)程過(guò)程讀取或者向通道寫(xiě)入消息之前,它通過(guò)遠(yuǎn)程調(diào)用一個(gè)實(shí)現(xiàn)查找功能的過(guò)程在網(wǎng)絡(luò)中尋找服務(wù)。在設(shè)計(jì)上該功能采用Kademlia網(wǎng)絡(luò)中實(shí)現(xiàn)的路由算法。因?yàn)樵撀酚伤惴ūM可能保證了在網(wǎng)絡(luò)擾動(dòng)的條件下的穩(wěn)定和可靠[14-15],所以在任意網(wǎng)絡(luò)節(jié)點(diǎn)上的進(jìn)程,均可以根據(jù)通道的名稱定位到相同的服務(wù)。同時(shí),因?yàn)槠洳捎霉K惴ǖ男再|(zhì),決定了結(jié)果在空間具有均勻分布的特點(diǎn),在本質(zhì)上存在負(fù)載均衡的效果。根據(jù)通道的名稱,在網(wǎng)絡(luò)節(jié)點(diǎn)上的進(jìn)程定位服務(wù)以后,通過(guò)遠(yuǎn)程調(diào)用一個(gè)實(shí)現(xiàn)配置功能的過(guò)程,設(shè)定通道的參數(shù)。通道服務(wù)按照通道的名稱保存參數(shù)信息,它被設(shè)計(jì)為包括:①緩沖隊(duì)列的大小;②讀取的數(shù)量;③寫(xiě)入的數(shù)量;④健康狀態(tài)。其中,①被用來(lái)設(shè)計(jì)具有緩沖特性的通道,②和③被用作同步通信的條件,④被用于標(biāo)志是否中毒[8]。在實(shí)現(xiàn)中,通道的參數(shù)和狀態(tài)信息,均按照通道的名稱分組后以鍵值的方式保存在鄰近的節(jié)點(diǎn)中。
4結(jié)語(yǔ)
在區(qū)塊鏈底層Kademlia覆蓋網(wǎng)絡(luò)中,工程人員可以根據(jù)CSP模型中通道的概念,采用新方法設(shè)計(jì)和實(shí)現(xiàn)通道服務(wù)。與文獻(xiàn)[5,9]相比,該方法利用在Kademlia網(wǎng)絡(luò)上實(shí)現(xiàn)的穩(wěn)定可靠的路由算法,解決了將通道抽象為語(yǔ)言級(jí)別對(duì)象時(shí),集中式名稱解析服務(wù)、對(duì)象訪問(wèn)機(jī)制而產(chǎn)生的可靠性和擴(kuò)展性問(wèn)題[13]。雖然在強(qiáng)烈的網(wǎng)絡(luò)擾動(dòng)中,通道服務(wù)的正確性可能會(huì)受到有限影響[14-16],但是金融行業(yè)采用的技術(shù)系統(tǒng),具有較強(qiáng)的穩(wěn)定性,可以滿足關(guān)鍵應(yīng)用的可靠性要求。系統(tǒng)開(kāi)發(fā)人員可以使用該方法設(shè)計(jì)實(shí)現(xiàn)的通道服務(wù),構(gòu)建需要通過(guò)CSP模型,驗(yàn)證并發(fā)特性的大規(guī)模網(wǎng)絡(luò)分布式應(yīng)用,測(cè)試人員可以使用人工或者自動(dòng)化方式對(duì)系統(tǒng)進(jìn)行初步的形式化分析。
作者:趙揚(yáng) 單位:中國(guó)證券登記結(jié)算有限責(zé)任公司上海分公司