HomeAway分享云端事件溯源经验


HomeAway的数据架构师Adam Haines 最近 在  2018年数据架构峰会上  发表了关于他的团队如何利用事件采购Event Sourcing云设计模式来加速其组织中的大数据计划的演讲
事件溯源等数据架构模式有助于解决团队迁移到云时面临的新挑战。这些挑战包括最终的一致性,遗留服务依赖性,弹性规模和不可靠的网络。事件源通过将数据存储从领域状态更改到动作序列,从而改变了数据存储的范式。
他们在云迁移中的主要目标是最大限度地减少云平台的技术债务。他们遇到了数据架构方面的挑战,例如有限的事件重放,可审计性差,数据副本无处不在,可发现性和谱系有限,数据漂移以及一些弹性挑战。
事件溯源基于不可变的变更日志,并提供最大的可审计性。它带来了诸如最终一致性,事件迭代和数据增长等挑战。
他还讨论了与事件溯源相结合的其他设计模式,即命令查询责任隔离(CQRS),它将写入和读取问题分开,并允许应用程序和服务独立扩展。
在HomeAway,事件溯源解决方案包括使事件规范化,捕获增量变化(更改数据捕获),“完全一次”消息语义,保证订购和解锁服务。

事件结构
事件的数据结构很重要,因为这是以数据为中心或以应用程序为中心的基础。只要数据格式是由写入它的服务决定的,我们就可以从真正的数据民主化(数据民主化允许数据从一些分析师或DBA手中安全地传递到公司的群众手中)中获得更多。每个事件都应该非常精细并且与已知的现实世界相关联。例如,“预定”不是一个有形的东西,但有一组属性可以简单地定义它:预订可以有人员,入住日期,退房日期,房产,价格等。如果我们已经完成了我们的工作,那么写事件的服务/平台/功能是无关紧要的,因为预订领域已经是可与所有其他平台和服务互操作。这是以数据为中心的架构的本质。

事件溯源好处和挑战
好处:

  1. 事件溯源架构的最大优势之一是数据民主化。将数据置于架构的中心允许服务轻松发现和订阅,这对于开发人员的速度和实现近实时体验至关重要。
  2. 事件溯源也为基于模式的编程打开了大门。如果模式和库已设置到位,那么目标应该是让入门级工程师在很少的加速时间或培训的情况下执行开发生命周期。
  3. 事件采溯源提供了一个很好的审计跟踪,因为整个历史是持久的,这使得审计和可视化发生的事情非常容易。我认为这是一个非常关键的方面,因为服务变得更加异步,因为客户需要实时更新或有关其交易状态的反馈。

挑战:

  1. 虽然读/写关注分离是有好处,但它也算是一种损害。通过事件溯源模型,软件工程师现在必须真正考虑幂等操作以及如何处理不一致的结果。
  2. 随着数据的增长,存储空间和恢复当前状态所需的时间也会增加。我认为有一个策略(恢复和/或快照)围绕最小化重放的成本和影响是很重要的。

HomwAway实施经验
 HomeAway通过转换为事件驱动架构,真正提高了架构的灵活性和弹性。这是一条漫长的道路(我们还在继续),它始于一个消息传递架构; 但是,我们发现数据需要成为我们工作的中心。在编码方式方面,我们需要更敏捷,更具适应性。第一步是简化数据的消费和生产。我们的目标是将事件置于我们业务的核心。利用事件和事件溯源为我们提供了更多的洞察力,更大的灵活性以及更好地利用云的能力,同时帮助我们努力弃用旧数据中心服务。

使用Kafka和Photon两种技术进行事件溯源。Photon是一个高度分布的内部写优化事件源平台。

如何使用Strangler模式进行新旧系统替换?
strangler扼杀者模式不是你彻底改造现有系统,而你是通过将它包裹在一个外观中来实现的。你将外观下的组件从旧的换成新的,最终扼杀旧系统并移除外观,然后只留下新的东西。这个想法是,随着时间的推移这样做可能比从头重写现有系统的风险更低。
在对strangler扼杀模式进行试验后,我们意识到事件的价值和力量。这是我们真正开始推动事件采购作为一种手段,使公司更加以数据为中心。

他还谈到了CQRS和事件采购模式如何协同工作以使系统更具弹性。