写点什么

通过 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:593001
用户头像

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

关注

评论

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

模模搭古城搭建学习笔记4:完结篇

ThingJS数字孪生引擎

物联网 3D可视化 数字孪生

消息队列架构设计文档

高亮

架构实战营

数据架构:概念与冷热分离

程序员架构进阶

数据架构 架构设计 28天写作 5月日更 冷热分离

安全团队和云计算团队之间更好协作的6个技巧

云计算

网易数帆云原生故障诊断系统实践与思考

网易数帆

Docker 云计算 Kubernetes 云原生 故障诊断

论文解读丨基于局部特征保留的图卷积神经网络架构(LPD-GCN)

华为云开发者联盟

图神经网络 图结构 图卷积神经网络 DenseNets 池化

Angular:都2021年了,你为啥还没用Angular

华为云开发者联盟

angular 数据绑定

带你快速入门Kotlin

Changing Lin

5月日更

iMazing中IPA文件的介绍与管理

懒得勤快

ios iphone imazing 苹果手机管理

新建了一个Go项目的脚手架

soolaugust

GitHub 编程 Go 语言

数字化助力金融科技,实现产业良性循环

CECBC

科技

Mysql的事务隔离与实现

Geek_快去搞学习

MySQL 事务隔离级别 事务

Vue SSR在好大夫的落地

好大夫在线技术团队

最佳实践 Vue 大前端 语言 & 开发 文化 & 方法

TCP传输层面试中常问的问题汇总(你所不知道的传输层)

linux大本营

c++ Linux TCP 网络编程 TCP/IP

STM32 GPIO的原理、特性、选型和配置

不脱发的程序猿

stm32 单片机 STM32 GPIO GPIO GPIO的原理、特性

如何计算STM32定时器、独立看门狗和窗口看门狗

不脱发的程序猿

定时器 stm32 单片机 看门狗

区块链为何会上升国家战略技术?

CECBC

区块链

架构实战营 - 模块 3- 作业

carl

玩转直播系列之从 0 到 1 构建简单直播系统(1)

vivo互联网技术

消息推送 RTMP 直播推流

区块链为法院工作插上科技翅膀

CECBC

法院

架构实战营 - 模块 3- 作业

请弄脏我的身体

架构实战营

华为云数据库GaussDB(for Cassandra)揭秘第二期:内存异常增长的排查经历

华为云开发者联盟

云原生 内存泄漏 NoSQL数据库 华为云数据库 GaussDB(for Cassandra)

模块三总结

竹林七贤

IDEA 的 debug 怎么实现?出于这个好奇心,我越挖越深!

Java小咖秀

Java debug IDEA 調試

LeetCode题解:150. 逆波兰表达式求值,栈,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

Spring Bean生命周期、DI、IOC、AOP、循环依赖、事务管理

正亮

bean注入过程 spring aop spring事务管理

immutability模式

wzh

Java 设计模式 并发 线程安全

微前端中,为子应用配备开发环境临时导航菜单,提高开发效率

blueju

JavaScript 大前端 React umi

宝马、沃尔沃、奇瑞纷纷布局,区块链将颠覆汽车行业?

CECBC

全球数字货币加快研发

CECBC

IDEA 这样设置,好看到爆炸!!!

楼下小黑哥

Java 程序员 IDEA 编程开发

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