网站大量收购独家精品文档,联系QQ:2885784924

RabbitMQ的实战应用答案.pptx

  1. 1、本文档共31页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
RabbitMQ应用实践 易车二手车 杨伟 目录 Rabbitmq介绍 应用实践 运维实践 第一部分:Rabbitmq介绍 开源AMQP实现,Erlang语言编写,支持多种客户端 分布式、高可用、持久化、可靠、安全 支持多协议:AMQP、STOMP、MQTT、HTTP Rabbitmq主要概念对象:生产者、消费者、交换机、队列 业务解耦:解决多系统、异构系统间的数据交换,解耦生产者和消费者 适用场景:批量数据异步处理、并行任务串行化、高负载任务负载均衡 简要介绍 AMQP工作原理 AMQP,即Advanced Message Queuing Protocol,高级消息队列协议 几个核心概念 颗粒度: Broker:消息队列服务器实体 vhost:虚拟主机,一个broker里可以开设多个vhost Exchange:消息交换机 Queue:消息队列载体 消息流转: Binding:绑定,根据路由规则绑定exchange和queue Routing Key:路由关键字 Connection:连接 channel:消息通道,每个连接可建立多个channel 关联对象 producer:消息生产者 consumer:消息消费者 交换机类型 Direct?Exchange?– 完全匹配的路由 Topic?Exchange?– 模式匹配路由 Fanout?Exchange?– 广播模式 Headers?exchange –键值对匹配路由 可靠性机制 Message acknowledgment:消息回执 应答机制下:收到回执才删除消息;未收到回执而连接断开,消息会转给其他消费者 应答机制下:忘记回执会导致消息堆积,业务重复处理 采用非应答机制可以提升队列处理效率 Message durability:消息持久化 可以避免绝大部分的消息丢失,如服务重启 采用非持久化机制可以提升队列处理效率 Prefetch count:每次发送给消费者消息数量,默认1,实践采用2 第二部分:部分应用实践 复用connection、复用channel 如果需要可靠业务,需要支持持久化和ack机制 两台虚拟机集群,QPS 5000次/秒 如果希望高吞吐,可以采取非持久化、noack、自动删除机制 两台虚拟机集群测试,QPS 20k次/秒 稳定性保障: 生产者异常保障 消费者异常保障 代码实现需注意细节 生产者面对exchange,消费者面对queue; 一个queue只有一个消费者(可多个副本)进行处理; 命名规划: exchange:ex_{bizobj}_{usecase}, 其中:ex为前缀,{bizobj}为业务对象(如Car、Dealer),{usecase}为某个业务场景,示例:ex_car_promotion; routekey:对应于event(事件,某个业务动作),如:置顶(settop)、刷新(refresh) queue:为方便使用,建议对应于event(采用exchange + event),如:qu_{bizobj}_{usecase}_{event},其中:ex为前缀,{bizobj}为业务对象(如Car、Dealer),{usecase}为某个业务场景,示例:qu_car_promotion_settop; 串行或并行的业务方案: 并行方案:一个事件发生后,多个消费者相互间没有依赖关系,可由exchange分发消息到多个队列,由各队列的消费者并行进行处理; 串行方案:一个事件发生后,多个消费间有先后依赖关系,可以有先执行的消费者处理事件,处理完成后再次发送消息(此时为另外一个event)到exchange,由后续的队列进行处理。 规划 根据不同的业务颗粒度规划 virtual host规划:按平台或系统规划 Exchange规划:按系统规划 队列规划:按模块规划 MQ消费规划:按模块规划 规划 案例:新车源营销 案例:新车源营销 车源营销 置顶:置顶?冻结费用、更新索引?曝光判断?计费 精准:精准?更新索引?点击判断?计费 刷新:刷新?更新索引、计费 发车:发车?计费、自动审核?更新索引 案例:ELK日志平台 案例:ELK日志平台 案例:通知服务 案例:通知服务 第三部分:部分运维实践 运维实践 安装 配置: 服务器配置 集群配置 高可用集群配置 监控 安装Erlang环境、安装RabbitMQ 启动rabbitmq,并验证启动情况: rabbitmq-server --detached ps aux |grep rabbitmq 如果启用了防火墙的话,开启相关端口 4369 (epmd), 25672 (Erlang distribution) 5672, 5671 (AMQP 0-9-1 withou

文档评论(0)

1112111 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档