一直在用Redis 做消息队列,忽然想到,会不会有更好的呢?
回复内容:
我们用beanstalk,qps1000左右
如果是单纯做队列服务建议beanstalkd(小巧、性能好),如果考虑到高可用、海量可以用kafka。
不如你先指出现有方案有哪些方面不不够好。
感觉这个问题和 PHP 没啥关系?消息队列选型更多考虑业务的场景:
* 性能,比如每秒有多少消息啊,如果你每秒有几万的消息量,那 Beanstalk、RabbitMQ 之列的就不能拿来直接用了。
* 可靠性,消息是否允许丢失?是否需要持久化?
* 高可用,是否可以容忍宕机?
* 是否需要分布式
* 运维成本,你们公司的开发(运维)是否有能力维护好这个消息队列
* 客户端支持,这个才是语言层面的东西。比如 Kafka 是个很好的消息队列,但是他的 PHP 客户端写的不太好,自己重新写也比较难,那么在选型的是否就要慎重。
在权衡这些因素以后,才能决定如何选择。
有哪些消息队列: Message queue
性能对比:
http://bravenewgeek.com/dissecting-message-queues/
redis,rabbitmq
用redis,rabbitmq这两个
这个要看你的应用场景,一般来说用redis比较简单,但是redis不能实现消息没有正常处理,其他进程仍然能够处理这个消息的情况,也就是没有对消息有一个处理完成确认的过程。
如果要完整的消息队列,用过的有:gearman,rabbitmq, 都是不错的。
php-resque
gearman。如果要求跨网络不丢消息还可以选择kafka
workerman