写点什么

通过Esper探索事件驱动架构

2007 年 5 月 31 日

在 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 年 5 月 31 日 23:591903
用户头像

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

关注

评论

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

这道面试题,出错率90%

田维常

面试

Python的GIL

yunson

Python GIL

OpenKruise 2021 规划曝光:More than workloads

阿里巴巴云原生

阿里云 开源 容器 云原生 调度器

Linux的进程pid编号极限

程序员架构进阶

Linux 进程

智慧公安防控管理平台搭建,重点人员管控系统解决方案

t13823115967

智慧公安

Tyk 和 Apache APISIX 性能横评

飞狐

性能测试 APISIX

四年三次获奖,PostgreSQL再度荣获“年度数据库”桂冠!

PostgreSQLChina

数据库 postgresql 开源

软件测试--中间件介绍

测试人生路

软件测试 中间件

有没有听说过通达快递?

escray

极客时间 极客大学 课程作业 大作业 架构师训练营第 1 期

纵观 ActiveX 平台的兴衰史,看开发控件的技术演变

Geek_Willie

SpreadJS activex

美团四面,offer已拿;分享个人面经以及刷题经验!

Java成神之路

Java 程序员 架构 面试 编程语言

别再问我“阿里架构师和普通程序员的区别了!”看完这篇文章之后你就知道自己差在哪了!

Java成神之路

Java 程序员 架构 面试 编程语言

测开之函数进阶· 第7篇《装饰器装饰类,通用装饰器,有啥区别呢?》

清菡

测试

国外低代码平台趟过那些坑,对国内低代码企业有哪些启示?

DT极客

浅析整洁架构之道(一) 为什么需要整洁架构

御剑

架构 DDD 整洁架构 The Clean Architecture Robert C. Martin

云原生2.0时代,华为云DevOps立体运维实践

华为云开发者社区

DevOps 运维 云原生 华为云

IT2.0:中台构建还应从企业业务实际出发

华为云开发者社区

区块链 分布式 安全 数据 身份安全

深度解析!滴滴内部开源Spring IoC和AOP源码小册

Java架构追梦

Java spring 架构 aop ioc

敏捷团队的质量保障赋能

BY林子

质量保障 质量赋能 敏捷测试

获奖名单|七日更挑战成功!

InfoQ写作平台官方

奖品 活动专区 七日更

掏空各大厂面试题库的“380JAVA面试题(性能优化+微服务+并发编程+开源框架+分布式)”跳槽大厂必备!

Java成神之路

Java 程序员 架构 面试 编程语言

如何防止短信验证码接口被恶意调用攻击?

香芋味的猫丶

短信 短信防刷 接口安全 验证码

案例展示自定义C函数的实现过程

华为云开发者社区

数据库 数据 C语言 字符串

架构师训练营 - 大作业一

Pudding

LINUX SHELL脚本攻略

田维常

智慧社区管理平台建设,智慧平安小区整体解决方案

t13823115967

智慧社区安防系统平台开发

电商平台如何激发内容生态

马踏飞机747

内容 内容分发网络 电商

抽象照进现实

小型火焰🔥

抽象 视觉化

Linux进程知识干货|收藏

赖猫

c++ Linux 后台开发 运维

架构师训练营 - 大作业二

Pudding

如果腾讯、阿里是弱生态,那么谁是强生态?

ToB行业头条

通过Esper探索事件驱动架构-InfoQ