绿洲游戏首席技术官 张旻皓 - 如何利用 AWS 搭建跨地区应用

2020-02-27 423浏览

  • 1.如何使用AWS构建跨地区的应用体验 张旻皓 绿洲游戏
  • 2.
  • 3.背景介绍 中国顶尖的海外游戏发行公司 • 多年互联网、游戏、电信行业经验 • 敏捷导师 • packagist开源社区活跃贡献者
  • 4.3个级别的AWS使用程度 基础设施替换 • 云主机:EC2 • 私有云:VPC • DNS:Route53 外层服务使用 • 负载均衡:ELB • 安全策略:WAF • 内容加速:CloudFront • 通知:SNS 托管的第三方服务 • 数据库:RDS • 缓存:ElastiCache • 搜索:ElasticSearch • 运维:OpsWorks 将AWS引入工作流 • S3 • DynamoDB • SQS • Redshift • Lambda • Kinesis • Rekognition • ……
  • 5.案例分析 我们是如何通过AWS重构一款跨地区的支付应用
  • 6.绿洲游戏支付平台 - v1.x(旧) 管理后台 支付页面 美东机房
  • 7.业务快速增长 订单量(百万) 120 100 80 60 40 20 0 2013 2014 2015 2016-7月
  • 8.旧系统问题 扩容决策 切片重构 体验抱怨 数据备份
  • 9.算力堆砌的浪费 预留算力
  • 10.旧系统总结 优化方案(已尝试): 待解决问题: • SQL优化 • MySQL参数调优 • 用RDS替换自部署 • 纵向扩容(升级) • 切割冷热数据 • 地理延迟(北京 - 美东,玩家 - 美东) • 扩展性 • 算力浪费
  • 11.深入分析 第一步:从架构层解决地理延迟 问题: • 地理延迟 • 扩展性 • 算力浪费
  • 12.新系统架构推导 支付页面 管理后台 管理后台跨区域互备支付页面 支付页面 支付页面 亚洲区美域东机房海外区域 支付页面 ✓
  • 13.深入分析 MySQL的替代品 问题: • 地理延迟 • 扩展性 • 算力浪费 • 跨区域互备
  • 14.数据类型分析 量级: 类别: 北京节点: 海外节点: 配置数据 小,几乎不增长 一些 读写 只读 用户生成数据(UGD) 大,持续增长 少量 只读 读写
  • 15.RDBMS - 我们是否需要那个R • 扩展性问题的根源: • 海外节点的读写请求 • UGD,用户数据的增长 • 关系约束: • UGD:无 • 配置:有、弱 • 事务保护: • 数据一致性要求强 • 分析查询: • SQL:需要 • 关系:不需要 试一试 DynamoDB
  • 16.简介DynamoDB • Key-Value数据库(支持Document) • 高灵活性:按照访问量阈值和数据量计费,实时更改需求 • 高可靠性:至少3份备份,跨越不同AZ • 高扩展性: • 永远常量级别的访问速度 • 可实时调整访问量阈值 • 全自动横向扩容 • 易维护:全托管服务,集成CloudWatch提供全面监控报警 • 不可以使用SQL进行数据分析 • 不支持事务 ✓ ✓
  • 17.重构时刻 决定: 进一步行动点: • 迁移UGD到DynamoDB • 将配置数据留在MySQL(RDS) • 利用AWS RDS完成配置数据的跨区域复 制 • 实现DyanmoDB的跨区互备 • 实现数据一致性约束(事务处理) • 检视分析查询场景
  • 18.深入分析 DynamoDB的跨区域互备 问题: • 地理延迟 • 扩展性 • 算力浪费 • 跨区域互备 • 数据一致性 • 查询场景
  • 19.实现DynamoDB的数据镜像 - 发现 源表 AWS Lambda DynamoDB Stream 微服务:改动检测 S3 SNS广播
  • 20.实现DynamoDB的数据镜像 - 执行 SNS广播 SQS 区域A 区域B AWS Lambda 微服务:导入 目标表
  • 21.跨区域复制的核心功能 SNS + SQS自动实现 SNS:通知服务 • 自动扩展 • 至少一次送达的保证 • 支持HTTP、Email、SQS等多种方式 SQS:队列服务 • 自动扩展 • 每条消息至少被接收一次 • FIFO possible ✓ Email SNS SQS HTTP Mobile Phones
  • 22.深入分析 数据一致性与查询场景 问题: • 地理延迟 • 扩展性 • 算力浪费 • 跨区域互备 • 数据一致性 • 查询场景
  • 23.DynamoDB的数据一致性 • 读: • 使用Consistent-Read标志,保证读到最新的数据改动 • 写: • 增加“version”字段 • 每次修改均使用条件表达式,在条件表达式中判断“version” ✓
  • 24.数据分析的选择:Redshift • DynamoDB的缺点: • 可查询,但不支持SQL • 非常有限的索引 • 简介AWS Redshift: • 专为大数据(PB级)分析而生的列式数据库 • 无需设计复杂索引 • 高性能: • GB级:秒级 • TB级:分钟级 • PB级:分钟级(在增大配置情况下) • 兼容PostgreSQL • 无关系约束 导出 DynamoDB Redshift ✓
  • 25.深入分析 使用AWS的成本影响 问题: • 地理延迟 • 扩展性 • 算力浪费 • 跨区域互备 • 数据一致性 • 查询场景
  • 26.算力浪费的解决
  • 27.成本分析 增加开支: 节约开支: • AWS EC2、RDS等的单价在市场没有较强 竞争力 • 动态调整算力用量可至少节约30%-40% 算力(=成本) • 针对长期使用的服务(算力中的底线 值)购买预留实例可以有效降低成本 (40%) • 全托管服务带来的运维成本节约 • 引入AWS服务重构你的软件,在生产力 上更可以获得极大提升
  • 28.总结 • 使用AWS的3个级别 • 案例分析:用DyanmoDB替代RDBMS • DyanmoDB跨区域互备:SNS + SQS • 使用Redshift进行大数据分析 • 成本节约
  • 29.张旻皓 minhao.zhang@oasgames.com