大型的 PHP应用 ,通常使用什么应用做 消息队列 的?
程序员文章站
2022-04-25 14:57:40
...
一直在用Redis 做消息队列,忽然想到,会不会有更好的呢?
* 性能,比如每秒有多少消息啊,如果你每秒有几万的消息量,那 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
回复内容:
我们用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
下一篇: 关于使用自定义函数对数组排序,该如何处理