最近工作需要,收集了一下队列持久化的资料,现在拿出来分享一下。先说源起,在服务器或者是其它的过程往往需要用队列来做异步,但是如果发生断电或者宕机等异常情况,队列中的数据就会丢失。为此,就需要将队列的数据存储到磁盘,也就是持久化。

        现存的投入使用的持久化队列有公司也有个人做了一些开发,这些队列往往追求简单的功能,以求得到更好的稳定性。我收集到的有以下几种:

        持久化队列指的是进入队列的数据可以以某种机制固化到磁盘,以备程或系统宕机造成数据丢失。目前收集到的持久化队列组件或库有以下几种:

1.memcacheq

Memcacheq是由一个名为Steve chu(stvchu@gmail.com)的人独立开发的,兼容memcache协议(见参考5)。其使用安装简单,依赖于Berkerly DBlibevent库。目前新浪微博就是用memcacheq做持久化队列。

详细请参阅参考1

2.Rabbitmq

rabbitMQ是一个在AMQP基础上完整的,可复用的企业消息系统。他遵循Mozilla Public License开源协议。

主要为pythonJAVA提供队列服务,详细请参阅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