自从上次发布了[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框架作一些例子的整合。
欢迎你们继续关注。