自從上次發佈了[DIOCP開源項目-利用隊列+0MQ+多進程邏輯處理,搭建穩定,高效,分佈式的服務端]文章後,獲得了不少朋友的支持和確定。這加大了個人開發動力,通過幾個晚上的熬夜,終於在昨天晚上,DEMO基本成型,今天再加入了QWorkers來作邏輯處理進程,進一步使得邏輯處理進程更加方便和高效。今天特地寫篇blog來記錄個人心得與你們分享。html
沿用上次的草圖緩存
目前DEMO圖上的功能都已經實現。下面談談各部分的實現。網絡
以前一直想設計一個這樣的東西,幾回下來都不如意,自從接觸到QWorkers後,發現原來應該這樣去設計。下面是我研究QWorkers畫的一流程圖。一箇中午的吃飯的時間,基本上就能夠理解80%,做者設計思路明確,使用簡單,並且隊列使用原子鎖,也比使用臨界高效很多。做者是QDAC開源項目的發起人。多線程
主要做用,任務(能夠單次任務,定時任務(好比天天12:00執行), 延時任務, 手動觸發任務)的投遞和執行。適合作邏輯運算任務。具體使用能夠參考DEMO[DIOCP\Demos\MultiProcessor\processorWithQWorker]框架
ZeroMQ是一種基於消息隊列的多線程網絡庫,其對套接字類型、鏈接處理、幀、甚至路由的底層細節進行抽象,提供跨越多種傳輸協議的套接字。ZeroMQ是網絡通訊中新的一層,介於應用層和傳輸層之間(按照TCP/IP劃分),其是一個可伸縮層,可並行運行,分散在分佈式系統間。分佈式
推薦你們看兩遍blog, 我就很少寫了。spa
ZeroMQ研究與應用分析: ttp://www.cnblogs.com/rainbowzc/p/3357594.html.net
Delphi實戰: http://my.oschina.net/zeroflamy/blog/109457線程
程序使用XE5編譯,設計
服務端(SERVER):DIOCP是支持D7-XE6的,因此Server能夠用D7-XE6原理上是能夠編譯的,只是工程文件是XE5編譯的,須要本身稍做處理
客戶端(TCPClient): D7-XE6都應該沒有問題。使用的標誌控件(TcpClient),標準寫法.
邏輯處理進程(processor):超級簡單的處理進程。D7-XE6
邏輯處理進程(processorWithQWorker):因爲使用了QWorkers,只能支持D2007以上的版本.
該框架主要用於ERP的三層框架。邏輯處理進程能夠實現熱拔插。能夠啓動多個。自動接收任務。底層穩定,持續幾個月的服務端不再是什麼難事了….
後續會結合MyBean框架作一些例子的整合。
歡迎你們繼續關注。