写点什么

通过 Esper 探索事件驱动架构

  • 2007 年 5 月 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 年 5 月 31 日 23:592248
用户头像

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

关注

评论

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

公司一直用Mybatis的原因原来在这!不得不竖起我的大拇指

小闫

Java mybatis mybatis-config.xml mybatis缓存

老是自以为JVM懂了,那你知道 i = i++和 i = ++i 的区别吗?

小谈

Java 面试 编程语言 JVM 程序

如何通过调试学习 nginx ?

张小方

c++ nginx 后端 高性能 服务器端开发

Git 的远端操作及解析(含思维导图)

多选参数

git GitHub gitlab

现在面试这么难,背下题就能过的时代一去不复返了

小谈

Java 面试 JVM springboot SpringCloud

有了多线程,为什么还要有协程?

八两

线程 进程 协程 GMP 进程线程区别

k6简单入门

风中之心

性能测试

架构师训练营第 5 周——学习总结

在野

极客大学架构师训练营

【Python】 any() 和 or 区别你真的知道吗?

Leetao

Python 数据结构 Python基础知识

计算机操作系统基础(十三)---线程同步之读写锁

书旅

php laravel 线程 操作系统 进程

IDEA 不为人知的 5 个骚技巧!真香!

王磊

Java 工具 IDEA

小白也有大厂梦,如何从零开始掌握高薪Java工程师必备技能?

无予且行

Java 架构 面试 后端 大厂

碎片化学习行不行

封不羁

JVM中的双亲委派机制你还没懂吗?

阿文

Java JVMTI JVM 深入理解JVM JVM原理

工业4.0|振动分析能做到预防性维护吗?

清水河路人甲

Cordova项目使用Android Studio真机调试

爱写Bug的麦洛

android Android Studio 真机调试

对mysql事务的认识,再不懂我就捶死我自己!

你是人间四月天

MySQL 面试 mysql事务

解决死锁的4种基本方法(建议收藏)

小吴选手

Java 死锁

Java程序员的必修课之Spring理解透彻了吗?不会还咋去面试?

犬来八荒

Java spring 面试 后端 框架

Java线程池最细的解释,看完后彻底征服面试官

小新

Java 架构 面试 线程 线程池

道路千万条,安全只三条

石君

安全评估 安全设计

架构师训练营第五周 - 总结

Eric

极客大学架构师训练营

「架构师训练营」第 5 周作业 - 一致性哈希算法

guoguo 👻

极客大学架构师训练营

hash一致性算法与优化

Mr.Monkey

Hash一致性算法的Java实现

wei

熟悉JVM吗?为什么新生代内存需要有两个Survivor区?

南南

Java 面试 深入理解JVM JVM原理

游戏夜读 | 跟风说一说爬虫

game1night

一致性哈希 -- java 实现

lei Shi

如果张东升是个程序员

程序员生活志

程序员 张东升

Hexo blog 创建指导手册

想飞的鱼

GitHub Hexo GitHub Pages Blog

面试官80%会问的分布式事务中的“最大努力通知”事务

无予且行

Java MySQL 面试 事务

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