应用场景
在单体应用里面需要用队列解决的问题,在分布式系统中大多都可以用消息队列来解决。
解决多个系统之间的通讯需求
异步处理任务
流量控制
服务器解耦
发布 / 订阅系统实现一个微服务级系统间的观察者模式
连接流计算任务和数据
用于将消息广播给大量接收者
问题和局限性
引入消息队列带来的延迟问题
增加了系统的复杂度
可能产生数据不一致的问题
刻意练习!不积跬步,无以至千里;不积小流,无以成江海
在单体应用里面需要用队列解决的问题,在分布式系统中大多都可以用消息队列来解决。
引入消息队列带来的延迟问题
增加了系统的复杂度
可能产生数据不一致的问题
1.安装openjdk 配置环境变量
2.下载kafka二进制包,创建kafka用户,修改配置文件和权限,创建systemd启动文件
https://github.com/yangliuan/ubuntu-development-start/blob/master/include/message-queue/kafka.sh
3.启动和使用
编译安装librdkafka repo
RdKafka extension requires » librdkafka >= 0.11.x (most Linux distributions have a package for this library)
https://github.com/yangliuan/ubuntu-development-start/blob/master/include/system-lib/librdkafka.sh
#仓库直接安装方式 apt install librdkafka-dev yum install librdkafka-devel
编译安装pecl RdKafka
composer包
https://github.com/swoole/phpkafka/ 原生PHP Kafka 客户端,支持 PHP-FPM、Swoole 环境使用
https://github.com/mateusjunges/laravel-kafka 为laravel框架的封装 基于rdkafka
https://github.com/chenpeng78/laravel-kafka 为laravel框架的封装 基于rdkafka
https://github.com/kwn/php-rdkafka-stubs IDE提示工具
参考: