zoukankan      html  css  js  c++  java
  • 浅谈消息队列的原理及优势

    什么是消息队列

    这样的场景你一定不陌生:小王到M记点餐之后,服务员给了他一个号牌,并让他在柜台桌子前方等待叫号取餐。每个人都按照自己付款拿到的号牌顺序排队等叫号。即使店里人再多,也不会显得没有秩序。

    在上述场景中,柜台其实就充当了一个消息队列(Message Queue)。小王等生产者把订餐的消息发送到柜台即消息队列里,又从其中取了餐即消费了消息,可以说这就是消息队列的一个完整走向——消息被发送到队列中,又成功被消费者消费。“消息队列”是在消息的传输过程中保存消息的容器,队列的主要目的是提供路由并保证消息的传递。如果发送消息时接收者不可用,消息队列会保留消息,直到可以成功地传递它。

    一般来说,消息队列是一种异步的服务间通信方式,是分布式系统中重要的组件,主要解决应用耦合,异步消息,流量削锋等问题,实现高性能,高可用,可伸缩和最终一致性架构。使用较多的消息队列有ActiveMQ、RocketMQ、RabbitMQ、Kafka等。

     

    分布式消息服务的原理

    在消息队列的基础上,稳定可靠的消息队列服务——分布式消息服务应运而生。分布式消息服务(Distributed Message Service,简称DMS)是一项基于高可用分布式集群技术的消息中间件服务,提供普通队列、有序队列、Kafka队列、ActiveMQ、RabbitMQ,兼容HTTP、TCP、AMQP协议,为分布式应用提供低延迟、高并发的异步通信机制。其生产和消费消息的示意图如下图所示。

    消息生产者即发送消息的一方,也叫消息发送者,发送消息到指定的消息队列中。生产者将消息M发送到队列中。消息M在队列中冗余分布,存在多个副本。

    消费消息的一方,也叫消息接收者,通过调用消息服务的消费接口从队列中读取消息。消费者从队列中消费消息,获取到消息M。在消费者消费消息M期间,消息M仍然停留在队列中,但消息M从被消费开始的30秒内不能被该消费组再次消费,若在这30秒内没有被消费者确认消费完成,则DMS认为消息M未消费成功,将可以被继续消费。

    消费者确认消息M消费完成,消息M将不能被该消费者所在消费组消费。消息M仍然保持在队列中,并且可以被其它消费组消费,消息在队列中的保留时间为至少72小时(除非队列被删除),72小时后将会被删除。

    分布式消息服务DMS的优势

     

    DMS

    自建开源消息队列

    安全性

    支持VPC虚拟网络等公有云安全服务

    自行管理设置安全配置,安全防护效果依赖于安全专员水平

    运维

    提供云审计、云监控等服务,方便运维

    需额外的运维人员,自行研发对应的运维监控系统

    稳定

    集群模式下实现了1个节点冗余镜像,确保数据的可靠性

    自行保障

    成本

    具备多种配置可选择:单机、集群;可按需或包周期进行购买;且公测期间完全免费;用户可按需选择具体配置。

    成本较高

    扩展性

    具备专业的扩容方案

    需自行设计并操作扩容方案

    性能

    后端使用华为高性能ECS主机,吞吐量高,性能强劲,集群稳定性也有很好保障

    数据可靠性与性能难以兼顾

    以上就是对分布式消息服务原理和优点的浅析,目前华为云DMS推出了免费体验活动,想要了解更多,欢迎前往分布式消息服务查看。

  • 相关阅读:
    四种访问权限修饰符的区别
    安全框架Shiro和Spring Security比较
    POJ 1873 The Fortified Forest 凸包 二进制枚举
    POJ 2007 Scrambled Polygon 极角排序
    POJ 1113 Wall 凸包
    hdu 2276 Kiki & Little Kiki 2 矩阵快速幂
    UVA 10689 Yet another Number Sequence 矩阵快速幂 水呀水
    UVa 10655 Contemplation! Algebra 矩阵快速幂
    直线与直线相交 直线与线段相交 线段与线段相交
    hdu 4686 Arc of Dream 自己推 矩阵快速幂
  • 原文地址:https://www.cnblogs.com/middleware/p/9178734.html
Copyright © 2011-2022 走看看