《阿里游戏高可用架构设计实践》读后感

  【转】文章地址:https://mp.weixin.qq.com/s/iTtpa2zUpboKum6xfgXwQQ【该文章为李运华老师的演讲《阿里游戏高可用架构设计实践》文章】数据库

   李运华老师将演讲文章内容提炼出一句精华之语:“把运维的锅让研发去背!”即高可用的系统是设计出来的,不是靠运维保障出来的!后端

  在不少时候,系统发生了故障,如机柜断电、交换机断机、服务器断机、程序Bug等故障,你们认为硬件设备的问题就跟研发组的同鞋没有关系,但事实真的如此吗?通过深刻的讨论和分析,最后得出根本缘由仍是系统设计方案有问题,即技术上是比较弱的。获得根本缘由后解决策略就比较容易看出,即“把运维的锅让研发去背!”,由此,能够肯定一个目标:高可用性便是指几个九,是99%仍是99.9%仍是99.99%仍是99.999%等等,这个指标的优势的是业界通用,可是除了技术人员,其余的同窗不是很能理解这个指标。因此又制定了另外一个目标:3分钟来定位问题,5分钟能恢复业务,并且问题的发生频率不能过高。这个目标的优势是聚焦业务、容易分解(首先要定位问题,其次是恢复业务,再次是故障的频率不能过高)、容易衡量(再作方案的时候,不少方案只要拿这个标准一套,基本上就可以判断这个方案是否可行)。缓存

  高可用性总体架构能够分为用户层、网络层、服务层、运维层四层。服务器

  用户层包括客户端重试,若是遇到后端故障,最快的、对用户影响最小的解决方式是马上去重试,服务器1有故障的话,咱们从新发一个请求到服务器2,就可以正确处理业务。重试有一个关键点须要特别注意,重试的时候必须保证这个请求不要再发到原来有问题的服务器上面,不然这个重试只是浪费时间。网络

  网络层包括HTTP-DNS,即域名和服务器的对应关系,它有三个优势:①灵活。能够基于本身的业务特色作不少个性化的东西。②快速。由于它不存在缓存的问题,一旦运维人员甚至是测试同窗把这个服务器下掉后,用户这个请求可以马上拿到最新的结果,避免重复返回到原来有故障的机器。③方便。这个系统是运营商本身维护的,想作什么样的操做均可以,若是是公共的DNS那没法实现这个效果。架构

  服务层包括架构解耦、业务降级、异地多活,架构解耦包括业务分离和服务中心,业务分离即把系统中的功能分开,由于对于游戏玩家来讲,只有登陆注册是强相关的,业务分离就是把核心业务和非核心业务拆分到不一样系统中,调用时经过接口访问;服务中心相似于DNS,是实现整个内部系统之间服务调用时候的调度功能。业务分离将核心业务和非核心业务分开后,可能会出现一些极端状况,好比非核心业务启动不了了,或者数据库崩了,它就会影响核心业务。可是,在这种比较极端的状况下,咱们能够经过人工的方式下发降级指令,把这个非核心业务系统的功能给停掉,这个停掉并非把程序停掉,而是说把其中的一个接口或者url停掉,核心系统去访问的时候就获得一个500或者503错误。异地多活的优势有业务层数据业务、二次读取、可重复生成惟一数据。运维

  360°监控总体方案从上到下分为五层:业务层、应用服务层、接口调用层、基础组件层、基础设施层。业务层就是业务上的打点,根据这些打点进行机型统计或者分析;应用服务层就是url的一个访问状况;接口调用层就是系统对外部依赖的那些接口的访问状况;基础组件层即便用的一些组件,包括MySQL等;基础设施层就是最底层的设备,包括操做系统、网络、磁盘、IO这些设备。测试

  通过这些技术的修改,大大提升了系统的可用性,虽然设备仍是会出现故障,可是系统对这些故障的处理很及时,最重要的是不影响用户的使用。url

相关文章
相关标签/搜索