写点什么

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

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

关注

评论

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

aspnetcore 原生 DI 实现基于 key 的服务获取

newbe36524

C# Docker Kubernetes

软件测试 | GET和POST区别与实战

测吧(北京)科技有限公司

测试

OSS Compass开源指南针发布,我国首个开源生态健康评估平台正式诞生

Geek_2d6073

流处理计算平台 StreamPark 2.0.0 重磅发布,首个 Apache 版本终于来了

ApacheStreamPark

flink spark 流处理 StreamPark

【立哥】【每日一个小知识】你所知道的牛郎织女故事是真的吗?

Lee Chen

软件测试 | 什么是HTTP

测吧(北京)科技有限公司

测试

OKR之剑·总结篇01:如何开好一场OKR复盘会

vivo互联网技术

团队管理 OKR

Unittest接口和UI自动化测试框架中的发送邮件服务如何使用?

Python 自动化测试 unittest 邮件服务

软件测试 | Mock是什么?

测吧(北京)科技有限公司

测试

浅谈新媒体运营岗位的发展前景

石头IT视角

自研的内存分析利器开源了!Android Bitmap Monitor 助你定位不合理的图片使用

拭心

android 性能优化 BitMap 内存优化

定了!Python3.7,今年停止更新!

程序员晚枫

Python 软件 下载 版本

JavaScript 中深拷贝方法structuredClone

devpoint

JavaScript 深拷贝与浅拷贝 lodash structuredClone

MathType7.0简体中文汉化版下载

茶色酒

MathType2023

【深度挖掘 RocketMQ底层源码】「底层源码挖掘系列」透彻剖析贯穿RocketMQ的消费者端的运行核心的流程(Pull模式-上)

洛神灬殇

Apache RocketMQ 2月日更 运行原理 拉取模式

易观千帆 | 2023年1月银行APP月活跃用户规模盘点

易观分析

金融 银行 手机银行

软件测试 | session、cookie和token的区别是什么?

测吧(北京)科技有限公司

测试

业务架构那点事(1)业务架构师就是在“盖房子”

涛哥 数字产品和业务架构

企业架构 业务架构

得物容器SRE探索与实践

得物技术

容器

SaaS+、SaaS的机遇都存在,但不要试图找最短成功路径,该犯的错都得走一遍

B Impact

2023-02-21:请用go语言调用ffmpeg,解码mp4文件,输出视频信息和总帧数。

福大大架构师每日一题

golang ffmpeg 福大大

【kafka专栏】kafka专栏目录整理(建议收藏不迷路)

石臻臻的杂货铺

kafka

软件测试 | HTTP和HTTPS抓包分析

测吧(北京)科技有限公司

测试

CorelDRAW2023软件新功能抢先看

茶色酒

CorelDraw2023

架构实战营模块6 拆分电商系统为微服务

西山薄凉

「架构实战营」

秒懂算法 | 莫队算法

TiAmo

算法 暴力猜解

LeetCode题解:938. 二叉搜索树的范围和,BFS,JavaScript,详细注释

Lee Chen

JavaScript 算法 LeetCode

得物热点探测技术架构设计与实践

得物技术

热点

日日顺于贞超:供应链数字化要做到有数、有路、有人

联营汇聚

「 Java基础-Lambda 」试试Lambda表达式?通俗易懂得嘞!

小刘学编程

Lambda 代码优化 java 高级编程

架构训练营一作业

null

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