LeeEmmmm 2014-01-09
基于SEDA的异步框架设计与实现
三、异步框架技术选型
在这次实现的SEDA异步框架中,采用的基础架构原型如下:
采用了spring+quartz+fastjson+rabbitmq来实现。和传统SEDA架构区别比较大的地方在于:
1、采用分布式mq(使用了rabbitmq)而不是blockingqueue。如此既可以支持以后可能进行的分布式化扩展,也可以使得框架具有高可用性,在大数据处理的时候仍可具有较为客观的性能。同时,消息的传递过程中,采用了高性能的fastjson进行数据序列化和反序列化。使得数据在stage之间的传递速度更快。
2、除了分布式mq之外,还提供了本地动态线程池所需要的队列。避免了consumer由于长时间处理导致数据在队列中积压。
3、stage利用quartz来提供定时功能,使得stage中的work可以选择定时/实时进行数据处理。从而迎合更多不同类型的需求。(比如定时报警,定时分析监控数据)
1、spring
spring无需再赘述,使用其IOC、AOP等功能,并同时使用spring的其他组件比如spring-rabbit、spring-quartz等。保证spring各包兼容即可。
2、quartz
quartz 的介绍文档网上很多,quartz作为一款优秀的定时器框架可以和spring无缝结合,同时还具有java自带的定时器timer所不具备的定时启动的 功能。其类crontab风格的定时任务声明也更符合我们企业级应用过程中的书写风格。之前文章中介绍过使用quartz过程中需要关注的几个点,复述如 下: