什么是RabbitMQ,安装及基础练习

本文介绍了MQ的基本概念,包括流量削峰、应用解耦和异步处理等使用场景。接着深入探讨了RabbitMQ,讲解了AMQP核心概念如虚拟主机、交换机、队列和绑定器,以及RabbitMQ的安装过程和Hello World示例。此外,文章还讨论了RabbitMQ的七种工作模式和实际操作中的工作队列应用。
摘要由CSDN通过智能技术生成

1.MQ相关概念

1.1 什么是MQ

MQ(message queue),从字面意思上看,本质是个队列,FIFO 先入先出,只不过队列中存放的内容是

message 而已,还是一种跨进程的通信机制,用于上下游传递消息

1.2 为什么使用MQ

流量削峰

  • 处理能力有限,如果只能处理1W请求,1W的之内都能即时响应,现在由于活动2W用户请求不能放弃掉1W用户,所以消息可以到消息队列,只不过处理用户下单的时间比之前长

应用解耦

 

异步处理

  • 有些服务间调用是异步的

  • 例如 A 调用 B,B 需要花费很长时间执行,但是 A 需要知道 B 什么时候可以执行完,

  • 以前一般有两种方式:

    • A 过一段时间去调用 B 的查询 api 查询

    • 或者 A 提供一个 callback api,B 执行完之后调用 api 通知 A 服务

  • 这两种方式都不是很优雅,使用消息总线,可以很方便解决这个问题

    • A 调用 B 服务后,只需要监听 B 处理完成的消息

    • 当 B 处理完成后,会发送一条消息给 MQ,MQ 会将此消息转发给 A 服务

 

1.3 常用MQ优缺点

ActiveMQ

  • 优点:单机吞吐量万级,时效性 ms 级,可用性高,基于主从架构实现高可用性,消息可靠性较低的概率丢失数据

  • 缺点:官方社区现在对 ActiveMQ 5.x 维护越来越少,高吞吐量场景较少使用

Kafka

  • 优点

    • 性能卓越,单机写入 TPS 约在百万条/秒,最大的优点,就是吞吐量高

    • 时效性 ms 级可用性非常高

    • kafka 是分布式的,一个数据多个副本,少数机器宕机,不会丢失数据,不会导致不可用

    • 消费者采 用 Pull 方式获取消息, 消息有序, 通过控制能够保证所有消息被消费且仅被消费一次

    • 有优秀的第三方Kafka Web 管理界面 Kafka-Manager

    • 在日志领域比较成熟,被多家公司和多个开源项目使用

  • 缺点

    • 功能较为简单,主要支持简单的 MQ 功能,在大数据领域的实时计算以及日志采集被大规模使用

    • 社区更新较慢

RocketMQ

  • RocketMQ 出自阿里巴巴的开源产品,用 Java 语言实现,在设计时参考了 Kafka,并做出了自己的一 些改进。被阿里巴巴广泛应用在订单,交易,充值,流计算,消息推送,日志流式处理,binglog 分发等场景

  • 优点

    • 单机吞吐量十万级,可用性非常高

    • 分布式架构,消息可以做到 0 丢失

    • MQ 功能较为完善,还是分布式的,扩展性好

    • 支持 10 亿级别的消息堆积,不会因为堆积导致性能下降,源码是 java 我们可以自己阅读源码

  • 缺点

    • 支持的客户端语言不多,目前是 java 及 c++,其中 c++不成熟

    • 社区活跃度一般,没有在 MQ 核心中去实现 JMS 等接口,有些系统要迁移需要修改大量代码

RabbitMQ

  • 2007 年发布,是一个在 AMQP(高级消息队列协议)基础上完成的,可复用的企业消息系统,是

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在MATLAB中实现一个简单的比例-积分-微分(PID)控制器可以通过以下步骤进行: 1. 定义系统模型:根据你要控制的系统,定义系统的传递函数或状态空间模型。 2. 设计PID控制器:使用PID控制器的比例增益(Kp)、积分时间(Ti)和微分时间(Td)参数进行设计。可以根据系统响应的要求和调整需求来选择这些参数。 3. 实现PID控制器:使用MATLAB的控制系统工具箱或自己编写代码来实现PID控制器。可以使用PID函数或者用MATLAB中的反馈函数结合比例、积分和微分控制器来构建一个闭环控制系统。 以下是一个简单的代码示例,演示如何在MATLAB中实现一个PID控制器: ```matlab % 定义系统传递函数 G = tf([1], [1 2 1]); % 设计PID控制器参数 Kp = 1; Ti = 2; Td = 0.5; % 创建PID控制器对象 C = pid(Kp, Ti, Td); % 创建闭环系统 sys_cl = feedback(C*G, 1); % 绘制闭环系统的阶跃响应 t = 0:0.01:10; step(sys_cl, t); ``` 这个例子中,我们首先定义了一个二阶传递函数G,然后设定了PID控制器的参数。接下来,我们使用pid函数创建了一个PID控制器对象C,并通过feedback函数将系统G和控制器C连接在一起,形成一个闭环控制系统sys_cl。最后,我们绘制了闭环系统的阶跃响应。 请注意,实际的控制器设计和实现可能会涉及到更复杂的系统模型和调整方法,这只是一个简单的示例。你可以根据具体的应用需求和系统特性进行调整和修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值