【QCon】精华内容上线92%,全面覆盖“人工智能+”的典型案例!>>> 了解详情
写点什么

HomeAway 用事件溯源解决大数据迁移

  • 2018-11-10
  • 本文字数:2535 字

    阅读完需:约 8 分钟

HomeAway用事件溯源解决大数据迁移

HomeAway数据架构师 Adam Haines 最近在Data Architecture Summit 2018大会介绍了他的团队如何使用事件溯源云设计模式来加速其组织中的大数据项目。


像类似事件溯源的数据架构模式可以帮助解决迁移到云环境后团队面临的新挑战。这些挑战包括最终一致性、遗留服务依赖、弹性扩展以及不可靠的网络。事件溯源通过将数据存储为一系列领域状态变更,来改变数据存储的范式。数据就像服务可以使用的日志一样存储。


他们云迁移的主要目标是最小化云平台的技术负债。他们面临着数据架构方面的挑战,比如有限的事件回放、可审核性较小、到处都有的数据拷贝、有限的可发现性和沿袭性、数据飘移以及一些弹性挑战。


事件溯源是基于不可变的日志变更,并提供最大程度的可审核性。它会带来最终一致性、事件迭代和数据增长这样的挑战。


他还提到其他与事件溯源紧密相关的设计模式,命令查询职责分离(CQRS)分离了读和写的关注点,保证应用程序和服务能独立扩展。


在 HomeAway,事件溯源解决方案包括实践规范化、捕捉 delta 变更(改变数据捕捉)、每条消息“仅有一个”语义,保证排序和分块服务。


他们还使用Strangler模式成功地实现了向云的增量迁移、资产捕捉、事件重定向以及路由请求。


InfoQ 采访了 Adam Haines,向他了解了有关事件溯源模式、在组织中使用它获得的教训以及他推荐的实践。


InfoQ:你可以介绍一下为什么事件架构在事件溯源解决方案中如此重要吗?


Adam Haines:事件架构很重要,因为这是以数据为中心或以应用程序为中心的基础。只要数据是由编写它的服务所决定的,我们在数据民主化的道路上就更进了一步。每个事件都应该非常细粒度,绑定到现实世界的事物。比如说,预约并不是件实物,而由一系列大家皆知的特征/属性组成,我们为了方便给它下了这个简单的定义。预约包括人、入住日期、离店日期、所有权、价格等等。如果我们的工作做得不错,那么编写事件的服务/平台/功能就无关紧要了,因为预订域已经可以与所有其他平台和服务互操作。这就是以数据为中心的体系结构的本质。


InfoQ:事件溯源有什么好处和挑战?


Haines:

好处:事件源允许服务分离它们的读写关注点,并真正允许服务封装数据。具有完整的封装不仅可以防止死星架构,还可以降低每个微服务的集成成本。事件源架构的最大优势之一是数据民主化。在体系结构的中心拥有数据可以让服务很容易地发现和订阅,这对于开发人员开发速度和实现接近实时的体验至关重要。事件源也为基于模式的编程打开了大门。如果已经设置好了模式和库,那么目标应该是让一个入门级的工程师执行开发生命周期,而不需要太多的提升或培训的时间。事件源提供了一个很好的审计跟踪,因为整个历史是持久的,这使得审计和可视化发生的事情非常容易。我认为这是一个非常关键的方面,因为服务变得更加异步,客户需要实时更新或反馈他们的事务状态。

挑战:由于本质上过去十年我们一直在编程,所以一直期望读自己写的东西。尽管我们认为读写分离是有益的,但同时它也存在着问题。有了事件溯源模型,软件工程师现在需要考虑幂等运算,以及如何处理不一致的结果。另外一个挑战是数据增长。事件溯源启动很快,也很容易,这是因为数据很少,所以速度会很快。很明显,随着数据的增长,存储空间以及返回当前状态需要的时间也会增长。我认为重要的是要有一个策略(恢复和/或快照)来最小化回放的成本和影响。


InfoQ:你可以介绍一下 HomeAway 的事件溯源架构吗?


Haines:HomeAway 转换到事件溯源的架构之后确实提升了架构的灵活性和弹性。从消息架构开始还有很长的路要走(我们还在努力),然而我们发现数据需要成为我们工作的中心。我们编程的方式需要更灵活、更适应。第一步是让数据的消费和生产变得简单。我们的目标是将事件放在业务的核心。事件和事件溯源给我们提供了更强大的洞察力、更多的灵活度以及更好地使用云的能力,同时帮我们降低了遗留数据中心服务的危害。


InfoQ:你们的解决方案中使用了什么技术?


Haines:HomeAway 的事件溯源主要使用了两种技术:Kafka 和 Photon。Photon 是高度分布式写优化事件溯源平台,在内部创建来解决事件溯源的挑战。

我想要重点声明的一点,技术选择的优劣其实是未知的,然而,这不是说没有权衡。我的目标是制定事件溯源模式的根本,这决定了技术选择的利弊。这表示,在决定选择什么技术来支持事件溯源的时候需要慎重考虑。不是所有的持久性都是一样的,也不是所有的平台都像数据库一样能提供相同的属性或保障。


InfoQ:你在演说中提到了 Strangler 模式。你可以介绍一下你的团队在开发事件溯源架构的时候是怎么使用这个模式的吗?


Haines:在我们迁移云计算之旅中,数据工程团队在很早阶段就意识到服务和数据库集成得如此紧密,几乎不可能分开。

我们需要解决的问题是如何迁移。我们需要找到一个方法,从遗留平台中得到突变事件,并把它们放到云上。

最简单的方法是使用变化数据捕获(CDC)流。CDC 流可以让我们的服务订阅遗留系统的突变事件,并放到目的地。

由于存储内容和存储方式的性质,决定了唯一的选择就是事件溯源。事件溯源允许我们以数据为中心来看待世界。在其中云服务或变化数据捕获是否写了事件并不重要,因为每个服务都在写相同的内容。

在研究了 Strangler 模式之后,我们意识到了事件的价值和力量。这时我们真正开始推行了事件溯源,让公司变得更加以数据为中心。


他还谈到了 CQRS 和事件溯源模式协同工作,以使系统变得更加有弹性。


命令查询职责分离(CQRS)是事件溯源交付价值和实现云规模的重要环节。CQRS 实际上是关于读写服务的分离。通过解耦这些服务,帮助我们独立地扩展读和写,并增加了弹性层。在传统的微服务世界中,服务可能委托给其他的微服务,然而,这是以集成成本为代价的,并对弹性造成负面影响。HomeAway 使用 CQRS 来真正提供和封装数据,因此服务丢失的影响会很小。在大多数情况下,最糟糕的情况是潜在的数据,这会让服务比停机状态更糟糕。在云中,人们预期看到的就是服务和资源增增减减、起伏不定。云并不像数据中心这么稳定,事件溯源+CQRS 可以帮助我们最小化这种风险。

查询层(CQRS 中的 Q),我们发现最好用图来表述,因为这样可以更好地探索跨领域的数据,这通常是封装微服务和业务对象的需求。


查看英文原文Event Sourcing to the Cloud at HomeAway


2018-11-10 22:15913
用户头像

发布了 218 篇内容, 共 64.6 次阅读, 收获喜欢 75 次。

关注

评论

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

GO 类型接口及反射间的转换

superman

Go 语言

技术实践丨GaussDB(DWS)运维管理功能“升级”的原理和使用

华为云开发者联盟

运维 数据 集群

云计算简史(上)- 15分钟读完15年

明道云

有了容器为什么kubernetes还需要Pod?

架构师修行之路

分布式 微服务 pod kubernete

第12周学习总结

Vincent

极客时间 极客大学

Java Reference核心原理分析

AI乔治

Java 架构 JVM 性能调优

诸多老牌数据仓库厂商当前,Snowflake如何创近12年最大IPO金额

华为云开发者联盟

数据仓库 数据 存储

CloudQuery v1.1.1 修复版本发布

BinTools图尔兹

数据库 sql 安全 工具软件

NET-Core中的配置文件操作

为体验更多

C# .net .net core ASP.NET Core

架构师训练营 - 第 4周课后作业(1 期)

Pudding

十七、深入Python异常处理

刘润森

Python

第12周作业

Vincent

极客时间 极客大学

甲方日常 33

句子

工作 随笔杂谈 日常

架构师的成长之路

华章IT

CTO 架构师 架构师之道

你听过CatBoost吗?本文教你如何使用CatBoost进行快速梯度提升

计算机与AI

Python 学习 优化

京东智联云MySQL数据库如何保障数据的可靠性?

京东科技开发者

MySQL 数据库

“区块链×多方计算”解决众多难题 将成区块链应用新场景

CECBC

区块链 数据融合

让AI人才在产业界闪闪发光:百度之星的“神奇滤镜”是怎样炼成的?

脑极体

第19届亚运会门票采用区块链技术防伪

CECBC

区块链技术 防伪 溯源

详细分析定制企业应用的价格

Learun

敏捷开发 快速开发 软件架构

LAXCUS大数据集群操作系统:一个分布式分时共享E级系统软件(三)

陈泽云

人工智能 大数据 计算机网络 操作系统 网络

从分布式到微服务成长手册,助我面试跳槽斩获字节Offer

Java架构追梦

Java 学习 架构 面试 微服务

“区块链技术创新要植根市场”

CECBC

金融科技 信息安全

websocket 是怎么连接的

程序员与厨子

nginx 网络 HTTP websocket

5G时代音视频开发王器:WebRTC

华章IT

flutter 音视频 WebRTC React Native

考研须知

时间是一个人最好的证明

考研

分布式系统设计理念这么难学?

架构师修行之路

分布式 微服务

华为云数据安全中心正式公测,8大核心数据安全能力守护你的数据

华为云开发者联盟

华为 安全 数据

程序员的美丽假期(并不)

Philips

敏捷开发 快速开发

“一个APP竟然可以适配这么多设备?!”《优酷响应式布局技术全解析》开放下载

破绽

阿里巴巴 阿里云 开发者 优酷 电子书

架构训练营 - 第4周课后作业 - 学习总结

Pudding

HomeAway用事件溯源解决大数据迁移_服务革新_Srini Penchikala_InfoQ精选文章