写点什么

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

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

关注

评论

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

面试突击58:truncate、delete和drop的6大区别

王磊

Java java常见面试题 常见面试题

在线JSON转TSV工具

入门小站

工具

redis内存优化

乌龟哥哥

6月月更

架构实战营模块4作业

挖了蘑菇哩斯

架构实战营 存储方案

解决k8s调度不均衡问题

劼哥stone

Kubernetes 云原生 调度 调度不均衡 kube-scheduler

【作业四 千万级学生管理系统的考试试卷存储方案】

wuli洋

Python 设计模式:原型模式

宇宙之一粟

设计模式 原型模式 6月月更

dart使用技巧集合【01】

坚果

6月月更

Jenkins 通过检查代码提交自动触发编译

HoneyMoose

wapper解析

卢卡多多

6月月更

echo命令实用技巧

Nick

Docker 镜像源 echo 6月月更 tldr

读书笔记之:麦肯锡高效工作法

甜甜的白桃

读书笔记 读书 笔记 6月月更

课程背景

IT蜗壳-Tango

6月月更

我理解的微服务 -- 读《微服务设计模式》总结

潜水员

golang 微服务

【Python技能树共建】字符编码与解码

梦想橡皮擦

Python 6月月更

scanf的使用,cin和scanf的区别

工程师日月

6月月更

《网络是怎么样连接的》读书笔记 - Tcp/IP连接(二)

懒时小窝

TCP 网络编程 IP

DOM核心——Element类型

大熊G

JavaScript 前端 6月月更

vivo 容器集群监控系统架构与实践

vivo互联网技术

云原生 监控 系统架构 Prometheus

JVM调优简要思想及简单案例-JVM分代模型

zarmnosaj

6月月更

初创公司,如何拥有企业级Java脚手架

昵称不能为null

Java脚手架 企业级代码架构

敲了几万行源码后,我给Mybatis画了张“全地图”

小傅哥

源码分析 面试 小傅哥 mybatis 大厂面试

【愚公系列】2022年06月 通用职责分配原则(八)-中介原则

愚公搬代码

6月月更

618战报销冠谜底:“收割机”联想屠榜背后的三大利器是什么?

脑极体

远程办公三部曲 - 如何提高工作效率| 社区征文

耳东@Erdong

工作效率 远程办公 6月月更 初夏征文

【Spring 学习笔记(十四)】Spring AOP 通知中获取数据

倔强的牛角

Java spring 6月月更

uni-app进阶之生命周期【day8】

恒山其若陋兮

6月月更

ImportSelector与DeferredImportSelector的区别(spring4)

程序员欣宸

Java spring SpringFramework 6月月更

Linux开发_采用线程处理网络请求

DS小龙哥

6月月更

C#入门系列(二十) -- 面向对象之封装

陈言必行

C# 6月月更

DOM

Jason199

DOM js 6月月更

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