wordpress站点用户注册,wordpress关键词添加,如何把做的网站与域名连接,专业的企业管理软件为什么使用 MQ#xff1f; 流量削峰和缓冲 如果订单系统最多能处理一万次订单#xff0c;这个处理能力在足够应付正常时段的下单#xff0c;但是在高峰期#xff0c;可能会有两万次下单操作#xff0c;订单系统只能处理一万次下单操作#xff0c;剩下的一万次被阻塞。我们…为什么使用 MQ 流量削峰和缓冲 如果订单系统最多能处理一万次订单这个处理能力在足够应付正常时段的下单但是在高峰期可能会有两万次下单操作订单系统只能处理一万次下单操作剩下的一万次被阻塞。我们可以使用消息队列做缓冲取消这个限制把一秒内下的订单分散成一段时间来处理减少了系统的压力增强了用户的体验效果。 应用解耦 不同的应用程序可以通过消息队列的方式解耦生产者和消费者之间不需要直接相互通信而是通过共享的消息队列进行通信。应用解耦使系统更灵活。 异步处理 在秒杀任务中大量用户下单时将订单信息和库存信息保存在缓存中之后使用消息队列的更改数据库中的数据。
几种MQ的对比
RabbitMQActiveMQRocketMQKafka公司/社区RabbitApache阿里Apache开发语言ErlangJavaJavaScalaJava协议支持AMQPXMPPSMTPSTOMPOpenWire,STOMPREST,XMPP,AMQP自定义协议自定义协议可用性高一般高高单机吞吐量一般差高非常高消息延迟微秒级毫秒级毫秒级毫秒以内消息可靠性高一般高一般
追求可用性Kafka、 RocketMQ 、RabbitMQ
追求可靠性RabbitMQ、RocketMQ
追求吞吐能力RocketMQ、Kafka
追求消息低延迟RabbitMQ、Kafka
RabbitMQ
四个概念: Publisher生产者也就是要发送消息的程序但是不再发送到队列中而是发给交换机Exchange交换机。一方面接收生产者发送的消息。另一方面知道如何处理消息例如递交给某个特别队列、递交给所有队列、或是将消息丢弃。到底如何操作取决于Exchange的类型。Exchange有以下3种类型 Fanout广播将消息交给所有绑定到交换机的队列Direct定向把消息交给符合指定routing key 的队列Topic通配符把消息交给符合routing pattern路由模式 的队列 Consumer消费者与以前一样订阅队列没有变化Queue消息队列也与以前一样接收消息、缓存消息。
Exchange交换机只负责转发消息不具备存储消息的能力因此如果没有任何队列与Exchange绑定或者没有符合路由规则的队列那么消息会丢失
工作原理 Broker 接收和分发消息的应用RabbitMQ Server 就是 Message BrokerVirtual host 出于多租户和安全因素设计的把 AMQP 的基本组件划分到一个虚拟的分组中类似 于网络中的 namespace 概念。当多个不同的用户使用同一个 RabbitMQ server 提供的服务时可以划分出 多个 vhost每个用户在自己的 vhost 创建 exchangequeue 等实现不同服务之间的隔离。Connection publisherconsumer 和 broker 之间的 TCP 连接。Channel 如果每一次访问 RabbitMQ 都建立一个 Connection在消息量大的时候建立 TCP Connection 的开销将是巨大的效率也较低。Channel 是在 connection 内部建立的逻辑连接如果应用程 序支持多线程通常每个 thread 创建单独的 channel 进行通讯AMQP method 包含了 channel id 帮助客 户端和 message broker 识别 channel所以 channel 之间是完全隔离的。Channel 作为轻量级的 Connection 极大减少了操作系统建立 TCP connection 的开销。