为什么学习消息队列
生产者:负责生产并发送消息到Broker中,字符串,对象,json数据等等
Broker :消息处理中心,消息存储,确认,负责消息的
消费者:把数据拿过来,后面进行一些,处理相关业务
消息队列可以解决很多问题,比如耗时比较长的操作可以放到消息队列里去,比如,发短信,邮件,推送消息等。
用户很多的,同步发送会很慢,通过异步进行发送,缓解服务器压力
异步性,同步耗时的变成异步,提高执行效率
解耦,降低业务之间的关联性
还可以做成分布式
根据场景选择
kafka
目前业界用的非常多的解决消息队列的应用
高性能的,跨语言的,分布式的消息队列系统
支持数据持久化。支持高吞吐量
在官网有一个测试:一个普通的服务器可以达到10W以上每秒的处理能力,QPS。
完全支持分布式,天然支持分布式。
处理海量的日志平台,
rabbitMQ 比较优秀的开源消息队列系统,基于erlang开发。数据一致性,稳定性,可靠性都不错。
Redis 也可以支持消息队列的,push,pop。发布订阅功能也可以做这样一个场景。5.0redis消息队列,思想借鉴kafka非常有潜力。
官网 下载 选择二进制包 wget下载 tar xvf 解压 路径安装到usr/local 启动需要依赖JDK(java)
配置zookeeper.properties
配置server.properties 监听端口
先启动zookeeper
在启动kafka
是否启动完成
创建消费者
创建生产者,启动后生产者输入消息,消费者输出消息
php安装kafka扩展
github搜索librdkafka 克隆下载 系统中安装librdkafka(./configure make make install)
github搜索php-rdkafka 克隆下载 php扩展安装(phpize make && make install) 配置到php.ini中
重启lnmp php -m查看扩展 rdkafka
在model 中创建 kafka