摘 要:本文提出了基于SP/MC的網(wǎng)絡模型。描述了一種基于該模型的分布式交易系統(tǒng)的設計和實現(xiàn)。介紹了該系統(tǒng)的總體設計架構(gòu)和分布式結(jié)構(gòu),然后描述了系統(tǒng)如何實現(xiàn)各種分布式特性及一些通用服務的實現(xiàn),如:異構(gòu)系統(tǒng)接入,負載均衡,延遲重連。最后通過多次實測數(shù)據(jù),展現(xiàn)了基于SP/MC網(wǎng)絡模型的性能和基于該模型的交易系統(tǒng)性能。
關(guān)鍵詞:單生產(chǎn)者-多消費者網(wǎng)絡模型;分布式交易系統(tǒng);網(wǎng)絡模型
中圖分類號:TP3
隨著NFC技術(shù)的普及和移動APP的興起,移動支付即將迎來高速增長期;通過技術(shù)改造和系統(tǒng)優(yōu)化,使得移動支付系統(tǒng)在可靠性,可用性和性能方面都有不同程度的提升,現(xiàn)已具備處理每秒萬筆交易的能力。高效的網(wǎng)絡通信框架和系統(tǒng)分布式化是解決海量客戶請求的兩個關(guān)鍵技術(shù)。
現(xiàn)有高性能網(wǎng)絡通信框架在事件分發(fā)和通知的實現(xiàn)主要使用Reactor模式實現(xiàn)[1],事件分發(fā)后對后續(xù)數(shù)據(jù)的處理沒提供相應的模型(一般由用戶自己實現(xiàn))。生產(chǎn)者消費者模型是最早用于經(jīng)濟領域的模型,之后被引入計算機領域中用于解決并發(fā)和同步問題,如:該模型在多核并行計算中的應用[2,3],該模型可以作為多核環(huán)境下的編程范型[4]。生產(chǎn)消費者模型(P/C)的本質(zhì)是通過引入緩沖區(qū)在一定時間內(nèi)緩解生產(chǎn)者和消費者之間的速率不匹配問題。在一定前提條件下,通過調(diào)整緩沖區(qū)大小,生產(chǎn)者和消費者的比率等方式都可提高P/C模型的效率。交易系統(tǒng)的后臺業(yè)務邏輯復雜,數(shù)據(jù)處理操作與接收數(shù)據(jù)請求相比耗費時間更多,符合P/C模型(單生產(chǎn)者多消費者模型,即SP/MC模型)的應用場景以解決系統(tǒng)中臨界資源的共享管理。
分布式系統(tǒng)的高可靠,高可用和橫向擴展能力是解決大量客戶請求的有效手段[5]。分布式系統(tǒng)多實例部署結(jié)構(gòu),提高了可用性和系統(tǒng)吞吐量。多實例之間互為熱備,也加強了系統(tǒng)的可靠性。分布式系統(tǒng)可簡單通過系統(tǒng)實例的簡單增加即可滿足前段請求劇增的需求。因此,交易系統(tǒng)的分布式化是大交易系統(tǒng)改造的趨勢。
本文提出了基于SP/MC的網(wǎng)絡模型。描述了一種基于該模型的分布式交易系統(tǒng)的設計和實現(xiàn)。介紹了該系統(tǒng)的總體設計架構(gòu)和分布式結(jié)構(gòu),然后描述了系統(tǒng)如何實現(xiàn)各種分布式特性及一些通用服務的實現(xiàn),如:異構(gòu)系統(tǒng)接入,負載均衡,延遲重連。最后通過多次實測數(shù)據(jù),展現(xiàn)了基于SP/MC網(wǎng)絡模型的性能和基于該模型的交易系統(tǒng)性能。
1 基于SP/MC的網(wǎng)絡模型
生產(chǎn)者和消費者模型(P/C Model)可以適用于多種應用,是一種解決并發(fā)問題的經(jīng)典范型[6-9]。根據(jù)P,C數(shù)目不同,P/C模型衍生出四種類型:單生產(chǎn)者-單消費者(SP/SC),單生產(chǎn)者-多消費者(SP/MC),多生產(chǎn)者-單消費者(MP/SC),多生產(chǎn)者-多消費者(MP/MC)。
1.1 SP/MC模型
生產(chǎn)者和消費者之間對數(shù)據(jù)的處理是獨立進行,但是其交換數(shù)據(jù)使用了共享資源,一般使用隊列作為緩存,兩者對隊列的存取是并發(fā)進行,因此,需要使用一些同步方式保護共享資源。當隊列中數(shù)據(jù)滿的時候,生產(chǎn)者無法再生產(chǎn),必須等待消費者,消費者取出隊列數(shù)據(jù)時發(fā)出事件通知生產(chǎn)者,才可繼續(xù)生產(chǎn)數(shù)據(jù);同理,當隊列為空時,消費者必須等待生產(chǎn)者,生產(chǎn)者生產(chǎn)數(shù)據(jù)并發(fā)出事件通知消費者,才可繼續(xù)處理數(shù)據(jù)。文獻[10]提出了常用P/C模型的描述,如圖1所示,P和C之間使用隊列(Queue Buffer)實現(xiàn),共享資源隊列使用Monitor方式同步。Monitor除提供了對buffer提供互斥鎖序列化讀寫操作,還提供一種事件通知機制。P寫入數(shù)據(jù)至Buffer前,先判斷Buffer是否滿,滿則等待;如果Buffer不滿則添加數(shù)據(jù),添加數(shù)據(jù)后使用semaphore通知C。C從Buffer中讀取數(shù)據(jù)前,先判斷Buffer是否為空,空則等待;如果Buffer不空則獲取數(shù)據(jù),獲取數(shù)據(jù)后通知P。
生產(chǎn)者的能力與消費者的能力比例影響了選擇的模型。如果P和C的能力相近時,使用SP/SC比較合適;當生產(chǎn)者能力較強時,使用SP/MC比較合適;當消費者能力較強時,宜選用MP/SC模型;MP/MC是如上三種模型的普適性抽象。通過實驗驗證了MP/MC模型隨著CPU的增加,效率有明顯提高。但是,P和C的數(shù)目也不是越多越好,P和C數(shù)量的增加導致系統(tǒng)資源的開銷和系統(tǒng)調(diào)度負載的增加,影響系統(tǒng)的整體效率。由于實際系統(tǒng)的業(yè)務和環(huán)境的差異,M的取值的預先確定是個難題,一般基于經(jīng)驗結(jié)合多次實驗結(jié)果綜合考慮后確認[11]。
1.2 基于SP/MC網(wǎng)絡模型
交易系統(tǒng)的網(wǎng)絡通信子系統(tǒng)可抽象為一個P/C模型。系統(tǒng)外部客戶端發(fā)起大量并發(fā)請求,系統(tǒng)接收請求后,將各種請求交付給不同的請求處理服務程序進行數(shù)據(jù)接收,數(shù)據(jù)解析,數(shù)據(jù)處理等操作,最后將處理結(jié)果寫入網(wǎng)卡返回給客戶端。網(wǎng)絡請求處理程序的處理過程可抽象為消費者,系統(tǒng)對網(wǎng)絡請求的接收過程即可抽象為生產(chǎn)者。
交易系統(tǒng)的外部客戶端數(shù)量和并發(fā)請求較多,在短時間內(nèi)可發(fā)起大量網(wǎng)絡請求。請求的后續(xù)處理有許多費時的操作。交易系統(tǒng)的請求的生成能力遠大于請求的處理能力,即生產(chǎn)者的生產(chǎn)能力遠大于消費者的處理能力,因此,選用SP/MC或MP/MC模型比較合適。
現(xiàn)代操作系統(tǒng)(Linux,Unix,Windows等)提供了非常高性能的Polling機制用于監(jiān)視網(wǎng)卡的IO請求,如IOCP,EPOLL,KQUEUE等[12]。使用Polling機制很容易同時接收許多網(wǎng)絡請求事件。如圖2所示,本系統(tǒng)在一個線程里使用EPOLL實現(xiàn)生產(chǎn)者(SP),用于獲取用戶的請求通知;使用多個線程實現(xiàn)多個消費者(MC),處理后續(xù)比較耗時操作,如:數(shù)據(jù)格式的解析,多次寫入和查詢數(shù)據(jù)庫操作,遞交給其他服務處理并等待返回等。
根據(jù)交易系統(tǒng)的實際需求和特性,使用基于SP/MC的網(wǎng)絡模型作為核心架構(gòu),利用操作系統(tǒng)的EPOLL技術(shù)實現(xiàn)生產(chǎn)者,僅需一個生產(chǎn)者即可實現(xiàn)上萬并發(fā)的請求,減少了操作系統(tǒng)的開銷,提高了整體系統(tǒng)的效率。使用多個消費者并行處理耗時的后續(xù)數(shù)據(jù)處理工作,充分利用了CPU的多核心并發(fā)技術(shù),提高了硬件資源利用率,減少硬件成本。
2 系統(tǒng)總體設計
在線交易系統(tǒng)的總體層次結(jié)構(gòu)一般由外部接口層,業(yè)務邏輯層,數(shù)據(jù)存儲層組成。根據(jù)實際業(yè)務的特點和行業(yè)實踐經(jīng)驗,各種系統(tǒng)對每層的功能和內(nèi)部結(jié)構(gòu)定義都不盡相同。
2.1 總體系統(tǒng)架構(gòu)
以技術(shù)實現(xiàn)角度分類,本系統(tǒng)分為WEB層和APP層,系統(tǒng)的總體結(jié)構(gòu)如圖3所示。
外部接口支持HTTP協(xié)議和Raw Socket兩種接入方式。HTTP協(xié)議的接入和Raw Socket的接入分別在Web層和APP層實現(xiàn)。Web層提供兩種接入方式:帶界面顯示的接入和API級別的接入,例如:移動和PC客戶端的接入需要顯示界面,而外部客戶系統(tǒng)的接入主要是使用基于HTTP/HTTPS的API接入。APP層也提供一種基于Raw Socket的接入方式,主要面向可信任的系統(tǒng)。
業(yè)務邏輯層和數(shù)據(jù)存儲層在APP層中實現(xiàn)。業(yè)務邏輯分為交易相關(guān)服務,交易無關(guān)服務和通用服務。交易相關(guān)服務是本系統(tǒng)的核心服務,為提高可靠性和安全性將其獨立實現(xiàn),包括消費相關(guān),公用繳費相關(guān)等交易。交易無關(guān)服務主要是為移動和PC客戶端服務的功能,如:用戶登錄管理,用戶相關(guān)信息查詢和推送,系統(tǒng)基本信息維護等。通用服務包括交易系統(tǒng)常用的各種服務:全局唯一序列號生成服務,常用信息查詢服務,加密服務,短信通知服務等。
數(shù)據(jù)存儲層以關(guān)系數(shù)據(jù)庫為主,實時存儲所有交易數(shù)據(jù),關(guān)系數(shù)據(jù)庫支持DB2和MYSQL數(shù)據(jù)庫,關(guān)鍵數(shù)據(jù)存儲于DB2數(shù)據(jù)庫中。對系統(tǒng)中非長期保存的數(shù)據(jù)使用Key-Value的形式存儲于內(nèi)存緩存服務中。對變化較少訪問量較大的數(shù)據(jù)使用兩級存儲,最準確的數(shù)據(jù)存儲于關(guān)系數(shù)據(jù)庫中。
2.2 分布式物理結(jié)構(gòu)
本系統(tǒng)是一個基于RPC的分布式集群,詳細的系統(tǒng)物理連接結(jié)構(gòu)如圖4所示。Web層和APP層都包括了多臺物理機,每臺物理機上部署了一套系統(tǒng)實例,同時提供服務。Web層與APP層之間使用基于自有協(xié)議的跨語言RPC方式通信。Web層與APP層的各個實例之間使用全連接的方式。
Web層的主要功能是界面顯示和HTTP協(xié)議適配。APP層則實現(xiàn)業(yè)務功能和存儲。APP層中每一個系統(tǒng)實例對外僅有一個Proxy服務,提供統(tǒng)一的調(diào)用接口。根據(jù)業(yè)務邏輯的特點和共性,提煉了一些邏輯簡單的通用服務(序列號生成服務,加密服務,短信服務等),提高了服務的重用性。內(nèi)部各個服務是獨立運行(進程),個別服務的崩潰不會影響其他服務的運行,增強了系統(tǒng)的可用性。各個服務之間使用統(tǒng)一的RPC機制通信,有利于快速增加新服務。
Web層和APP層的分布式集群部署,提高了系統(tǒng)的整體吞吐量和性能。使用分布式部署,各個系統(tǒng)實例之間互為熱備,提高了整個系統(tǒng)的可靠性和可用性。關(guān)鍵數(shù)據(jù)使用唯一的高性能數(shù)據(jù)庫存儲,保證了交易系統(tǒng)數(shù)據(jù)的高一致性。APP層內(nèi)部通過對服務流程提煉和業(yè)務關(guān)系抽象,形成了一些通用服務,簡化了業(yè)務實現(xiàn)流程,減少了新需求開發(fā)、測試和上線時間。
3 系統(tǒng)的分布式特點實現(xiàn)
基于SP/MC的網(wǎng)絡模型為單個服務的高性能提供了保證。整體系統(tǒng)的可靠性,可用性需求是通過系統(tǒng)的分布式化以滿足。交易系統(tǒng)對性能,可靠性,可用性和一致性都具有較高的要求,而分布式系統(tǒng)的結(jié)構(gòu)特點決定了其可較好的滿足高可靠性,高可用性和高性能的要求[5]。
3.1 異構(gòu)系統(tǒng)接入
本系統(tǒng)面向客戶群有個人,公司,機構(gòu)和內(nèi)部其他系統(tǒng)等。接入的客戶端系統(tǒng)運行于多種平臺,如Windows,Linux,Android,IOS,Unix等。本系統(tǒng)提供兩種通用的接入方式解決異構(gòu)系統(tǒng)的接入問題。個人和公司的接入主要使用基于HTTP/HTTPS協(xié)議接入。機構(gòu)和內(nèi)部系統(tǒng)使用自定義的協(xié)議——基于通用數(shù)據(jù)交換的RPC協(xié)議接入。個人和公司用戶交易量小,安全性驗證和權(quán)限審核較高。在WEB層使用成熟的異構(gòu)系統(tǒng)接入標準協(xié)議(HTTP/HTTPS協(xié)議)提供訪問即可滿足個人和公司用戶的交易要求。個人用戶直接使用HTTP/HTTPS協(xié)議(瀏覽器或者客戶端)訪問系統(tǒng)服務,公司用戶使用REST API接口,調(diào)用交易系統(tǒng)服務。
在性能和安全性方面,機構(gòu)和內(nèi)部系統(tǒng)的接入需求與個人和公司接入不同。前者對性能要求比其他接入方式高,交易系統(tǒng)對機構(gòu)和內(nèi)部系統(tǒng)的信任度相對較高,即安全性驗證相對較低。機構(gòu)和內(nèi)部系統(tǒng)繞過WEB層,直接通過APP層進行接入。APP層實現(xiàn)了跨平臺和跨語言的通信協(xié)議——基于通用數(shù)據(jù)交換的RPC協(xié)議。本系統(tǒng)開發(fā)了C/C++,JAVA,PYTHON,LUA語言的二進制工具庫提供給接入機構(gòu),既可以保證通信協(xié)議的安全性也方便機構(gòu)的接入。
簡要介紹該協(xié)議的格式和特點。
(1)協(xié)議是基于字符串,所以不用考慮不同平臺的字節(jié)序問題,同時也有利于調(diào)試和問題發(fā)現(xiàn)。
(2)協(xié)議分為報文頭,報文體兩部分組成,報文頭由固定魔數(shù),版本號和有效內(nèi)容長度組成。
(3)報文體是基于key-value的多個字段組成,每個字段由名稱,類型,字段組成。
(4)協(xié)議將數(shù)據(jù)分為三類,數(shù)字,字符串,數(shù)組,數(shù)組內(nèi)部可以包含其他任意類型。
該協(xié)議和RPC調(diào)用機制緊密結(jié)合?;谠搮f(xié)議的消息內(nèi)容可映射為key-value的哈希表結(jié)構(gòu)。RPC在調(diào)用前先將所有要素構(gòu)造為key-value的哈希表,調(diào)用結(jié)束后,將返回的字節(jié)流按照協(xié)議映射成為哈希表。支持一門新的語言只需實現(xiàn)協(xié)議到哈希表的互相映射即可。這種設計對不同語言的兼容性很友好,實現(xiàn)過程也很簡單。
3.2 負載均衡機制及延遲重連
外部客戶端對交易系統(tǒng)的訪問只有一個入口,但是,后臺有多套服務實例為客戶端處理交易。在外部入口處,系統(tǒng)配備一臺F5硬件負載均衡平衡高負載下每臺機器的壓力,減少系統(tǒng)宕機的可能。在系統(tǒng)內(nèi)部,每個服務自己也是負載均衡代理服務,使用負載均衡的方式與其他服務或者數(shù)據(jù)庫建立多個連接,采用輪詢方式均衡負載。
分布式系統(tǒng)的負載均衡策略一般有:輪詢機制,隨機機制,基于權(quán)重的機制?;跈?quán)重的機制比其他兩種方式考慮因素多,而且實現(xiàn)方式復雜。隨機機制平均負載效果沒有輪詢機制好。特別是在系統(tǒng)較高負載壓力下,由于隨機性容易導致某些機器長時間負載變大,如果此時一臺機器崩潰,其他機器的負載更高,進而引發(fā)連鎖反應最終系統(tǒng)完全崩潰,停止服務。輪詢方式的均衡平均型和實現(xiàn)簡單性比其他兩種方式優(yōu)秀,因此,系統(tǒng)內(nèi)部采用輪詢方式實現(xiàn)負載均衡。
分布式交易系統(tǒng)內(nèi)部服務眾多。為減小系統(tǒng)負載和避免不必要的通信浪費,服務之間未采用定時心跳保持連接,而使用TCP長連接保持連接。假設服務A接收請求必須訪問服務B才能完成任務。當服務A,B之間連接斷開,而服務A接收到新的請求時,服務A會發(fā)起定時從重連,一定次數(shù)后請求服務失敗,并寫入錯誤日志。當服務A沒有接收新請求時,服務A不會發(fā)起重連機制。通過延遲重連到請求發(fā)生時刻,可以避免系統(tǒng)內(nèi)部過多請求,減少系統(tǒng)資源浪費。
3.3 通用服務
生成全局唯一序列號是交易系統(tǒng)各種業(yè)務都需要的功能,甚至所有數(shù)據(jù)庫也都支持生成序列號(Sequence)功能。在分布式系統(tǒng)中,唯一的數(shù)據(jù)庫服務已經(jīng)是系統(tǒng)瓶頸,無法依賴數(shù)據(jù)庫滿足該功能需求。本系統(tǒng)中將該功能抽象獨立為服務,其他服務通過統(tǒng)一的RPC接口訪問。每個服務將通過序列號標識通過請求發(fā)送到序列號服務,序列號通過查找對應的序列號數(shù)字加1后保存數(shù)據(jù)至文件后返回。該序列號生成后一般與時間結(jié)合使用,可以方便的保證全局唯一。例如:自動增長序列號取十進制6位掩碼,結(jié)合全局唯一時間,即可滿足每秒一百萬筆以內(nèi)交易量的唯一性需求。通過為不同服務配置不同的編號,將序列號生成規(guī)則變?yōu)椋壕幪?,全局時間和自動增長序列號,序列號生成服務亦可支持分布式部署。
交易系統(tǒng)中常常需要使用參數(shù)查詢功能,例如:卡號規(guī)則,商戶信息,銀行信息,系統(tǒng)參數(shù)等,數(shù)據(jù)幾乎每筆交易都需要查一到多次,但是數(shù)據(jù)查詢雖然頻繁,修改間隔較長,一定時間內(nèi)是只讀數(shù)據(jù)。本系統(tǒng)獨立一個服務集中提供參數(shù)查詢,預先將數(shù)據(jù)庫中所有數(shù)據(jù)載入內(nèi)存,查詢時使用二分查找法,快速查找。同時,針對數(shù)據(jù)的可修改性,服務定時從數(shù)據(jù)庫載入所有數(shù)據(jù),并使用RCU(Read-copy Update)技術(shù),保證在載入所有數(shù)據(jù)過程中,不會影響服務向外部提供服務的能力。
本交易系統(tǒng)使用統(tǒng)一的數(shù)據(jù)交換協(xié)議定義了外圍異構(gòu)系統(tǒng)的接入方式;使用多級負載均衡技術(shù),硬件負載均衡解決對外大量客戶端的接入,內(nèi)部服務之間采用多連接負載平衡方式提高單個服務的吞吐量;延遲重連策略增強了服務的可靠性和可用性;抽象并優(yōu)化高性能通用服務提高整體系統(tǒng)性能。
4 性能測試分析
本節(jié)分別測試了基于SP/MC的網(wǎng)絡模型和分布式系統(tǒng)的整體性能。網(wǎng)絡模型的性能測試是通過對邏輯簡單的單獨服務性能而實現(xiàn),因此也測試了分布式系統(tǒng)中單點瓶頸的極限性能。另一方面,以外圍系統(tǒng)的角度發(fā)起常用交易,測試了整個系統(tǒng)的性能以及可擴展線性度。綜合兩個指標可確定交易系統(tǒng)的性能極限。
交易系統(tǒng)主要數(shù)據(jù)請求一般來自固定的長連接系統(tǒng)(如,機構(gòu)和內(nèi)部系統(tǒng))。性能測試時,客戶端設置為固定數(shù)目的長連接,每個客戶端連續(xù)發(fā)起交易請求。性能測試結(jié)果統(tǒng)計使用后臺緩存日志系統(tǒng)記錄交易數(shù)據(jù)后,再離線統(tǒng)計每秒平均交易量(TPS Transaction Per Second)。這樣既避免了多個客戶端記錄數(shù)據(jù)時引起的同步困難問題,也保證了計數(shù)的準確性。
網(wǎng)絡通信框架的性能測試與業(yè)務邏輯無關(guān),服務端選用業(yè)務邏輯較簡單的序列號生成服務。而測試整體系統(tǒng)性能時,客戶端發(fā)起最常用的交易類型(如:消費交易),后端按照正常業(yè)務邏輯處理。測試環(huán)境的操作系統(tǒng)為X86-64位SUSE 11,內(nèi)核為3.0.13,硬件配置為AMD 8-Core,2GHZ處理器,內(nèi)存16G,硬盤200G,文件系統(tǒng)EXT3。
如圖5a所示,測試了客戶端增加時對單獨服務的TPS的影響??蛻舳藬?shù)從1增加到10個時,隨著客戶端的增加服務的TPS也遞增,但是,繼續(xù)增加客戶端,系統(tǒng)性能有增加但是不明顯,因此客戶端的請求為20已經(jīng)可以滿足單個服務要求。設定客戶端為20,測試單個服務消費者數(shù)目的變化與服務TPS的關(guān)系,如圖5b所示,調(diào)整服務的消費者數(shù)值(M)由1增加到10服務TPS有明顯提升,但是,當M大于10后服務TPS不升反降。消費者數(shù)值的增加會導致系統(tǒng)對多個消費者線程的調(diào)度和同步的性能開銷增加,因此,最優(yōu)消費者數(shù)目M應為10。
整體系統(tǒng)性能測試結(jié)果中,如圖6所示,實線為系統(tǒng)實測的TPS,虛線為理論線性線條,對比可見系統(tǒng)可擴展性比較優(yōu)秀。三個系統(tǒng)實例時,數(shù)據(jù)庫成為了交易系統(tǒng)的瓶頸,此時數(shù)據(jù)庫服務器的CPU占用率已經(jīng)達到85%以上,硬盤IO繁忙度為90%以上。
5 結(jié)論
本文提出了基于SP/MC的網(wǎng)絡模型。描述了一種基于該模型的分布式交易系統(tǒng)的設計和實現(xiàn)。介紹了該系統(tǒng)的總體設計架構(gòu)和分布式結(jié)構(gòu),然后描述了系統(tǒng)如何實現(xiàn)各種分布式特性及一些通用服務的實現(xiàn),如:異構(gòu)系統(tǒng)接入,負載均衡,延遲重連。通過性能測試,基于SP/MC網(wǎng)絡模型和基于該模型開發(fā)的分布式交易系統(tǒng)具有優(yōu)秀的性能。交易系統(tǒng)對關(guān)鍵數(shù)據(jù)的準確性和一致性要求很高,關(guān)鍵數(shù)據(jù)的存儲必須選用已被業(yè)界證明的關(guān)系數(shù)據(jù)庫為唯一存儲,因此,導致了數(shù)據(jù)庫成為了交易系統(tǒng)的性能瓶頸。如果交易量上升到足夠大時,可通過數(shù)據(jù)庫擴容,數(shù)據(jù)分片,數(shù)據(jù)庫集群等技術(shù)提高整體系統(tǒng)性能。
參考文獻:
[1]James Coplien,Douglas Schmidt.Pattern languages of program design[M].ACM Press/Addison-Wesley Publishing,1995.
[2]Byrd,et al.Producer-consumer:Communicationin Distributed Shared Memory Multiprocessors[C].Proceedings of the IEEE,1999,Vol 87.Issue 3:456-466.
[3]Liqun Cheng,Carter J.B.,Donglai Dai.An Adaptive Cache Coherence Protocol Optimized for Producer-Consumer Sharing[C].International Conference on High Performance Computer Architecture,2007:328-339.
[4]ArnauPrat-Perez,David Dominguez-Sal,et al.Producer-Consumer: The Programming Model for Future Many-Core Processors[C].International Conference on Architecture of Computing System,2013,Vol 7767:110-121.
[5]Andrew Tanenbaum,Maarten Van Steen.Distributed Systems:Principles and Paradigms (2nd Edition)[M].Prentice Hall,2006,12.
[6]Stefano,et al.Synchronous Producer-consumer Transactions for Real-time Distributed Process Control[C].IEEE International Workshop on Factory Communication Systems,1997:27-36.
[7]Juiz,et al.Improved Performance Model of a Real-time Software Element:The Producer-consumer[C].Second International Workshop on Real-Time Computing Systems and Applications,1995:174-178.
[8]Zhang Y.,Zhang J.,Zhang,D.Implementing and Testing Producer-consumer Problem Using Aspect-oriented Programming[C].Fifth International Conference on Information Assurance and Security,2009,Vol 2:749-752.
[9]Shen C.Discrete-event Simulation on The Internet and The Web[J].Future Generation Computer Systems,2000,VOL.17.Issue2:187-196.
[10]Andrews G.R.,Schneider F.B..Concepts and Notations for Concurrent Programming[J].Computing Surveys.VOL 15.Issue 1.1983:3-43.
[11]Syed NasirMehmood,NazleeniHaron,VaqarAkhtar,YounusJaved.Implementation and Experimentation of Producer-Consumer Synchronization Problem[J].International Journal of Computer Applications,2011,VOL.14.Issue 3:32-37.
[12]W.Richard Stevens,Bill Fenner,Andrew M.Rudoff.Unix Network Programming,Volume 1[M].Addison-Wesley Professional,2003,11.
作者簡介:歐鵬(1971-),男,中國銀聯(lián)技術(shù)開發(fā)中心,高級主管,高工,碩士學位,主要領域:項目管理,質(zhì)量保證,CMMI,精益6 Sigma,系統(tǒng)架構(gòu);莊曉,曾進,王笑,程論,工程師。
作者單位:中國銀聯(lián)股份有限公司技術(shù)開發(fā)中心,上海 201201