使用 Apache Pulsar 构建弹性可扩展的事件驱动应用

本视频来自 2024 Apache Pulsar 欧洲峰会,由 David Kjerrumgaard, 《Pulsar in Action》书作者给大家带来的《使用 Apache Pulsar 构建弹性可扩展的事件驱动应用》分享。

嘉宾|David Kjerrumgaard,Apache Pulsar Committer,《Pulsar in Action》书作者

编辑|futeng

快速预览

大家好,我是 David Kermgaard,Stream Native 的开发者布道师。欢迎来到我的演讲,今天我们将探讨如何使用 Apache Pulsar 构建可扩展和弹性的事件驱动应用。

事件驱动架构的定义

首先,我们来定义一下什么是事件驱动架构(EDA)。这种架构设计用于实现事件生产者之间的异步通信。事件生产者可以是真实世界中的任何事物,比如用户登录网页、卡车在路线上的移动,或者是库存管理系统中的扫描事件。这些事件被触发后,会异步发布到消息代理,然后感兴趣的事件消费者可以自动、异步地消费这些事件,并相应地做出反应。

Apache Pulsar 的优势

Apache Pulsar 是一个理想的事件驱动架构中的消息代理。它具有水平可扩展性、速度快,并支持事件驱动架构所需的消息语义,如队列、工作队列、主题和订阅。Pulsar 还提供了 Pulsar Functions,这是一个无服务器、轻量级的计算框架,允许你针对事件运行代码片段。

Pulsar Functions 的编程模型

Pulsar Functions 提供了一个反应式的编程模型。函数可以订阅一个或多个主题,每当收到消息时,Pulsar Function 运行时就会执行你提交的代码,并可选地将结果输出到另一个主题。这种模型非常适合事件驱动的架构风格,简单易用。

Function Mesh 的作用

Function Mesh 允许你将多个 Pulsar Functions 编排在一起,形成单一的复杂流处理作业。它利用 Kubernetes 的调度能力自动管理和扩展 Pulsar Functions 和连接器。

弹性与可扩展性的实现

为了实现真正的弹性和可扩展性,我们不仅需要 Pulsar 和 Pulsar Functions,还需要 Kubernetes 操作器和 Function Mesh 来自动处理所有特性。这样,你可以专注于编程逻辑,而不必担心系统的弹性和可扩展性。

Kubernetes 的自动扩展

Kubernetes 提供了两种自动扩展的方式:水平扩展(增加副本数量)和垂直扩展(增加内存或 CPU)。通过配置 Kubernetes 的自动扩展器(如 HPA 或 VPA),你的应用程序可以根据资源使用情况自动调整。

演示:自动扩展在行动

在演讲的最后部分,我进行了一个实时演示,展示了如何配置和使用 Pulsar Functions 的自动扩展功能。通过模拟高 CPU 使用率的场景,我们观察到 Kubernetes 环境自动启动了新的 Pod,以应对计算需求的增加。

感谢大家的参与,希望你们能从这次演讲中获得有价值的信息。如果你们对源代码感兴趣,可以访问我的 GitHub 仓库进行尝试。再次感谢,祝大家会议愉快!

关注 【AscentStream谙流科技】视频号,第一时间获取更新。

相关推荐
FserSuN1 天前
Apache Calcite - 查询优化之自定义优化规则
apache·calcite
黑风风1 天前
Ubuntu 22 安装 Apache Doris 3.0.3 笔记
笔记·ubuntu·apache
网络安全指导员2 天前
常见网络安全设备默认口令
服务器·网络·安全·web安全·php·apache
Mr_Xuhhh3 天前
Linux第一个小程序-进度条
linux·运维·visualstudio·小程序·编辑器·apache
风口上的吱吱鼠4 天前
20241031 Apache2修改日志里面的时间格式
服务器·apache
小刘同学++4 天前
在 Ubuntu 22.04 上部署Apache 服务, 访问一张照片
linux·ubuntu·apache
cgqyw4 天前
Apache 负载均衡详细配置步骤
运维·apache·负载均衡
Mitch3114 天前
【环境搭建】Apache Kylin 各个版本Docker搭建汇总
docker·apache·kylin
cyt涛4 天前
Apache POI—读写Office格式文件
apache·excel·poi·office·单元格·xssfworkbook·sxssfworkbook
boonya5 天前
Apache Hive 通过Docker快速入门
hive·hadoop·apache