最近工作需要,收集了一下队列持久化的资料,现在拿出来分享一下。先说源起,在服务器或者是其它的过程往往需要用队列来做异步,但是如果发生断电或者宕机等异常情况,队列中的数据就会丢失。为此,就需要将队列的数据存储到磁盘,也就是持久化。
现存的投入使用的持久化队列有公司也有个人做了一些开发,这些队列往往追求简单的功能,以求得到更好的稳定性。我收集到的有以下几种:
持久化队列指的是进入队列的数据可以以某种机制固化到磁盘,以备程或系统宕机造成数据丢失。目前收集到的持久化队列组件或库有以下几种:
1.memcacheq。
Memcacheq是由一个名为Steve chu(stvchu@gmail.com)的人独立开发的,兼容memcache协议(见参考5)。其使用安装简单,依赖于Berkerly DB和libevent库。目前新浪微博就是用memcacheq做持久化队列。
详细请参阅参考1。
2.Rabbitmq
rabbitMQ是一个在AMQP基础上完整的,可复用的企业消息系统。他遵循Mozilla Public License开源协议。
主要为python、JAVA提供队列服务,详细请参阅2。
当然也有其它语言的接口。详情参阅3。
3.Fqueue
FQueue是一个高性能、基于磁盘持久存储的队列消息系统。兼容memcached协议,能用memcached的语言都可以良好的与它通信。
请参阅4。
4.Beanstalkd。
有网文指出,如果说其它持久化队列是先锋,那么Beanstalkd就是后来者居上。
5.Kafka
6.Starling
7.Activemq
8.Heritrix
Heritrix本身是一个爬虫器,其中有持久化队列,有网友把队列单独拿出来,觉得很好用。
收集的资料还不完整详细,还请各位感兴趣的补全。
参考文献:
[1]. Memcacheq http://memcachedb.org/memcacheq/
[2]. RabbitMQ官方主页 http://www.rabbitmq.com/
[3]. RabbitMQ对多种语言的支持 http://www.rabbitmq.com/devtools.html
[4]. Fqueue http://linux.softpedia.com/get/Programming/Libraries/fqueue-77589.shtml
[5]. Memcached协议 http://code.google.com/p/memcached/wiki/NewStart