加入收藏 | 设为首页 | 会员中心 | 我要投稿 温州站长网 (https://www.0577zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 云计算 > 正文

Netflix支付生态系统迁移到AWS的实践

发布时间:2022-12-09 00:32:38 所属栏目:云计算 来源:转载
导读: 译者:侠天
在2016年1月4号,Netflix完成了它的全球化服务,同时新增加了130个国家。在这之前,Netflix的支付生态系统已经100%迁移到AWS云服务。Netflix的支付架构从Netflix数据中心(DC)

译者:侠天

在2016年1月4号,Netflix完成了它的全球化服务,同时新增加了130个国家。在这之前,Netflix的支付生态系统已经100%迁移到AWS云服务。Netflix的支付架构从Netflix数据中心(DC)迁移到AWS云服务只是Netflix入云之旅中的一部分。“关于具体的Netflix迁移到AWS云服务的目的和方向”可参见以前的文章。

对于一家公司来说,支付是其的金融生命线。同时也折射出公司对顾客的态度。好的用户体验是Netflix核心价值观之一。支付的天性是直接影响会员和Netflix的财务关系,所以这种支付系统的迁移要尽可能优雅地完成。首要目标是建立一个安全、弹性和细粒度的迁移到云服务上的方案,而且不能影响用户体验。

本文讨论Netflix从数据中心(DC)迁移复杂的支付生态系统到AWS云服务的方法。

支付系统架构

支付架构是负责管理Netflix会员支付状态的。这包括跟踪打开/付费付费周期,会员账号信用卡数量,会员付费状态,付费初始化请求,会员付费的日期。除此之外,付费数据需要灌入金融系统来计算Netflix公司账户的财报和税费报告。为了完成这些工作,支付开发的工程师需要做到以下几点:

支付原有生态系统结合Netflix数据中心(DC)和云服务。更高层次上来说,Netflix预迁移的架构抽象如下:

考虑到和Oracle交互的代码和数据太多,Netflix接下来的目标是分解原有基于Oracle的臃肿方案为微服务架构。一些API需要跨区域和高可用。所以Netflix决定把数据分割成多数据存储。用户数据迁移到Cassandra存储。Netflix的付费数据处理需要支持ACID事物,因此所有相关的数据迁移到MySQL。下面的架构图是迁移之后的架构:

面临的挑战

前面提到的庞大的迁移任务是非常大的挑战。

解决方案

Netflix采用如下简单的原则来辅助定义前进的路程:

构建工具是弹性的和一致的:迁移应用的目标是增量无宕机。Netflix工程师通过构建代理,然后将数据管道重定向回数据中心(DC)。这会保持应用一直在读取DC,并不会因为改变而受到影响,一直到数据迁移完再处理应用。

构建工具需支持具备SQX的支付云架构。为了符合SQX,需要规避开发者行为的异常和审核。

云发布工具Spinnaker能够加强细节的捕捉,比如软件发布和管道事件的日志记录到Chronos以及大数据平台的审计。更进一步,Cassandra客户端需要加强认证和审计。Netflix使用Atlas开发新警报系统来监控云服务上的应用和数据。

为了帮助数据分析团队,开发了一个比较器来排除Cassandra数据库存储与Oracle中数据的异同。使用Netflix大数据平台来获取发布事件,使用sqoop从Oracle数据库和Cassandra集群迁移数据到Hive。写Hive查询和MapReduce作业来生成报告并做成仪表板展示。

拿干净、有限的数据集先测试:Netflix新开拓了一些国家市场,这带来了巨大的挑战,同时也为测试支付云架构提供了新的、干净的数据。所以,在云服务上搭建一套微型支付架构来测试续费批量处理,与数据中心的应用整合,完成支付工作流。一旦能够在云服务中成功处理新加入国家的数据,这将会为推广新的支付系统应用到大量原有的国家带来信心,特别是美国。

尽量减少宕机或者其它迁移的影响,保证客户体验:现有的会员数据迁移到Cassandra数据库时需要停机,同时从Oracle数据库迁移订阅数据到Cassandra云计算生态系统,为云服务上的支付API模块和续费模块服务。每个构建工具要保证处理失败后能恢复,提供会员状态管理确保迁移终止时会员数据可用。通过前面的准备,Netflix从DC的Oracle数据库中迁移成千上万行数据到AWS云服务的Cassandra中,并且对用户未产生明显的影响。

数据库迁移要按计划有序进行:数据库移动要按事先的计划操作,并对最后的结果可预见,否则会出错。保证数据库架构能够解决数据的可扩展、可使用和可靠性,制定灾难性恢复计划,尽可能减小迁移停机时间。作者决定从商业的Oracle数据库迁移到开源的MySQL数据库,其运行在Netflix管理的亚马逊弹性计算云(EC2)实例上。

订阅数据存储在Cassandra数据库。支付数据存储在RDBMS,支持ACID,可以处理付费事物。因为AWS的RDS有TB量级的限制,但Netflix有数据库超过TB限制,因此,在Netflix核心平台和数据库工程师的帮助下,Netflix使用分布式块设备复制(DRBD copy)为MySQL master构建了一个多区域、可扩展的架构,在不同的区域可以读到合适的副本。所有的ETL处理都在副本进行,为了避免Master的资源连接。数据库云工程师开发工具监控MySQL实例报警,在必要时能恢复。

思考

Netflix的支付生态系统迁移到AWS上可谓相当顺利,但现在回过头来再看,仍然有些事情可以做得更好。作者低估了自动测试的需要,并未很好的进行端对端的测试。在这些方面如果足够努力,可以更好的提高开发的速度。

迁移一些像支付这样大规模的、关键的遗留系统,需要做很多工作。迁移和简单化使Netflix获得了无数的好处。迁移之后的软件架构更加高效、更加轻便,Netflix平台服务提供的工具、警报和监控能够完全利用云服务能力。Netflix的应用能按需横向扩展,这能很好的匹配现在订阅者高速增长的趋势。

最后总结,支付系统的迁移是所有相关部门工程师共同的努力。使用AWS云服务会进一步加强Netflix的服务。

号外

2016年9月7日,AWS Summit峰会北京站在北京国际饭店会议中心召开,议题自然是干货满满,我个人十分推荐运维DevOps、云架构、行业解决方案、开发者以及大数据专场。如果你不在北京、或者你不幸错过了注册参会,点击阅读原文,InfoQ在线课堂还有来自AWS的专家讲解精彩内容等着你。

细说云计算

ID:CloudNote

(编辑:温州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!