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 实时监控和自动响应系统的更多相关文章

  1. 项目-基于视频压缩的实时监控系统--tiny6410

    项目-基于视频压缩的实时监控系统--tiny6410 @国嵌linux学习笔记. 1. 构造服务端结构体 server struct server { int epfd; //保存epoll指针 st ...

  2. 基于开源软件构建高性能集群NAS系统,包括负载均衡(刘爱贵)

    大数据时代的到来已经不可阻挡,面对数据的爆炸式增长,尤其是半结构化数据和非结构化数据,NoSQL存储系统和分布式文件系统成为了技术浪潮,得到了长足的发展.非结构化数据目前呈现更加快速的增长趋势,IDC ...

  3. 基于开源软件在Azure平台建立大规模系统的最佳实践

    作者 王枫 发布于2014年5月28日 前言 Microsoft Azure 是微软公有云的唯一解决方案.借助这一平台,用户可以以多种方式部署和发布自己的应用. 这是一个开放的平台,除了对于Windo ...

  4. 搭建属于你的家庭网络实时监控–HTML5在嵌入式系统中的应用·高级篇

    *本文已刊登在<无线电>2014年第6期 <搭建属于你的在线实时採集系统>中已经对HTML5平台有了初步的认识,并基于此向大家展示了怎样将採集到的数据上传至网络.实现实时观測. ...

  5. 基于视频压缩的实时监控系统-sprint1基于epoll架构的采集端程序设计

    part1:产品功能 part2:epoll机制   select与epoll区别 1.select与epoll没有太大的区别.除了select有文件描述符限制(1024个),select每次调用都需 ...

  6. \阶段4-独挡一面\项目-基于视频压缩的实时监控系统\Sprint2-采集端图像采集子系统设计

    1.在编写程序前有一个流程,思维导图: 初始化:包括初始化摄像头:注册事件到epoll 然后是开始启动采集:一旦开始采集我们的摄像头就会有数据了,它会触发事件处理函数:我们在这里的处理是保存这个图像: ...

  7. 阶段4-独挡一面\项目-基于视频压缩的实时监控系统\Sprint1-基于Epoll架构的采集端程序框架设计\第2课-基于Epoll的采集端程序框架设计

    回顾之前的整个程序架构 把epoll机制应用到这个架构上去 下面主要去分析我们的系统中有没有需要等待的事件,先看看采集子系统 在采集子系统当中,摄像头有数据,摄像头采集到图像数据可以作为一个等待事件. ...

  8. 基于视频压缩的实时监控系统-sprint3采集端传输子系统设计

    由于jpg本来就是编码压缩后的格式,所有无需重复编码 传输子系统步骤:(1)初始化:a.socket(初始化tcp连接):b.将事件添加到epoll中 (2)事件处理:接收到网络包.发送完网络包 st ...

  9. 基于视频压缩的实时监控系统-sprint2采集端图像采集子系统设计

    (1).初始化:a.初始化摄像头:b.注册事件到epoll (2).开始采集--->触发事件处理系统 (3).保存图像(方便测试) a.初始化摄像头 //初始化摄像头 1.获取驱动信息 2.设置 ...

  10. 大众点评cat实时监控简介及部署

    简介 背景 CAT(Central Application Tracking)是由吴其敏(前大众点评首席架构师,现携程架构负责人)主导设计基于Java开发打造的实时应用监控平台,为大众点评网提供了全面 ...

随机推荐

  1. 深入解析 WezTerm 的自定义功能:键绑定和鼠标绑定

    WezTerm 是一个高性能的跨平台终端模拟器,它提供了广泛的自定义选项,包括键绑定和鼠标绑定,使得用户可以根据自己的需求优化操作界面.本文将详细介绍几个关键的自定义功能,解释它们的用途,并展示如何配 ...

  2. 关于ClassLoader中getResource与getResourceAsStream的疑问

    背景: 某日临近下班,一个同事欲任何类中获取项目绝对路径,不通过Request方式获取,可是始终获取不到预想的路径.于是晚上回家google了一下,误以为是System.getProperty(&qu ...

  3. 开源 - Ideal库 - Excel帮助类,设计思路(一)

    今天开始和大家分享关于Excel最长常用操作封装. 01.起因 市面上有很多Excel操作库,这些库设计之初的目标是提供对Excel的各种操作功能,包括数据.样式.公式.图表等等.而对于我们平时开发来 ...

  4. Lombok 代码优化器

    Lombok是一种Java实用工具,可用来帮助开发人员消除Java的冗长代码,尤其是对于简单的Java对象(POJO).它通过注释实现这一目的 使用安装Lombok pom文件导入lombok Mav ...

  5. Fiddler抓包iOS手机配置全流程

    前情 平时做移动移动端开必的时候经常需要抓包手机,用于接口请求跟踪,但iOS的抓包经常性的配不成功,经过踩过不少坑后终于知道了整个配置流程,此文记录Fiddler抓包iOS手机的配置流程. Step ...

  6. 前端每日一知之你需要知道的JSON.stringify

    脑图在线链接 本文内容依据[web开发]公众号精彩文章总结而来

  7. Flutter查漏补缺2

    Flutter的理念架构 Flutter架构分为三层 参考官方文档 Framework层(dart) flutter engine层(C/C++) embeder层(platform-specific ...

  8. 中电金信:从“互联网+”到“人工智能+”,TA也藏不住了!

    ​ 两会期间,人工智能频上头条 其中"人工智能+"首次进入2024政府工作报告 为人工智能产业的发展注入一剂强心针   从"互联网+"到"人工智能+& ...

  9. Qt音视频开发08-ffmpeg内核优化(极速打开/超时回调/实时响应)

    一.前言 最初编写这套视频解析组件的时候,面对的场景是视频监控行业,对应设备都是网络监控摄像机,传过来的都是rtsp这种视频流,做过这一块的人都知道,打开某个视频流默认耗时比较大,基本上在2s左右,那 ...

  10. PostgreSQL 数据库的启动与停止管理

    title: PostgreSQL 数据库的启动与停止管理 date: 2024/12/28 updated: 2024/12/28 author: cmdragon excerpt: 作为一个强大的 ...