基于开源Drasi 实时监控和自动响应系统
Drasi 是微软使用MIT协议开源的一个项目,已经提交到CNCF孵化,github:https://github.com/drasi-project/drasi-platform/ ,他提供了一个集成解决方案,可以用于监控变化并自动做出适当的响应,解决扩展事件驱动系统所面临的挑战。它提供了一个统一的框架,降低了复杂性并能确保及时响应,使开发人员无需手动构建源(Source):这些源可监控各种数据点,包括应用程序日志、数据库变化和系统指标。
Drasi 是一种全面的解决方案,提供内置功能来跟踪特定事件的系统日志和更改源、评估它们的相关性并自动启动适当的反应。 Drasi 包含以下三个核心的基本组件:
- 源(Source):这些源可监控各种数据点,包括应用程序日志、数据库变化和系统指标。源可以实时跟踪变化,捕获数据而无需将其复制到中央存储库或数据湖。
- 连续查询(Continuous Query):Drasi 不依赖传统的时间点查询,而是使用连续查询,在数据到达时对其进行评估。这些查询是使用 Cypher 查询语言编写的,整合了多个源的信息,无需人工干预即可不断地更新结果。
- 响应(Reaction):当变化符合连续查询中定义的标准时,Drasi 会自动触发响应,包括发送警报、更新系统或根据特定业务需求启动补救措施等任务。

Cypher 支持
连续查询是使用Cypher 查询语言的子集编写的。如果您是 Cypher 新手,Cypher 查询语言的原始创建者 Neo4J 有很多资源可以帮助您理解、学习和尝试 Cypher,包括:
它是一种被严重低估的查询语言,虽然大多数查询也可以转换为关系 SQL,使用 WITH 子句的 Cypher 线性构造更容易推理。
Cypher 的关键之一(至少在图形数据库的上下文中)是它有一种很好的方法将“JOIN”操作表示为图形遍历。
MATCH (p:Person)-[r]-(c:Company) RETURN p.Name, c.Name
其中 `r` 可以表示两个集合 `Person` 和 `Company` 之间的任何关系(又称为 `JOIN`),例如 `WORKS_AT`、`EMPLOYED_BY`、`CONTRACTOR_FOR` 等。
Drasi 不仅仅是在数据上运行图形查询,它还使用 Cypher 查询语言作为一种方便的方式来表达您想要观察的数据变化。
Dapr 支持
Drasi 的基础架构是Dapr 支撑的,在以下方面支持:
(1) 事件源与 Dapr 的集成
Drasi 支持多种数据源(如日志、数据库更新、Azure Event Grid 等)。而 Dapr 的 发布/订阅(Pub/Sub) 功能可用于在不同服务间传递事件消息。例如,Dapr 的 Pub/Sub 组件(如 Redis、Azure Service Bus)可作为 Drasi 的事件源之一,帮助 Drasi 捕获跨系统的实时事件流。
(2)响应动作触发 Dapr 服务
Drasi 的响应(Reaction)机制可触发自定义操作,例如调用外部 API 或启动修复流程。在此场景下,Dapr 的 服务调用(Service Invocation) 功能可用于安全、可靠地调用其他微服务,或在 Kubernetes 环境中通过 Sidecar 代理完成跨服务通信56。
(3)状态管理与查询优化
Dapr 的 状态管理(State Management) 组件支持持久化存储(如 Redis、MySQL),可能被 Drasi 用于缓存连续查询的中间结果或历史数据,从而提升查询效率56。
(4) 技术生态的互补性
Dapr 的跨语言支持:Dapr 提供多语言 SDK(如 .NET、Java、Go),而 Drasi 的查询语言 CQL 基于图数据库语法。两者结合时,Dapr 可帮助 Drasi 兼容更多异构系统,扩展其应用场景58。
Kubernetes 部署:Dapr 在 Kubernetes 中通过 Sidecar 注入运行,Drasi 同样支持云原生部署。两者可通过 Kubernetes 的注解(Annotations)协同配置,例如通过 Dapr 的服务发现机制优化 Drasi 的事件路由
参考文章:
使用 Drasi 检测数据变化并做出智能反应:https://opensource.microsoft.com/blog/2024/10/22/detect-and-react-intelligently-to-changes-in-data-with-drasi/
基于开源Drasi 实时监控和自动响应系统的更多相关文章
- 项目-基于视频压缩的实时监控系统--tiny6410
项目-基于视频压缩的实时监控系统--tiny6410 @国嵌linux学习笔记. 1. 构造服务端结构体 server struct server { int epfd; //保存epoll指针 st ...
- 基于开源软件构建高性能集群NAS系统,包括负载均衡(刘爱贵)
大数据时代的到来已经不可阻挡,面对数据的爆炸式增长,尤其是半结构化数据和非结构化数据,NoSQL存储系统和分布式文件系统成为了技术浪潮,得到了长足的发展.非结构化数据目前呈现更加快速的增长趋势,IDC ...
- 基于开源软件在Azure平台建立大规模系统的最佳实践
作者 王枫 发布于2014年5月28日 前言 Microsoft Azure 是微软公有云的唯一解决方案.借助这一平台,用户可以以多种方式部署和发布自己的应用. 这是一个开放的平台,除了对于Windo ...
- 搭建属于你的家庭网络实时监控–HTML5在嵌入式系统中的应用·高级篇
*本文已刊登在<无线电>2014年第6期 <搭建属于你的在线实时採集系统>中已经对HTML5平台有了初步的认识,并基于此向大家展示了怎样将採集到的数据上传至网络.实现实时观測. ...
- 基于视频压缩的实时监控系统-sprint1基于epoll架构的采集端程序设计
part1:产品功能 part2:epoll机制 select与epoll区别 1.select与epoll没有太大的区别.除了select有文件描述符限制(1024个),select每次调用都需 ...
- \阶段4-独挡一面\项目-基于视频压缩的实时监控系统\Sprint2-采集端图像采集子系统设计
1.在编写程序前有一个流程,思维导图: 初始化:包括初始化摄像头:注册事件到epoll 然后是开始启动采集:一旦开始采集我们的摄像头就会有数据了,它会触发事件处理函数:我们在这里的处理是保存这个图像: ...
- 阶段4-独挡一面\项目-基于视频压缩的实时监控系统\Sprint1-基于Epoll架构的采集端程序框架设计\第2课-基于Epoll的采集端程序框架设计
回顾之前的整个程序架构 把epoll机制应用到这个架构上去 下面主要去分析我们的系统中有没有需要等待的事件,先看看采集子系统 在采集子系统当中,摄像头有数据,摄像头采集到图像数据可以作为一个等待事件. ...
- 基于视频压缩的实时监控系统-sprint3采集端传输子系统设计
由于jpg本来就是编码压缩后的格式,所有无需重复编码 传输子系统步骤:(1)初始化:a.socket(初始化tcp连接):b.将事件添加到epoll中 (2)事件处理:接收到网络包.发送完网络包 st ...
- 基于视频压缩的实时监控系统-sprint2采集端图像采集子系统设计
(1).初始化:a.初始化摄像头:b.注册事件到epoll (2).开始采集--->触发事件处理系统 (3).保存图像(方便测试) a.初始化摄像头 //初始化摄像头 1.获取驱动信息 2.设置 ...
- 大众点评cat实时监控简介及部署
简介 背景 CAT(Central Application Tracking)是由吴其敏(前大众点评首席架构师,现携程架构负责人)主导设计基于Java开发打造的实时应用监控平台,为大众点评网提供了全面 ...
随机推荐
- vivo 企业云盘服务端实现简介
作者:来自 vivo 互联网存储团队- Cheng Zhi 本文将介绍企业云盘的基本功能以及服务端实现. 一.背景 vivo 企业云盘是一个企业级文件数据管理服务,解决办公数据的存储.共享.审计等文件 ...
- elementUI中的级联选择器,默认赋值不起作用
今天遇到再使用element的级联选择器功能的时候,是多选,默认赋值不起作用. 后来查到是因为少了multiple属性,但是multiple属性要放在props绑定的对象中,而不是直接放在标签上 &l ...
- 如何正确使用 RMQ
序列分块.设块长为 \(B\).每块预处理出最大值.对于询问 \([l, r]\),答案就是整块最大值和散块最大值拼起来.答案显然是 \(O(n) \sim O(\dfrac{n}{B} + B)\) ...
- Codeforces Round 960 (Div.2)
A 非常容易观察到性质,注意 Alice 为先手,发现当 \(a_{\max}\) 的个数为奇数时显然能 win,但如果 \(a_{\max}\) 的个数为偶数且有一个数具有奇数个可以作为跳板,那么也 ...
- 使用Tailwind CSS的几个小Tips
前情 Tailwind CSS 是一个原子类 CSS 框架,它将基础的 CSS 全部拆分为原子级别.它的工作原理是扫描所有 HTML 文件.JavaScript 文件以及任何模板中的 CSS 类名,然 ...
- mysql 创建字段createtime 自动添加时间
1. 创建createtime字段 类型选为timestamp 2. 添加默认值 CURRENT_TIMESTAMP
- MatLab R2023a 安装激活
解压 下载压缩包后解压得到以下内容: Setup文件夹里面存放的是 安装包,用于安装MatLab Crack文件夹里面存放的是 激活文件,包括libmwlmgrimpl.dll,license.lic ...
- office文件所对应的的 Content-type类型总结
最近做文件下载因为涉及到不同类型的文件,所以重新查阅了一下文件所对应的的content-type类型,好记性不如烂笔头,记录一下. 文件后缀 MIME TYPE .doc application/ms ...
- Qt/C++音视频开发73-高效滤镜/文字水印/图形水印/图片水印/yolo运算后的结果显示到画面中
一.前言 视频监控系统发展到今天,越来越智能,比如这些年流行的人脸识别.物体识别.烟感识别等,都是需要拿到图片数据去做运算处理,然后将结果显示到视频画面中,或者还有要求将结果保存到视频录像文件中,以便 ...
- Qt编写的项目作品15-皮肤生成器+UIDemo
一.功能特点 自带17套精美皮肤样式,其中包括黑色.灰色.扁平等. 皮肤生成器只需要简单几步就可以生成一套自定义的皮肤. 自带了26种uidemo,非常漂亮美观,涵盖了主界面布局.菜单切换等各种效果, ...