GOPS2016 - 阿里游戏高可用架构设计实践.pptx

GOPS2016 - 阿里游戏高可用架构设计实践.pptx

  1. 1、本文档共29页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
阿里游戏高可用架构设计实践李运华 @阿里游戏目录主题主题1总体架构2HTTP-DNS3架构解耦4业务降级5异地多活6360°监控背景 - 疲于奔命的运维背景 - 疲于奔命的运维 机柜断电服务器宕机交换机宕机程序bug1个月4次大故障,运维背了好大一口锅!!!分析 – 运维太low ?分析 - 运维太low ? 运气不好?测试不足?硬件太烂?运维经验不足?流程不完善?根因分析:技术太弱根本策略:把运维的锅,让研发去背高可用目标 – 传统方法高可用目标 - 传统方法 俗称“几个9”优点:业界通用,方便对比缺点:无法直观的理解高可用目标 – 面向业务高可用目标 - 面向业务4个93分钟定位问题5分钟恢复业务2个月一次故障优点:1)聚焦于业务 2)容易分解 3)容易衡量高可用总体架构高可用架构全盘考虑1)面向业务2)立体化目录主题1总体架构2HTTP-DNS3架构解耦4业务降级5异地多活6360°监控客户端重试客户端重试让看得见炮火的前线快速做决策传统DNS问题DNS的问题DNS劫持DNS污染DNS缓存传统DNS无法满足要求HTTP-DNSHTTP-DNS优点:1)灵活; 2)快速; 3)方便客户端重试 + HTTP DNS客户端重试 + HTTP-DNS正常走传统DNS,异常走HTTP-DNS目录主题1总体架构2HTTP-DNS3架构解耦4业务降级5异地多活6360°监控业务分离业务分离根据业务优先级拆分系统,避免互相影响服务中心服务中心服务中心类似DNS,实现服务寻址和调度功能目录主题1总体架构2HTTP-DNS3架构解耦4业务降级5异地多活6360°监控业务降级业务降级柔性可用丢卒保车目录主题1总体架构2HTTP-DNS3架构解耦4业务降级5异地多活6360°监控老架构老架构存在全局单点、跨机房同步时延问题新架构新架构关键:1)业务层数据同步;2)二次读取;3)可重复生成全局唯一数据目录主题1总体架构2HTTP-DNS3架构解耦4业务降级5异地多活6360°监控立体化立体化分层监控,不留死角自动化自动化实时采集和分析,无需人工参与可视化可视化一目了然,无需太多临时分析效果效果现象原因处理请求量每5分钟飙升5倍APP日志每5分钟上报(app.android.User.reportOnlineStatus)APP修改定时机制,改为随机延迟上报FGC时间过长:2.5s,导致系统有时候进入过载保护并行垃圾回收器,中断时间较长改为CMS,中断降为200ms以内,过载保护没有了,不再丢包每天00:00机器过载APP有个日志接口(app.android.Log.statistics)每天凌晨定时上报日志APP修改为随机上报支付宝错误响应飙升支付宝断网演练无需处理新机器4倍流量,过载丢包很多新机器硬件性能很强,一开始分配了4倍的流量,但实际上应用程序并不能完全利用机器资源,导致过载修改为2倍流量,没有过载了既能够发现大问题,也能够发现隐藏的问题技术驱动关注核心设计哲学设计哲学设计哲学可量化面向业务愿景愿景运维无锅天下无贼谢谢“系统”一词,其涵义最早可追溯到柏拉图、亚里士多德(政治学)和欧几里德(《几何原本》)等。它的意思是“总体”、“群体”或“联盟”。(/wiki/%E7%B3%BB%E7%B5%B1)中国学者钱学森认为:系统是由相互作用相互依赖的若干组成部分结合而成的,具有特定功能的有机整体,而且这个有机整体又是它从属的更大系统的组成部分。(/view/25302.htm)软件框架(Software framework),通常指的是为了实现某个业界标准或完成特定基本任务的软件组件规范,也指为了实现某个软件组件规范时,提供规范所要求之基础功能的软件产品。(/wiki/%E8%BB%9F%E9%AB%94%E6%A1%86%E6%9E%B6)软件架构是一个系统的草图。软件架构描述的对象是直接构成系统的抽象组件。各个组件之间的连接则明确和相对细致地描述组件之间的通讯。在实现阶段,这些抽象组件被细化为实际的组件,比如具体某个类或者对象。在面向对象领域中,组件之间的连接通常用接口来实现。(/wiki/%E8%BD%AF%E4%BB%B6%E6%9E%B6%E6%9E%84)“系统”一词,其涵义最早可追溯到柏拉图、亚里士多德(政治学)和欧几里德(《几何原本》)等。它的意思是“总体”、“群体”或“联盟”。(/wiki/%E7%B3%BB%E7%B5%B1)中国学者钱学森认为:系统是由相互作用相互依赖的若干组成部分结合而成的,具有特定功能的有机整体,而且这个有机整体又是它从属的更大系统的组成部分。(/view/25302.htm)软件框架(Software framework),通常指的是为了实现某个业界标准或完成特定基本任务的软件组件规范,也指为了实现某个

文档评论(0)

喜宝 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档