微软的 Drasi:一种轻量级的事件驱动编程方法

微软的开源数据变化处理平台有望提供一种全新的方式来构建和管理可产生持续事件流的云应用程序。

Microsoft Azure 孵化团队是微软超大规模云中比较有趣的组成部分之一。它介于传统软件开发团队和研究组织之间,致力于构建大规模分布式系统问题的解决方案。

这些解决方案可能是Kubernetes的扩展,例如 KEDA(Kubernetes 事件驱动自动扩展)系统,或Dapr和Radius等开发工具。他们最新的公开版本是系统管理工具和新应用程序平台的混合体。

Drasi 是什么?

Azure 首席技术官 Mark Russinovich在最近的一篇博客文章中宣布,Drasi 是一种用于检测关键事件并立即做出响应的工具。如果出现硬件或软件故障,该响应可能是重新配置平台架构,也可能是在工业物联网系统中触发关键警报,例如,当传感器检测到化学过程中的问题时,超压运行甚至触发响应。

大多数 Microsoft Azure 孵化项目都是开源的,Drasi 也不例外。它已经提交给云原生计算基金会 (CNCF),拥有 Apache 2.0 许可证和GitHub 存储库。您可以在其文档站点上找到更多详细信息。

像这样的事件驱动架构是分布式系统中相对常见的设计模式。与其他分布式开发模型一样,它们也有自己的问题,尤其是在规模上。当您每分钟收到数十或数百个事件时,很容易检测并响应您要查找的消息。但是,当您的应用程序或服务在全球平台上增长到数十万甚至数百万条消息时,在较小系统上有效的方法很可能会在这种新负载下崩溃。

随着规模的扩大,事件驱动系统变得复杂。消息和事件以多种不同的形式传递,并存储在独立的孤岛中,这使得它们难以提取和处理,并且通常需要复杂的查询机制。同时,消息队列系统变得缓慢而拥塞,增加了延迟甚至让消息超时。当您需要快速响应事件时,这种脆弱的状态变得难以使用和管理。

这就是 Drasi 的作用所在。它提供了一种更好的方法来自动化检测和响应相关事件的过程,微软将这种方法描述为“智能反应的自动化”。它旨在成为一个轻量级工具,不需要复杂的集中式事件数据存储,而是利用分散化来在日志文件和更改源中查找靠近事件源的事件。

Drasi 如何处理变化?

尽管数据是分散的并以多种不同的格式存储,Drasi 仍允许您使用熟悉的开发技术来构建查询并设置触发器以响应这些查询结果的变化。此过程的核心是三个概念:来源、连续查询和反应。

Drasi 应用程序中的源是所有整理数据和观察变化的地方。这些可以是日志文件、数据库更新或通过发布和订阅工具(如 Azure Event Grid)传递的事件,甚至是 Azure Function 的输出。

连续查询以 Cypher 查询语言 (CQL) 编写,用于监控源数据的变化,充当由变化触发的开关。一旦触发查询,系统就会发送反应。

反应可以像警报一样简单,也可以是触发一组预配置流程的输入。这些流程取决于您使用 Drasi 的目的。如果它在工业物联网系统中,反应可能会对一组硬件控制起作用,以关闭失控的工业流程。在系统管理支持场景中,反应可能会启动到灾难恢复站点或数据库副本的故障转移过程。Drasi 反应可以根据您的需要简单或复杂。

将所有活动整合在一起

Drasi 事件驱动计算方法最有趣的地方可能在于它支持过去许多不同的事件管理工具。单个 Drasi 实例可以处理手动更新的数据和实时遥测数据。例如,Drasi 可能能够读取一组机床的维护日志以及来自同一设备的实时遥测数据。查询可以监控计划的维护窗口和指示可能存在问题的已知遥测数据(这本身可能是使用声音检测问题的机器学习应用程序引发的事件)。

Drasi 不是单独的警报,而是将所有这些不同的系统整合在一起的粘合剂。与许多 Azure 工具一样,它具有很强的可扩展性,能够从单个站点或跨全球组织提供结果。它附带一个命令行工具,可将其各种 API 包装成一种管理 Drasi 资源的方式。由于所有管理都是通过 API 进行的,因此您可以构建自己的管理工具。

Drasi 应用程序的核心是一组连续查询。这是一种与传统查询截然不同的数据处理方式。通过连续运行查询,Drasi 可以实时构建其底层数据源变化的映射,能够获取即时结果以及动态源,该动态源在概念上类似于 SQL Server 的更改源,无需复杂的 ETL 即可将数据传送到 Azure Synapse 分析。

使用 CQL 构建变更查询

使用多个源并尝试从中获取更改数据与使用图形数据库非常相似,因此 Drasi 使用Neo4J 的 Cypher 图形数据库查询语言 (CQL) 版本来构建其连续查询也就不足为奇了。如果您熟悉 SQL,CQL 支持许多类似的构造来构建其查询。您可以使用 MATCH 查找路径、WITH 和 WHERE 子句以及常见的数据类型和属性。由于您使用的是一组相对受限的数据源,因此构建查询所需的大部分内容都在这里。

目的是使用 CQL 查询来描述您在数据中寻找的更改。由于它支持在查询中构建逻辑,因此您可以构建一个查询,该查询既封装了您正在查看的数据,又封装了它与所有来源中其余数据的关系。由于 CQL 将所有来源视为一个互连图,因此无需编写复杂的连接来将来源整合在一起。它们都是同一 n 维事件空间的一部分,可以根据需要将其填充得丰富或稀疏。

微软已将自己的 Drasi 特定扩展添加到 CQL。其中包括一些有趣的功能,可让您以不同的方式查看数据 - 这在考虑连续查询时非常重要。其中一个功能是微软所谓的 Future 函数,它超越了现有的时间功能,为数据设置了未来边界。它们包括设置时间并检查特定布尔值在该点是否为真或在该点之前是否为真。

这些函数相对简单,但可以让您为事件添加新的边界。您可以构建一组查询表达式,这些表达式求值为布尔值,然后使用该结果根据系统随时间的变化触发未来事件。您可以将这些函数与时间函数一起使用,时间函数可以让您查看过去特定时间点的值。使用 Drasi,您现在可以查看关键数据随时间的变化情况,而无需编写复杂的代码,只需将其全部构建到 CQL 查询中的函数中即可。

微软提供了一组 PostgreSQL 数据集形式的示例数据来帮助您开始使用 CQL,但我们仍然缺少开发工具。Visual Studio Code 扩展将有助于构建和测试查询,同时降低出错风险。目前,最好使用来自各种事件源的示例数据和一组预期输出。使用列表和基于时间的操作需要一些时间来适应,特别是如果您打算使用 Future 函数。

向世界传递反应

Drasi 输出反应,这些反应基于连续查询的结果而起作用。反应可以从多个查询中获取数据,使您可以从相对简单的查询组合中提供复杂的行为。目前,反应类型数量有限,但它们应该可以覆盖大多数场景。一个关键选项是 Azure Event Grid,它为您提供了更多后续操作。其他人使用基于 Web 的 SignalR 协议或与 Microsoft 的 Dataverse 业务线数据平台合作。

最后一种反应类型 Debut提供了持续更新的持续查询结果表,让您可以探索查询如何针对数据源进行。这不是用于生产的工具;相反,它是一种帮助开发人员了解持续查询如何工作以及如何围绕其输出构建事件处理的方法。

变化的事物因多种原因而引人注目,而 Drasi 的设计初衷就是捕捉这些变化的细节并将其传递出来,以便这些信息可以指导行动。在某些情况下,Drasi 可能会帮助我们快速解决问题,对硬件或软件进行预防性维护。在其他情况下,它可能会提前警告我们入侵和其他安全漏洞。如何使用它取决于你。

处理变更数据的轻量级框架是您在它出现之前不知道需要的东西之一。这是一件好事,因为 Drasi 提供了一种看起来真正新颖和创新的方式来处理生成持续事件流的系统,以便您可以识别真正重要的事件。

如果您正在大规模构建云基础设施和应用程序,那么 Drasi 应该在您要研究的工具列表中 — — 特别是因为它跨越了应用程序开发、平台工程和系统管理之间的界限。

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

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

相关文章

普通java web项目集成spring-session

之前的老项目,希望使用spring-session管理会话,存储到redis。 项目环境:eclipse、jdk8、jetty嵌入式启动、非spring项目。 实现思路: 1.添加相关依赖jar。 2.配置redis连接。 3.配置启动spring。 4.配置过滤器,拦…

gaussdb 主备 8 数据库安全学习

1 用户及权限 1.1 默认权限机制-未开启三权分立 1.1.1 数据库系统管理员具有与对象所有者相同的权限。也就是说对象创建后,默认只有对象所有者或者系统管理员可以查询、修改和销毁对象,以及通过GRANT将对象的权限授予其他用户。 1.1.2 GaussDB支持以下的…

【C51】单片机与LED数码管的静态显示接口案例分析

目录 ---案例需求--- 1、电路设计 2、程序 3、元器件清单 4、程序仿真 LED数码管有静态显示和动态显示两种显示方式。静态显示是指无论有多少位LE数码管,其都同处于显示状态。数码管工作于静态显示方式时,各位的共阴极(或共阳极&#xf…

“网络协议入门:HTTP通信的四大组成部分“

White graces:个人主页 🙉专栏推荐:Java入门知识🙉 🐹今日诗词: 春水满四泽,夏云多奇峰🐹 ⛳️点赞 ☀️收藏⭐️关注💬卑微小博主🙏 ⛳️点赞 ☀️收藏⭐️关注💬卑微…

USART串口(发送和接收)

目录 一. USART串口协议 二. USART串口外设 三. 串口发送接收 四. 效果展示 一. USART串口协议 USART(Universal Synchronous/Asynchronous Receiver/Transmitter)通用同步/异步收发器。 通信的目的:将一个设备的数据传送到另一个设备,扩展硬件系统。…

端点物联网学习资源合集

端点物联网 学习资源合集 导航 1. 物联网实战--入门篇 文章链接 简介:物联网是一个包罗万象的行业和方向,知识碎片严重,本系列文章通过 边学边用 的思想,逐步建立学习者的信心和兴趣,从而进行更深入透彻的学习和探索…

kaptcha依赖maven无法拉取的问题

老依赖了,就是无法拉取,也不知道为什么,就是用maven一直拉去不成功,还以为是魔法的原因,试了好久发现不是,只好在百度寻求帮助了,好在寻找到了这位大佬的文章Maven - 解决无法安装 Kaptcha 依赖…

信息安全工程师(57)网络安全漏洞扫描技术与应用

一、网络安全漏洞扫描技术概述 网络安全漏洞扫描技术是一种可以自动检测计算机系统和网络设备中存在的漏洞和弱点的技术。它通过使用特定的方法和工具,模拟攻击者的攻击方式,从而检测存在的漏洞和弱点。这种技术可以帮助组织及时发现并修补漏洞&#xff…

衡石分析平台系统分析人员手册-可视化报表仪表盘

仪表盘​ 仪表盘是数据分析最终展现形式,是数据分析的终极展现。 应用由一个或多个仪表盘展示,多个仪表盘之间有业务关联。 仪表盘编辑​ 图表列表​ 打开仪表盘后,就会看到该仪表盘中所有的图表。 调整图表布局​ 将鼠标移动到图表上拖动…

到底是微服务,还是SOA?

引言:大概正式工作有5年了,换了三个大厂【也是真特么世道艰难,中国互联网人才饱和了】。基本上每个公司有的架构都不太相同,干过TOC和TOB的业务,但是大家用的架构都不太相同。有坚持ALL in one的SB,最后服务…

2024项目管理软件,不融入敏捷开发怎么行?

一、项目管理软件的重要性 在当今快节奏的商业环境中,项目管理软件的重要性愈发凸显。随着市场竞争的不断加剧,企业面临着越来越多的挑战,项目的复杂性和不确定性也在不断增加。在这样的背景下,项目管理软件成为了团队高效规划、…

大模型涌现判定

什么是大模型? 大模型:是“规模足够大,训练足够充分,出现了涌现”的深度学习系统; 大模型技术的革命性:延申了人的器官的功能,带来了生产效率量级提升,展现了AGI的可行路径&#x…

◇【论文_20151120_20160405v3】Dueling Network 决斗〔Google DeepMind〕

整理代码:Dueling_DQN__Pendulum_v1.ipynb https://arxiv.org/abs/1511.06581 Dueling Network Architectures for Deep Reinforcement Learning 文章目录 摘要1. 引言1.1. 相关工作 2. 背景2.1. Deep Q-networks 【DQN】2.2. Double Deep Q-networks 【DDQN】2.3…

Linux基础项目开发day05:量产工具——页面系统

文章目录 一、数据结构抽象page_manager.h 二、页面管理器page_manager.c 三、单元测试1、main.page.c2、page_test.c3、Makefile修改3.1、unittest中的Makefile3.2、page中的Makefile 四、上机实验 前言 前面实现了显示、输入、文字、UI系统,现在我们就来实现页面的…

HCIP--1实验DNS,VLAN,静态路由,浮动静态,动态路由协议,Telnet

学习目标: 静态路由,浮动静态 VLAN,vlan间路由TelnetACL NAT OSPF/RIP 学习内容: 实验拓扑实验需求实验需求分析实验配置内容 (每一个设备的每一步操作)实验结果验证 1.实验拓扑 2.实验需求 1,学校内部…

Qt键盘按下事件和定时器事件及事件的接收和忽略

定时器事件 //设置多少毫秒调用一次 1s1000timerId this->startTimer(1000);timerId2 this->startTimer(500);void MyWidget::timerEvent(QTimerEvent* t) {static int sec 0;//通过判断当前ID来实现不同定时器的调用时间if(t->timerId() this->timerId){//隔一…

IDEA中的快捷键大全--超详细

目录 一、通用类型 1.1 图示 1.2 表格化 二、编写速度提升 2.1 图示 2.1.1 表格化 2.2 图示 2.2.1 表格化: 三、类结构,查找和查看源码 3.1 图示 3.2 表格化 四、查找,替换和关闭 4.1图示 4.2 表格化 五、调整格式 5.1 图示 5.2 表格化 六、快捷键的自主定义…

【C】数组(array)

数组(array) 数组的概念 数组是一组相同类型元素的集合 数组中存放的是1个或者多个数据,但是数组元素个数不能为0数组中存放的多个数据,类型是相同的 数组分为一维数组和多维数组,多维数组一般比较多见的是二维数组 一维数组的创建和初始…

递归神经网络解释(RNN)

Recurrent Neural Network (RNN) 如今,不同的机器学习技术用于处理不同类型的数据。最难处理和预测的数据类型之一是顺序数据。顺序数据与其他类型的数据不同,因为虽然可以假设典型数据集的所有特征都是与顺序无关的,但不能假设顺序数据集是无关的。为了处理这种类型的数据…

Kibana可视化Dashboard如何基于字段是否包含某关键词进行过滤

kinana是一个功能强大、可对Elasticsearch数据进行可视化的开源工具。 我们在dashboard创建可视化时,有时需要将某个index里数据的某个字段根据是否包含某些特定关键词进行过滤,这个时候就可以用到lens里的filter功能很方便地进行操作。 如上图所示&…