v2.4.2014.0731 分离代理服务接口,利用扩展方法减轻代理服务类的复杂度
Stone
authored at
2014-07-31 17:18:42
X
v2.4.2014.0731 分离代理服务接口,利用扩展方法减轻代理服务类的复杂度
v2.3.2012.0419 增加看门狗功能,守护其它服务。
v2.1.2011.1019 项目类型由类库修改为控制台项目,不仅可供其它程序集引用,也可直接作为服务代理,承载各种实现IServer接口的服务
v2.0.2011.0720 可以通过设置任务的时间间隔小于0来关闭指定任务
可以通过配置文件指定服务名、显示名、描述等信息
可以通过XAgent.AttachServers设置附加代理服务,任何XAgent服务程序都可以附加代理实现了IServer接口的服务
v1.5.2010.0127 允许执行线程名
v1.4.2010.0114 生成批处理的方法,允许子类重载
v1.3.2009.1123 修改获取配置信息的代码,允许手工指定配置参数
v1.2.2009.1019 修改了取服务的方法,尽量避免异常
把StartWork等几个方法改为虚拟,允许重载
v1.1.2009.0731 启动时,生成批处理文件
v1.0.2009.0720 建立组件
历史背景:
XAgent源自于2008年,给华宝兴业基金做的短信中间件。当时华宝兴业的多个业务系统需要给数百万客户发送大量短信,由我设计短信中间件平台解决以下问题(仅列出与XAgent相关部分):
1,速度!每次发送短信两百多万,使用原有短信平台需要两天以上。XAgent设计极为简单,只负责高效处理任务,不干涉业务细节。短信中间件需要在数百万待发短信中完成自动加签名、最大长度拆分、多网关路由(移动联通电信)、黑名单过滤、错误重发、发送优先级、短信有效期等多项内容,测试环境可达到每秒277条短信以上的速度,限速后仅需2小时即可发完两百多万条短信;
2,稳定性。原有短信平台经常Crash导致中断。XAgent提高自身进程优先级,采用管理线程和任务线程划分的方式,管理线程具有最高优先级,避免任务线程挂起导致整个中间件挂起,保证中间件的长时间工作。XAgent还具有CPU检测、内存占用检测、最大线程数检测和定时自动重启服务等功能,并能很好的保证当前处理中任务(如发送中短信)能处理完成。XAgent支持的项目具有不死之身,绝不会出现服务在运行,但是业务没有处理(也就是假死)的情况。
3,灵活。短信中间件两大任务:发送短信和接收短信,ThreadCount=2,XAgent直接隔离,两者互补干涉,不会因为其中一个故障而影响到另一个。
4,免维护。对于重要的平台,管理员要每天检查工作情况,观察服务的CPU、内存和线程等占用情况,如果状态不佳,需要手工重启服务。而XAgent支持自动重启功能,生产环境设定每半个月自动重启一起。
|