写点什么

通过 Esper 探索事件驱动架构

  • 2007-05-31
  • 本文字数:958 字

    阅读完需:约 3 分钟

在 Java One 上 Thomas Bernhardt 和 Alexandre Vasseur 向我们解说了事件驱动应用服务器(Event Driven Application Server)的概念,并介绍了 Esper 项目

事件驱动应用服务器是一种新型的服务器,为每秒需要处理超过 100,000 个事件的服务器提供一个运行时和多种支撑基础设施服务(如传输、安全、事件日志、高可靠性和连接器等)。除了事件处理以外,事件驱动服务器还可以将事件信息和长时间存在的数据(通常从关系数据库查询中获取)结合起来,以及在事件流上执行临时的关联关系和匹配操作。

事件系统(Event System)存在两个概念,可使之与消息传送系统(Messaging System)区分开来:

  • 事件流处理(Event Stream Processing,ESP)——检测事件数据流,分析出那些符合条件的事件,然后通知监听器
  • 复杂事件处理(Complex Event Processing,CEP)——可以监察各事件间的模式

全功能的事件驱动服务器尚需数年时间方可实现,但现在开发者就可通过来自 Codehaus 的 Esper,在独立应用、Java 企业级应用和 Spring 应用中实现事件驱动架构。Esper 的 1.0 版本( InfoQ 曾报道过)是在 2006 年 6 月发布的,它是一个轻量级、可嵌入的 ESP 和 CEP 的开源实现。

把 Esper 集成到独立应用中其实很简单。步骤如下:

  • 获取一个 Esper 引擎实例
  • 生成一个 Statement(用 Esper 的查询语言)
  • 使用引擎注册这个 Statement
  • 生成一个 Listener(通过实现一个 Java 接口,该接口在 Statement 所得值为 true 会被触发),并把它跟 Statement 绑定起来

事件能以 Java 对象、XML 或 Map 的形式展现,当它们通过系统的时候,系统会评估 Statement 的值,并执行 Listener 中的逻辑。

Esper 查询语言提供了丰富的语法,这些语法可以表达复杂的临时逻辑,此外还有如下的一些特征:

  • 事件过滤
  • 滑动窗口和聚集(计算在最近 30 秒内所有报告的有意义的信息)
  • 分组窗口和对输出率的限制(获取最近 10 分钟内每个区域的信息数量)
  • 连接和外连接(允许事件流之间的连接)
  • 与历史数据或引用数据集成(访问关系型数据库)
  • 生成所有 Statement 都可以访问的虚拟流

虽然事件驱动应用服务器的面世尚需时日,Esper 目前已经可以投入产品级应用了。你很简单就可以把 Esper 集成到你的应用中,将帮助你先人一着提供符合业务和客户在实时性方面需求的功能。

查看英文原文: Exploring Event Driven Architectures with Esper

2007-05-31 23:592538
用户头像

发布了 27 篇内容, 共 10.0 次阅读, 收获喜欢 15 次。

关注

评论

发布
暂无评论
发现更多内容

Java高手速成│编写你第一个数据库程序

TiAmo

JDBC 数据库· 12月月更

Elasticsearch查询及聚合类DSL语句宝典

京东科技开发者

数据库 存储 ES dsl 查询语句

华为云数据库GaussDB(for MySQL)全方位守护企业云上数据安全

爱科技的水月

MAXHUB+腾讯会议:为未来办公造一部动力引擎

脑极体

直呼内行,华为云桌面就是这么专业

IT科技苏辞

企业数据上云,华为云数据库 GaussDB(for MySQL)轻松解决

科技之光

使用 QuTrunk+Amazon ParallelCluster3 进行并行计算

亚马逊云科技 (Amazon Web Services)

亚马逊云科技 Hero 专栏

守护企业数据安全,华为云数据库 GaussDB(for MySQL)有绝招

科技之光

HTTP实体首部字段

穿过生命散发芬芳

HTTP 12月月更

架构实战营模块三作业

张贺

华为云数据库助力微鲤科技智能升级

爱科技的水月

企业金融App评测系列——微众银行以App构筑企业金融服务新生态,成为企业的随身数字银行

易观分析

企业 金融 银行

数据可视化软件有哪些?

优秀

数据可视化工具

天猫联合瓴羊、贝恩,打造“产品致胜”的DTC发展模式

瓴羊企业智能服务

Git使用教程之本地仓库的基本操作

芯动大师

git git 学习 Git命令行

架构实战营第10期模块3作业

Geek_4db2d5

Content-Length使用不规范导致Socket Hang Up问题

Kevin Wu

TCP HTTP HttpClient content-length

2022-12-27:etcd是无界面的,不好看,joinsunsoft/etcdv3-browser是etcd的web可视化工具之一。请问在k3s中部署,yaml如何写?

福大大架构师每日一题

云原生 k8s etcd k3s 福大大

单测在商家前端业务中的实践

得物技术

架构 前端 Web 测试 单元测试 12 月 PK 榜

云上数字化时代,华为云桌面助力政企办公升级

IT科技苏辞

内卷时代,华为云引领移动办公新潮流

清欢科技

【web 开发基础】PHP数组元素的添加和删除操作 (49)

迷彩

数组 数组操作 PHP基础 先进先出 后进先出

阿里最新产:SpringCloud微服务架构进阶笔记(2023终极版)

程序员小毕

程序员 微服务 后端 架构师 java面试

「实操」结合图数据库、图算法、机器学习、GNN 实现一个推荐系统

NebulaGraph

推荐系统 图数据库 图算法 GNN

Docker 中的挂载卷

HoneyMoose

物联网 IOT 设备如何脱离信息孤岛?

eng八戒

物联网 IoT 网络 网络配置 涂鸦智能

Mysql到TiDB迁移,双写数据库兜底方案

京东科技开发者

数据库 开源 开发 迁移 双写数据库

如何写一个深度学习编译器

MegEngineBot

深度学习 开源 编译器 MegEngine MegCC

丧心病狂,竟有Thread.sleep(0)这种神仙写法?

JAVA旭阳

Java JVM

如何在 15 分钟内度量 DORA 指标?

思码逸研发效能

研发效能

这一篇让你彻底搞懂微信生态里的二维码

产品海豚湾

产品经理 产品设计 二维码 微信扫码 SaaS 产品

通过Esper探索事件驱动架构_Java_Ian Roughley_InfoQ精选文章