探索事件源驱动的可靠系统:Eventsourced

探索事件源驱动的可靠系统:Eventsourced

eventsourcedA library for building reliable, scalable and distributed event-sourced applications in Scala项目地址:https://gitcode.com/gh_mirrors/ev/eventsourced

Eventsourced 是一个强大的开源库,为 Akka 框架添加了可扩展的状态持久化和至少一次的消息传递保证。这个库不仅支持传统的事件溯源模式,还提供了可靠的通道功能,以确保在系统崩溃后能够恢复消息交换。让我们深入了解一下这个项目,并看看它如何帮助构建高可用性、高性能的应用程序。

项目简介

Eventsourced 核心在于其处理器、通道和日志这三个组件。它是一个 Akka 扩展,通过 EventsourcingExtension 管理这些元素。处理器是状态化的演员,它们记录接收到的消息;通道用于实现可靠的消息发送;而日志则负责存储这些消息,便于后续的恢复操作。

该项目的 Scala 版本为 2.10.2,依赖于 Akka 2.2.0。完整的文档、安装指南和更多示例可以在项目wiki中找到。

项目技术分析

处理器(Processor)

处理器是基于 Akka 的普通演员,通过混入 Eventsourced 特质而获得事件记录的能力。它会将包裹在 Message 中的消息记录到日志中,而不是直接处理消息。这样,即使在系统崩溃后,也能通过回放日志来恢复演员的状态。

通道(Channel)

频道提供了一种方法,使得处理器能够向其他演员发送消息并接收确认回复,从而实现至少一次的消息交付保障。有三种类型的通道可供选择:

  • 默认通道: 不存储接收到的消息,在处理器恢复时仅重新发送未确认的消息。
  • 可靠通道: 存储接收到的消息,并基于配置的重发策略重新发送未确认的消息,保持消息顺序。
  • 可靠的请求-响应通道: 具有可靠通道的所有特性,同时还确保了至少一次的响应交付。

日记(Journal)

日记是一个记录处理器和通道消息及确认的演员。你可以根据存储需求选用不同的日记实现,以满足可用性、可伸缩性的要求。

应用场景

Eventsourced 可广泛应用于各种场景,特别是在需要高度一致性、可靠性和可恢复性的系统中。它可以用于:

  • 实现事件溯源,记录系统所有变动以供审计或历史查询。
  • 建立长期运行的业务流程,例如 saga,通过处理器对事件做出反应并命令其他服务。
  • 创建跨服务的可靠通信链路,确保消息不因故障丢失。

项目特点

  • 无侵入式设计: 你可以像使用普通 Akka 演员一样使用 Eventsourced 处理器,而无需关心消息持久化细节。
  • 灵活的消息模型: 支持事件和命令作为消息,简化了复杂业务逻辑的实现。
  • 强大的恢复机制: 回放日志以恢复状态,即使在系统崩溃后也能快速恢复服务。
  • 可靠的通道: 提供多种类型通道,适应不同可靠性需求。
  • 易扩展: 支持多种日志实现,可以根据实际需求进行定制。

综上所述,无论你是要构建一个事件驱动的微服务架构,还是希望提升现有系统的容错性和持久性,Eventsourced 都值得一试。立即加入开源社区,探索这个强大工具的无限可能吧!

eventsourcedA library for building reliable, scalable and distributed event-sourced applications in Scala项目地址:https://gitcode.com/gh_mirrors/ev/eventsourced

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

龚柯劫Esmond

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值