rabbitmq导出队列_消息队列BCMQ在大云运维管理平台BCDeepWatch中的应用

88868129d6f9341230e1b198391e3aa1.png

友情提示:全文约2600字,预计阅读时间12分钟

摘要

消息队列作为重要的中间件,广泛用于分布式系统中各子系统间的异步解耦;本文主要介绍了大云消息队列中间件BC-MQ在BC-DeepWatch中的应用案例。

一、消息队列应用场景简介

消息队列是分布式系统中非常重要的一个组件,我们可以把它看成是一个用于保存消息的容器,发送方将消息发送至消息队列,消费方按需消费消息。

5d6b64cbf3e7cad01d0eec855ac28804.png

图1-1 消息模型示意图

其主要的应用场景包括:

系统解耦

业务流程的高耦合易产生子系统故障影响整个系统的问题,通过引入消息队列作为消息的中转,实现对业务系统的拆分,提升系统可用性及可扩展能力;

异步通信

多个子系统间同步处理易导致用户请求响应慢的问题,引入消息队列作为子系统间异步通信的工具,可实现削峰填谷,抗住流量的高峰值;

数据同步

消息队列可用于各个子系统间数据的同步,如子系统A作为生产者,将数据发送至消息队列,子系统B作为消费者,通过消费消息完成A到B的数据同步;

广播

对于某些消息的一对多通知场景下,可通过引入消息队列,上游将每次需要广播的消息发送至消息队列,下游子系统通过订阅的方式接收消息,上游不再关心具体是谁订阅,将会极大地减少开发和联调的工作量;

设备接入

针对物联网等场景下多设备接入的问题,可引入轻量级的MQTT消息队列实现海量设备的接入、连接管理和数据发布订阅;并且可选多种传输质量规格,解决了以下痛点场景:

· 设备连接数较大,服务端需要从海量客户端(设备)中采集数据,或者下发指令到众多设备;

· 客户端CPU、内存比较小或带宽较窄等;

· 要求消息能主动推送至客户端,实时性较好。

为了帮助大家更好地理解消息队列中间件在实际业务系统中的应用,以下将对BC-MQ在BC-DeepWatch中应用案例进行介绍。

二、BC-MQ在BC-DeepWatch大云运维管理平台中的应用

1、BC-DeepWatch简介

BC-DeepWatch是一款监控、性能、日志管理、资源管理、自动化运维、统一纳管为核心的多维度统一运维管理平台。涉足于多个领域,为政务云、金融云、公有云、混合云等不同形态的云服务提供规模化、定制化的运维解决方案,满足行业内多种云服务的运维场景需求,作为运维管理平台,为管理者随时掌控系统运行的全方位信息提供了有力支持。

2、BC-MQ在BC-DeepWatch中的应用

1.系统解耦

系统中各模块间没有直接的调用关系,那么新接入的模块对原本系统的影响将会较小;以大云运维管理平台(BC-DeepWatch)为例,由于承接了众多上云产品的监控告警、日志对接工作,因此平台面临着大量新增模块的问题。

bf97a5ab83928fea538d25f83acbc591.png

图2-1 云监控产品对接示意图

若各产品和平台间采用上图中直接调用的方法,那么每当有新增产品,就需要修改对应的调用接口,带来重复工作量;同时新模块的引入通常会降低系统的可用性。

在BC-DeepWatch中引入消息队列BC-MQ,接入云监控的各产品按照一定的上报格式将产品的配置数据、性能数据和告警数据推送至消息队列中,BC-DeepWatch再从消息队列中消费具体数据,进行下一步的处理。由于消息队列集群本身可以承接海量消息的积压,所以平台可以按照一定的采集频率从消息队列中消费数据,而与下游各产品无关,从而实现了平台与各产品间的解耦,同时也可以避免下游子系统故障对核心业务系统的影响,提升了代码可维护性和扩展性。

5ecdbc4a1b12ba1ac72b962180cd0c16.png

图2-2 BC-MQ在系统解耦中的应用

由以上的例子我们可以看到,引入消息队列具有如下优势:

· 平台可异步处理下游云服务上报的数据;

· 各个上云产品只负责将上报的数据写入消息队列,无需关心运维平台如何获取及使用性能数据;

· 有新的上云产品接入监控服务时,与现有产品无关;即使某一产品出现问题或请求超时,也不会影响到整个系统;

· 高并发时运维平台可根据自己能够处理的请求数从消息队列中拿取数据,利用消息队列消息堆积能力,起到削峰填谷、及时限流的作用;

2.数据同步

运维平台中另一个应用到BC-MQ的场景为两个CMDB集群之间数据的同步,一个集群作为消息的生产者,将待同步的数据发送至BC-MQ,另一个CMDB集群作为消费者,从队列中消费数据并写入集群中,从而实现数据的同步。

81cc653a3e5365ba2204e225010dc25f.png

图2-3 BC-MQ在数据同步中的应用

三、引入消息队列可能带来的问题及BC-MQ的应对

以上我们通过两个例子展示了消息队列中间件的引入带来了一系列优势,那么有的同学不禁要问,引入一个组件会带来哪些风险和问题呢?以下我们将对消息队列的弊端和BC-MQ的应对进行说明:

1.系统的可用性降低

新组件的引入必然会带来系统可用性的影响,为了避免消息队列服务异常对整个系统带来影响,BC-MQ集群采用了Master-Slave的部署方式及Dledger(多副本模式),保障整个集群的各个组件无单点故障,以确保整个服务的可用性。

2.数据一致性问题

引入消息队列后,本身由A到B的业务流程中间增加了消息队列,如何保障分布式子系统间的一致性便成了问题。对此,BC-MQ支持事务消息类型,对于强一致性需求的业务系统,可通过事务消息保障。

3.系统复杂性提升

有的同学可能会担心消息队列的引入可能会带来重复消费、消息顺序性等问题,针对重复消费,BC-MQ在消息消费完毕后,会返回一个CONSUME_SUCCESS的确认消息给消息队列,消息队列就知道该消息被消费了,就会将该消息从消息队列中删除;针对消息顺序性,可通过BC-MQ中顺序消息类型保障。

四、总结

消息队列BC-MQ是云管中台-中间件组自研的一款基于分布式集群技术的中间件产品,具有安全可靠、简单易用、高可用、低延迟等特点,可用于大型分布式系统各子系统间的消息存储于收发;目前提供RocketMQ和MQTT消息队列两款产品优势总结如下:

消息队列RocketMQ

在开源RocketMQ基础上进行优化,目前提供普通消息、事务消息、顺序消息等多种类型的消息服务,可解决异步通知、削峰填谷等场景下的特性需求。

高性能:支持亿级消息堆积;单节点吞吐量10Wtps+,满足用户消息收发的业务需求;

高可用:集群采用Master-Slave的部署方式,避免单点故障,保障服务的高可用;

简单易用:支持Java版本的SDK,通过修改少量代码即可接入服务;

消息查询/轨迹查询:可通过控制台查询消息/消息轨迹,方便用户快速定位问题;

死信队列:支持消息重试机制,当达到最大重试后消息进入死信队列;提供死信队列的查询、导出、重新发送等功能;

消息队列MQTT

针对移动互联网、物联网等场景设计的轻量级消息中间件产品;基于Pub/Sub(发布/订阅)消息模型,支持一对多的消息收发方式;可连接各类物联网设备,传输消耗低;

高性能:集群可支撑百万级设备的在线连接,百万级消息并发;可实现毫秒级消息推送;

功能全面:支持离线消息/遗言消息/保留消息类型,持久化/非持久化连接方式,QoS=0/1/2不同级别的传输质量;

安全可靠:通过对连接设备及消息发布订阅进行鉴权,保障用户数据安全;

消息队列是分布式系统中不可或缺的中间件产品,除了对现有的RocketMQ和MQTT消息队列的持续优化,团队也将在今年提供AMQP协议支持,采用计算、存储分离架构,兼容RabbitMQ客户端的同时解决开源RabbitMQ在吞吐性能、可用性方面的痛点,希望大家持续关注;最后也欢迎大家多多试用BC-MQ~

  -  END  -

往期精彩

1.【干货分享】如何量化用户体验?公有云产品用户体验度量体系搭建浅谈

2.【干货分享】UEFI启动流程介绍

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/437155.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【编译原理】如何编写BNF?

此篇文章承接上一篇:【编译原理】理解BNF 前言 理解了BNF,就能实现代码解析了吗?还有点早,因为理解了BNF,还要会写BNF。实际上,BNF实现有固定的模式,也有现成的工具,比如可以使用ya…

python 当前时间减一个月_python排序了解一下

排序是每个开发人员都需要掌握的技能。排序是对程序本身有一个全面的理解。不同的排序算法很好地展示了算法设计上如何强烈的影响程序的复杂度、运行速度和效率。今天的文章和谈谈大家都熟悉的各种排序使用 Python 如何实现,废话就不多说啦,开干&#xf…

【转】4.1触碰jQuery:AJAX异步详解

传送门:异步编程系列目录…… 示例源码:触碰jQuery:AJAX异步详解.rar AJAX 全称 Asynchronous JavaScript and XML(异步的 JavaScript 和 XML)。它并非一种新的技术,而是以下几种原有技术的结合体。 1) 使…

QStackedWidget实现自适应紧凑布局

前言 本文提出了一种使QStackedWidget尺寸根据内容自适应调整的解决方法。 问题提出 我们知道,QStackedWidget可以包含多个可切换的子窗口。多个子窗口的高度不一样时,此时将QStackedWidget放在一个垂直布局中,所有子窗口会保持和最高的子…

linux查看tcl版本_查看Linux内核版本的方法有几个?你也是这样操作吗?

请关注本头条号,每天坚持更新原创干货技术文章。如需学习视频,请在微信搜索公众号“智传网优”直接开始自助视频学习1. 前言内核是操作系统的核心组件。 它管理系统的资源,是计算机硬件和软件之间的桥梁。您可能因多种原因需要确切知道GNU / …

【转】4.2使用jQuery.form插件,实现完美的表单异步提交

传送门:异步编程系列目录…… 示例下载:使用jQuery.form插件,实现完美的表单异步提交.rar 抓住6月份的尾巴,今天的主题是 今天我想介绍的是一款jQuery的插件:Jquery.form.js 官网。 通过该插件,我们可以非常…

什么方式可以通过影子系统传播恶意代码_将恶意代码隐藏在图像中:揭秘恶意软件使用的隐写术...

概述本周,许多Facebook用户都会发现,一些用户发布图片上出现了原本应该隐藏的图像标签。由此可以证明,图像可以携带大量表面上不可见的数据。实际上,Facebook和Instagram所使用的图片元数据与恶意攻击者制作的特制图像相比显得非常…

无法嵌入互操作类型 请改用适用的接口_西门子COMOS软件开发定制学习7-嵌入谷歌浏览器内核...

首先需要声明的是,本篇并非COMOS实用案例,只是希望借此让大家了解,如何使用微软的WPF和C#语言开发COMOS插件。首先看下效果图功能说明:拖拽COMOS设备至定制的浏览器,自动根据设备的名称和其制造商参数值,搜…

【转】C#与C++的发展历程第一 - 由C#3.0起

C#5.0作为第五个C#的重要版本,将异步编程的易用度推向一个新的高峰。通过新增的async和await关键字,几乎可以使用同编写同步代码一样的方式来编写异步代码。 本文将重点介绍下新版C#的异步特性以及部分其他方面的改进。同时也将介绍WinRT程序一些异步编…

【转】5.2高性能IO模型浅析

服务器端编程经常需要构造高性能的IO模型,常见的IO模型有四种: (1)同步阻塞IO(Blocking IO):即传统的IO模型。 (2)同步非阻塞IO(Non-blocking IO&#xff0…

vba 修改文本文档 指定行_VBA程序报错,用调试三法宝,bug不存在的

如果把VBA比作一门刀法,那么经过前面内容的操练,大家已经掌握了很多实用的招式。如果我们在刀法招式的基础之上,再掌握更多的“磨刀”心法,那么我们的刀用起来才会又好又快。所以今天主要和大家分享——VBA“磨刀”心法之程序调试…

mqtt协议详解_IoT物联网设备上云技术方案详解

随着传感器和通信技术的不断发展,物联网行业方兴未艾,业务链路涉及数据采集,通信连接,数据存储,数据可视化,洞察,行动决策。但,在实施过程中,碎片化的设备端通信连接难题…

【转】基于WebSocketSharp 的IM 简单实现

websocket-sharp 是一个websocket的C#实现,支持.net 3.5及以上来开发服务端或者客户端。本文主要介绍用websocket-sharp来做服务端、JavaScript做客户端来实现一个简单的IM。 WebSocketBehavior WebSocketBehavior是核心对象,他包含了OnOpen,OnMessage…

【转】极限编程一览

极限编程(XP)起源始于1990年代。当时肯特布莱克(Kent Black)在戴姆勒克莱斯勒(DaimlerChrysler)处理项目时,试图寻找一种更好的软件开发方法。他的创立新方法后来被称为极限编程方法论&#xff…

mysql 关联更新_跳出初学MySQL知识的原理整理(一)

一、基础架构MySQL 可以分为 Server 层和存储引擎层两部分。Server 层包括连接器、查询缓存、分析器、优化器、执行器等,所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图等。而存储引擎层负责数据的存储和提取。支持 InnoDB、MyISAM等多…

【转】TcpListener和tcpclient使用

前段时间公司项目中遇着需要做文件的远程传输,场景是用户通过网页选择一些文件,然后提交请求到服务器,同时把请求标识传递给本机的TCP文件传输端;服务器收到请求后在服务器端创建任务生成保存文件的路径同时通知文件传输端开始传文…

sleep期间读取所有_ceph部分数据所有副本先后故障的抢救

半天河网易游戏高级运维工程师,主要负责云存储的运维;一个既希望跟业务聊又喜欢能够默默在后面忙活的普通运维人。背景故障现场故障恢复故障恢复分析第一种方式:物理磁盘对拷第二种方式:服务启动时跳过故障扇区来避免异常退出解决…

【转】有限状态机用法教程

如博文无法正常显示,请访问原文地址: https://blog.csdn.net/ChinarCSDN/article/details/82263126 有限状态机用法教程 文章目录 有限状态机用法教程 [toc]1Finite-state machine —— 有限状态机2Foreword —— 前言()3Example —— 示例4Moltimode —…

通用usb集线器驱动_多口充电、高速传输——ORICO晶锐系列7口集线器测评

随着笔电越来越薄,机身接口数量越来越少,U盘、存储卡、移动硬盘、鼠标、蓝牙适配器等明显感觉无处可插,因此USB集线器就成为笔电的最佳拍档。近期,ORICO(奥睿科)推出了一款晶锐系列7口集线器产品,它集成了7个USB3.0接口…

【转】状态机思路在程序设计中的应用

状态机思路在单片机程序设计中的应用 状态机的概念 状态机是软件编程中的一个重要概念。比这个概念更重要的是对它的灵活应用。在一个思路清晰而且高效的程序中,必然有状态机的身影浮现。 比如说一个按键命令解析程序,就可以被看做状态机:本…