装箱百万奖金,第六届全国工业互联网数据创新应用大赛火热报名中! 了解详情
写点什么

eBay 通过事件溯源实现持续交付

  • 2018-08-12
  • 本文字数:1074 字

    阅读完需:约 4 分钟

eBay 的持续交付团队通过使用以事件为中心的方法构建了一个可以持续交付的编配器,具备故障弹性和伸缩性,以便处理eBay 构建管道中不断增加的负载。John Long 和Nataraj Sundar 在两篇博文中描述了事件溯源的好处以及在实际应用程序开发当中所具备的优势

Long 和 Sundar 都是 eBay 的员工,他们指出,事件溯源背后的想法在很多领域已经存在了很长一段时间。例如,在金融会计中,每个条目都以不可变的方式记录下来,并且通过相加所有相关条目来计算当前余额。当发生错误时,追加新的补偿条目,而不是擦除错误的条目。他们认为,事件溯源与开发管道中的代码进度有着天然的相识点。

企业持续交付(ECD)实现了事件溯源。这是一个编配器,用于协调、定义和观察部署管道,并被用在许多内部系统中。部署管道通过拉取请求、构建、测试和部署的方式来移动代码。管道执行服务(PES)是 ECD 的一个组件,一种运行和跟踪管道的服务,它负责将状态报告给 GitHub。这个组件使用 Scala 开发,并使用了 actor 模型框架 Akka

除了事件溯源的一般性好处之外,Long 和 Sundar 还指出了他们在 PES 中使用事件溯源的三个主要原因:

  • 并发。在过去,同时从管道的不同部分收到的事件之间具有竟态条件,而以串行的方式处理每个事件可以更轻松地解决并发问题。

  • 调试和可追溯性。由于他们是个小团队,同时要支持许多管道,因此能够快速找到故障原因并修复它们对他们来说至关重要。

  • 清晰度和正确性。编配对于公司来说至关重要,并且可能会变得非常复杂,因此他们需要高质量和简单且易于理解的代码库。将代码拆分成几个部分,记录传入的信息,计算最终模型并对模型变化做出反应,这种方式可以帮助他们实现上述的目的。

选择事件溯源最大的原因是最后一点——清晰度和正确性。Long 和 Sundar 认为,对于涉及时间和状态的复杂系统,事件溯源是可行的解决方案。通过精心设计的模型,可以分别处理流程中的不同部分,从而使流程更易于理解。他们介绍了事件溯源的四个组件,每个组件都很容易理解,也很容易进行修改和测试。

  • 验证传入事件,根据需要创建和存储相关内部事件。

  • 按事件插入的顺序处理事件,并进行适当的视图模型更新。

  • 在处理完事件之后持久化视图,这样在进行查询时就不需要加载和重放所有事件。

  • 根据状态变更做出响应,并在读取模型发生更新时决定该做些什么,然后启动新 actor 来执行操作。

到目前为止,他们的系统已经处理了超过 220 万个事件,生成了大约 200,000 个运行视图。Long 和 Sundar 表示,事件溯源架构对于实现兼容和直观的解决方案来说至关重要。

查看英文原文 Continuous Delivery Implemented with Event Sourcing at eBay

2018-08-12 03:211185
用户头像

发布了 731 篇内容, 共 405.6 次阅读, 收获喜欢 1966 次。

关注

评论

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

大风车吱呀吱哟哟地转,这个风车加载指示组件真有趣!

岛上码农

flutter ios 前端 安卓开发 7月月更

Java注解详情与自定义注解实战

宁在春

aop 注解 反射 Java’ 7月月更

拆分电商系统为微服务

Geek_7a789a

设计微博系统中"微博评论"的高性能高可用计算架构

Geek_7a789a

ArrayBlockingQueue源码分析-新增和获取数据

zarmnosaj

7月月更

【刷题记录】6. Z 字形变换

WangNing

7月月更

2022 读过的书 -- 《Github入门与实践》

SkyFire

GitHub 读书

架构实战营 模块六作业

挖了蘑菇哩斯

架构实战营

冻结JS对象方法技术详解

猪痞恶霸

js 7月月更

电商系统微服务拆分

地下地上

架构师实战营

应用容器化迁移步骤

穿过生命散发芬芳

应用迁移 7月月更

架构实战营模块 6 作业

星夜

架构实战营

kafka 生产者分区策略演进

布兰特

kafka

【LeetCode】装满杯子需要的最短总时长Java题解

Albert

LeetCode 7月月更

Envoy整体架构概述

阿泽🧸

envoy 7月月更

TiFlash 源码解读(四) | TiFlash DDL 模块设计及实现分析

TiDB 社区干货传送门

集群管理

Electron入门【01】

坚果

7 月月更

动态注册广播流程学习

北洋

Andriod 7月月更

Qt | 播放音频文件 QMediaplayer

YOLO.

音视频 qt 多媒体 播放 7月月更

一款宝藏工具:Apipost

Xd

Java 后端 接口测试

小程序视图容器

小恺

7月月更

小程序电商业务微服务设计与基础设施选型

Geek_e8bfe4

【Docker 那些事儿】如何安全地进入到容器内部

Albert Edison

Docker Kubernetes 容器 云原生 7月月更

企业无忧 | Apipost私有化部署活动 火热开启

Xd

后端 接口测试工具

项目研发流程规范

源字节1号

有赞们的逻辑变了吗?

科技新知

2022读过的书--《操作系统导论》

SkyFire

读书 操作系统

机器学习-回归分析

AIWeker

机器学习 回归分析 7月月更

读书笔记之《深入理解Java虚拟机:JVM高级特性与最佳实践》

菜农曰

Java JVM 后端开发 后端技术

Java中二进制转换的多种方法

秋名山码民

Java’ 7 月月更

leetcode 312. Burst Balloons 戳气球(困难)

okokabcd

LeetCode 动态规划 分治 数据结构与算法

eBay通过事件溯源实现持续交付_DevOps_Jan Stenberg_InfoQ精选文章