收藏 分享(赏)

RabbitMQ的实战应用.pptx

上传人:weiwoduzun 文档编号:5748193 上传时间:2019-03-15 格式:PPTX 页数:31 大小:719.18KB
下载 相关 举报
RabbitMQ的实战应用.pptx_第1页
第1页 / 共31页
RabbitMQ的实战应用.pptx_第2页
第2页 / 共31页
RabbitMQ的实战应用.pptx_第3页
第3页 / 共31页
RabbitMQ的实战应用.pptx_第4页
第4页 / 共31页
RabbitMQ的实战应用.pptx_第5页
第5页 / 共31页
点击查看更多>>
资源描述

1、RabbitMQ应用实践易车二手车 杨伟目录 Rabbitmq介绍 应用实践 运维 实践第一部分: Rabbitmq介绍 开 源 AMQP实现 , Erlang语言编写,支持多种客户端 分布式、高可用、持久化、可靠、安全 支持多协议: AMQP、 STOMP、 MQTT、 HTTP Rabbitmq主要概念对象:生产者、消费者、交换机、队列 业务解耦:解决多系统、异构系统间的数据交换,解耦生产者和消费者 适用场景:批量数据异步处理、并行任务串行化、高负载任务负载 均衡简要介绍AMQP工作原理 AMQP,即 Advanced Message Queuing Protocol,高级消息队列 协议几

2、 个核心概念 颗粒度: Broker:消息队列服务器 实体 vhost:虚拟主机,一个 broker里可以开设多个 vhost Exchange:消息交换 机 Queue:消息队列 载体 消息流转: Binding: 绑定,根据路由规则绑定 exchange和 queue Routing Key:路由 关键字 Connection:连接 channel:消息通道,每个连接可建立多个 channel 关联对象 producer:消息 生产者 consumer:消息 消费者交换机类型 Direct Exchange 完全匹配的 路由 Topic Exchange 模式匹配路由 Fanout Exc

3、hange 广播模式 Headers exchange 键值对匹配路由可靠性机制 Message acknowledgment:消息回执 应答 机制下: 收到 回执才删除 消息;未 收到回执而 连接 断开 , 消息会转给其他消费者 应答机制下: 忘记 回执会导致消息堆积,业务重复处理 采用非应答机制可以提升队列处理效率 Message durability:消息持久化 可以避免绝大部分的消息丢失,如服务重启 采用非持久化机制可以提升队列处理效率 Prefetch count: 每次发送给消费者消息 数量,默认 1,实践采用 2第二部分: 部分应用实践 复用 connection、复用 chan

4、nel 如果需要可靠业务,需要支持持久化和 ack机制 两 台虚拟机集群, QPS 5000次 /秒 如果希望高吞吐,可以采取非持久化、 noack、自动删除机制 两台虚拟机集群测试, QPS 20k次 /秒 稳定性保障: 生产者异常保障 消费者异常保障代码实现需注意细节 生产者面对 exchange,消费者面对 queue; 一个 queue只有一个消费者(可多个副本)进行处理; 命名规划 : exchange: ex_bizobj_usecase, 其中 : ex为前缀, bizobj为业务对象(如 Car、 Dealer), usecase为某个业务场景 ,示例 : ex_car_pro

5、motion; routekey:对应于 event(事件,某个业务动作),如:置顶( settop)、刷新 (refresh) queue:为 方便使用,建议对应于 event(采用 exchange + event),如: qu_bizobj_usecase_event,其中: ex为前缀,bizobj为业务对象(如 Car、 Dealer), usecase为某个业务场景 ,示例 : qu_car_promotion_settop; 串行或并行的业务方案: 并行方案:一个事件发生后 ,多个消费者相互间 没有依赖关系 ,可由 exchange分发消息到多个队列,由各队列的消费者并行进行处理

6、; 串行方案:一个事件发生后,多个消费间 有先后依赖关系 ,可以 有先执行的消费者处理事件,处理完成后再次发送消息(此时为另外一个 event)到 exchange,由后续的队列进行处理。规划 根据不同的业务颗粒度规划 virtual host规划:按平台或系统规划 Exchange规划:按系统规划 队列规划:按模块规划 MQ消费规划:按模块规划规划案例:新车源营销案例: 新车源营销 车源营销 置顶:置顶 冻结费用、 更新 索引 曝光判断 计费 精准:精准 更新索引 点击判断 计费 刷新:刷新 更新索引、计费 发车:发车 计费 、 自动 审核 更新 索引案例: ELK日志平台案例: ELK日志

7、平台案例: 通知服务案例: 通知服务第三部分:部分运维实践运维实践 安装 配置 : 服务器配置 集群配置 高 可用集群配置 监控 安装 Erlang环境、安装 RabbitMQ 启动 rabbitmq,并验证启动情况 :rabbitmq-server -detached &ps aux |grep rabbitmq 如果启用了防火墙的话,开启相关端口4369 (epmd),25672 (Erlang distribution)5672, 5671 (AMQP 0-9-1 without and with TLS)15672 (if management plugin is enabled) 启

8、用 web界面的监控插件: rabbitmq-plugins enable rabbitmq_management 登录账号 密码默认都是 guest 添加 用户rabbitmqctl add_user rabbitmq 123456 安装 两个配置文件: 环境 变量的配置文件 rabbitmq-env.conf 设置 rabbitmq的数据存储位置RABBITMQ_MNESIA_BASE=/data/rabbitmq/data 设置 rabbitmq的日志存储位置RABBITMQ_LOG_BASE=/data/rabbitmq/log 配置信息文件 rabbitmq.config 内存阀值,

9、 超过时启动 GCvm_memory_high_watermark, 0.6 内存阀值,超过阀 值时内存 数据写到磁盘vm_memory_high_watermark_paging_ratio, 0.5 脑裂问题的修复方式: ignore, autoheal, pause_minoritycluster_partition_handling, autoheal 自动加载 broker信息rabbitmq_management, load_definitions, “/etc/rabbitmq/rabbitmq_broker.json“配置: 服务配置 日志切分: 编写 shell文件: /op

10、t/scripts/rabbitmq_split_log.sh 定时 执行执行 crontab e,加入定时任务配置: 服务配置 修改 hostname:修改 /etc/sysconfig/network 设置 .erlang.cookie,基于 Erlang的集群来实现cd /var/lib/rabbitmq/ echo -n PXXXXEWPXODAMMALGXXXX .erlang.cookie 打开端口: 25672, 4369 加入集群:sudo rabbitmqctl join_cluster -ram rabbitrabbitmq199 检查集群状态:rabbitmqctl cl

11、uster_status 设置镜像队列策略 从集群中分离 在任一节点执行: rabbitmqctl forget_cluster_node rabbitrabbit1 在分离节点执行: rabbitmqctl reset配置 : 集群 配置Rabbitmq集群监控Rabbitmq集群监控配置: 高可用集群配置基于 Haproxy+keepalived+rabbitmq实现集群 Haproxy配置 Haproxy日志配置 安装 rsyslog 添加 haproxy的 log配置: vim /etc/rsyslog.d/haproxy.conf 编辑 /etc/sysconfig/rsyslog

12、创建日志文件并授权 touch haproxy.log 配置防火墙端口 : 9188 用于 haproxy的监控 界面 5670 用于 rabbimq的负载均衡 端口 配置 haproxy: /etc/haproxy/haproxy.cfg注意 :因为要使用 tcp的负载,屏蔽掉与 http相关的默认 配置 启动 haproxyhaproxy -f /etc/haproxy/haproxy.cfg 停止 haproxykillall haproxy配置 : 高 可用集群配置 Keepalived配置 VRRP:虚拟 路由冗余 协议( Virtual Router Redundancy Prot

13、ocol) 配置文件位置: /etc/keepalived/keepalived.conf 配置 keepalived# 因为当前环境中 VRRP组播有问题,改为使用 单播 发送 VRRP报文unicast_src_ip 192.168.200.200unicast_peer 192.168.200.199 启动服务: 顺序启动启动 haproxy: haproxy -f /etc/haproxy/haproxy.cfg启动 keeepalived:先启动 master节点,后启动 BACKUP节点/etc/init.d/keepalived start 停止 keeepalived服务/etc/init.d/keepalived stop 检查 keeepalived的运行日志,默认 keepalived的日志位于 /var/log/messagetail -n100 /var/log/message配置: 高可用集群配置配置: 高可用集群配置

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报