自從上次發布了[DIOCP開源項目-利用隊列+0MQ+多進程邏輯處理,搭建穩定,高效,分布式的服務端]文章後,得到了很多朋友的支持和肯定。這加大了我的開發動力,經過幾個晚上的熬夜,終於在昨天晚上,DEMO基本成型,今天再加入了QWorkers來做邏輯處理進程,進一步使得邏輯處理進程更加方便和高效。今天特意寫篇blog來記錄我的心得與大家分享。
沿用上次的草圖
目前DEMO圖上的功能都已經實現。下面談談各部分的實現。
之前一直想設計一個這樣的東西,幾次下來都不如意,自從接觸到QWorkers後,發現原來應該這樣去設計。下面是我研究QWorkers畫的一流程圖。一個中午的吃飯的時間,基本上就可以理解80%,作者設計思路明確,使用簡單,而且隊列使用原子鎖,也比使用臨界高效不少。作者是QDAC開源項目的發起人。
[ZeroMQ]
ZeroMQ是一種基於消息隊列的多線程網絡庫,其對套接字類型、連接處理、幀、甚至路由的底層細節進行抽象,提供跨越多種傳輸協議的套接字。ZeroMQ是網絡通信中新的一層,介於應用層和傳輸層之間(按照TCP/IP劃分),其是一個可伸縮層,可並行運行,分散在分布式系統間。
推薦大家看兩遍blog, 我就不多寫了。
ZeroMQ研究與應用分析: ttp://www.cnblogs.com/rainbowzc/p/3357594.html
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框架做一些例子的整合。
歡迎大家繼續關注。