为架构而生,UCloud简单队列服务UMQ | U刻
  • 为架构而生,UCloud简单队列服务UMQ

    栏目:产品动态

    消息队列是企业架构演进过程中不可或缺的部分,其天生的灵活性、可扩展性、消息处理能力可以方便地帮助企业服务解耦,处理服务峰值压力。构建与维护消息队列是很耗费时间与人力的事情。消息队列集群在使用和维护过程中,经常会遇到主节点性能瓶颈、容量规划、网络分区等问题,处理不当则可能导致消息丢失,进而影响服务。

    UCloud推出的分布式消息服务——UMQ,提供了快速部署、发布订阅、消息追踪、发布统计等完整的服务体系,帮助用户减少自建和维护消息队列的成本与复杂度,快速实现分布式架构中服务间的异步解耦,提高服务整体的可靠性与扩展性。

    分布式架构 高可用+灵活调度

    UMQ作为服务化的队列产品,提供可视化控制台,方便管理队列与监控队列信息;其次,UMQ提供轮询和广播的发送方式,发布/订阅与主动拉取两种消费方式,方便用户自定义消息发布与消费策略;此外,追溯消费历史、获取消息堆积等运营功能,利于用户分析并优化消费模式;UMQ按需计费,减少用户前期投入,降低成本。

    相对于自建RabbitMQ、ActiveMQ等队列,UMQ的架构设计为用户提供了更方便可靠、高可用的消息队列服务。如通过自建完成相同特性则需较高技术要求及大量的人力及硬件投入。

    umq1
    UMQ微服务架构

    ●高可用
    UMQ利用ULB实现内部系统负载均衡,避免了单Master模式的性能瓶颈。
    ●接入简单
    client使用HTTP和websocket访问UMQ
    ●自动容灾
    队列Master节点采用双星架构,主主双活保证服务,单节点异常自动切换。同时解决了传统队列集群网络分区的问题。
    ●灵活调度
    UMQ特有的Controller调度模块,将队列分配到不同的节点上解决队列容量的问题。

    简单消息服务 适用不同场景

    ●模块解耦

    紧耦合系统:服务A依赖服务B的稳定性,当服务B异常或者日常升级时,服务A的请求将被丢弃。

    松耦合系统:接入UMQ后,服务A的消息由UMQ缓存,当服务B异常时,服务A的消息不会丢失,待服务B恢复之后再做处理。

    例如,在告警系统中通常有监控与告警两个服务,紧耦合的情况下,告警服务升级或异常时,可能导致消息丢失,故障信息不能第一时间获取;接入UMQ解耦,当告警服务异常时,告警消息保存在UMQ中,待告警服务恢复后未处理消息再从队列中重新获取,保证消息可靠性。

    umq2

    ●消息缓冲
    无UMQ场景下:当服务请求量增加时,服务器压力与请求量为线性关系,且通常的做法是做服务的扩容,造成资源的浪费。

    接入UMQ场景后:服务请求量的大幅波动不会影响服务的负载能力,帮助服务平滑处理所有请求。

    例如,电商在促销期时用户流量激增,可能出现后台服务无法及时处理所有消息,导致交易超时等情况;接入UMQ使激增流量先缓冲到队列中,根据后台服务器的处理能力来完成请求,将服务负载保持在可控范围内。

    umq3

    ●异步通知

    无UMQ场景下,一次请求需要同步等待后端处理,得到响应后再执行其他任务,可能会出现延迟等待的情况;或者轮询后端任务结果,造成多余的请求。

    接入UMQ实现异步通知,用户不需要同步等待,也不需要额外的轮询开销,通过异步的队列通知,获取结果集。

    消息队列作为异步交互常用技术手段,可帮助提升分布式系统通信性能;使用UMQ可以快速实现研发人员在架构改进方面的需求,通过UMQ作为模块之间输入和输出的中间件,提升模块交互性能。

    umq4

    结语

    UMQ可以为各个领域的提供简单消息服务,在满足队列功能同时,UMQ还满足了可扩展性、高可用行与易用性。当你服务需要解耦合、需要峰值处理能力、需要处理消息的灵活性时,UMQ为你提供了方便、快捷的解决方案。

    UMQ作为UCloud自研的服务化产品,操作简便,服务可靠,我们提供了详细的说明文档,现已开放公测。产品详情