?

服务部署如何做到高可用?这份“三级跳”秘籍送给你

 高可用部署要求

服务部署如何做到高可用?这份“三级跳”秘籍送给你

图1 高可用部署

(*注:随着服务满足高可用要求的增多,服务的高可用能力就越强)

一致性

这里的一致性指的是模块依赖的方方面面,包括但不限于硬件规格和配置、操作系统、基础软件、系统参数,还包括模块自身的相关信息,如配置文件、版本、上下游依赖组件等的一致性。

可以通过配置管理工具(如Puppet)进行管理和周期性维护,确保配置始终如一。列举一些不一致的问题,如CPU是否开启超线程、内存是否关闭SWAP、操作系统版本、JDK版本、内核各种参数、文件系统类型以及模块的配置等等,这些均可能对服务可用性造成严重影响,并带来极大的问题定位成本。

消除单点

单点有两种场景:一种是某个模块仅部署了一个实例;第二种是某个模块虽然部署了多个实例,但任意实例故障都会导致服务整体或者大面积不可用。

如何识别系统单点?通过排查模块的实例数量和进行破坏性测试来发现系统中是否存在单点。对于已知的单点,则应该尽量做好预案,减少故障时长。

置放群组

要理解置放群组首先要理解故障域(Fault Domain)的概念。故障域指单个机房内由交换机或电源设备所造成故障的最大影响范围,通常为一个或一组机架。同一模块需要尽可能的分散部署在不同的故障域中,避免由单一故障域异常而导致模块整体不可用。

公有云下的置放群组就是为了提高业务的高可用性,在创建时将实例以某种策略强制打散,以降低底层硬件/软件故障给业务带来的影响。

举例来说,一个模块的所有实例绝不应该部署在同一个接入交换机下,因为一旦这个接入交换机故障,就会导致该模块整体故障,而一个机房内,有大量的接入交换机,是完全可以避免这种悲剧的。

流量隔离

流量隔离是搭建多套同质集群根据流量的属性进行分而治之的管理。常见的隔离策略主要基于流量的来源、重要性和资源消耗进行隔离。举例来说:

基于地域分为华北、华中、华南区域的用户

基于硬件类型分为PC、APP等

基于重要性分为VIP用户和普通用户

基于资源消耗分为报表请求和用户请求

同城双活

同城双活即多AZ部署。同城机房之间延迟很低,一般ping延迟在5ms以内。同城的AZ间,基于网络,供电等的物理隔离,因此能够避免单个机房故障导致的服务中断。同城双活是建立在“系统消除单点”的前提下。多AZ间,服务请求应该尽量在一个AZ中处理完毕。

N+1冗余

服务可以根据同城机房数量进行多AZ部署。N+1中的“N”指的是处理请求所需要的资源容量,“1”指的是防止机房故障所做的资源冗余。因此,N+1中的所有机房应该具备同等的请求处理能力,从而避免某机房故障后,其余机房无法处理所需请求。N+1会导致一定的资源冗余,合理设置N的数量能够减少成本。举例来说,2机房的冗余度就是50%,而5机房的冗余度仅为20%。

异地多活

异地多活是保证服务高可用的高阶方法。目前国内多应用在大型互联网公司,用以防御单地域整体故障。异地多活的主要问题在于跨地域带宽、成本问题以及跨地域延时较大。举例来讲,同城的延迟一般在5ms以内,而华北到华南的延迟可以达到50ms延迟,这还是使用专线的前提下。

案例 :“Yum源服务”的高可用部署实践

Yum源服务是一种提供Centos系统的Yum仓库的下载服务。案例以此服务为例,讨论如何搭建一个高可用的Yum源服务。Yum源服务最简单的架构设计如下所示:

服务部署如何做到高可用?这份“三级跳”秘籍送给你

图2 简单服务架构

此服务由一台云主机提供,数据存储在本地,由Nginx提供下载服务。

以上架构服务完全可以实现Yum源服务的功能。但是若此架构的服务要对外提供服务会面对如下几个问题:

单机部署,服务器一旦宕机,服务就会故障;

性能瓶颈,一台机器一次处理的请求数是有上限的,服务器IO也会成为性能瓶颈。

我们需要对架构进行调整以达到高可用的服务架构。

高可用服务2.0v

高可用2.0v目的是解决上文中的问题。

首先识别服务中是否模块都支持多实例部署(消除单点):

对于Nginx模块,Nginx 是无状态的,可以进行横向扩容;

数据存储在本地磁盘也可以进行横向扩展,但是此时数据一致性将是主要问题。建议使用分布式文件系统解决数据存储一致性的问题。

服务要满足一定的并发量的要求,Nginx具有高并发的能力,并且支持横向扩展。使用分布式文件系统以达到并发量和解决数据一致性的要求。

相关推荐
新闻聚焦
猜你喜欢
热门推荐
  • 微软AI面试题有多难?这里有一份样卷

      究竟什么样的AI人才能被微软这样的巨头聘用呢?今天,文摘君就淘来了几道微软AI 面试题,同时给出了最基本的解答......

    06-25????来源:澎湃新闻网

    分享
  • 全球最聪明的大脑怎么看AI?他们预测了

      2017年AI领域取得了诸多成果。2018年AI又将何去何从?以下是来自世界顶级研究人员和行业领军人物对2018年AI领域发展作......

    02-20????来源:虎嗅网

    分享
  • 2017JavaScript框架战报 - React分战场

      我们来看看与React有关的软件包的生态系统。当Facebook构建React时,就有许多来自开源社区的第三方软件包。为提供完......

    02-27????来源:湖北新闻网

    分享
  • 小白学数据:教你用Python实现简单监督学

      监督学习作为运用最广泛的机器学习方法,一直以来都是从数据挖掘信息的重要手段。即便是在无监督学习兴起的近......

    03-05????来源:今日头条

    分享
  • 现代编程语言Swift、Kotlin等十大有趣功能

      最近学习了一些现代编程语言,比如Reason,Swift,Kotlin和Dart。这些编程语言提供了许多新功能,本文主要分享了我认......

    04-29????来源:祁东新闻网

    分享
  • 领域场景分析的6W模型

      组成场景的要素常常被称之为6W模型,即描写场景的过程必须包含Who,What,Why,Where,When与hoW这六个要素。......

    04-30????来源:砍柴网

    分享
  • 开源应用服务器WildFly 12发新季度交付模式

      WildFly 12 Final版本现在已经可以下载了,WildFly是一款灵活的开源应用服务器,支持开发人员构建轻量级应用程序。支持......

    05-10????来源:青岛新闻网

    分享
  • 基于Spring Cloud的微服务落地

      微服务架构模式的核心在于如何识别服务的边界,设计出合理的微服务。但如果要将微服务架构运用到生产项目上,......

    06-04????来源:广西新闻网

    分享
  • 为什么阿里工程师纷纷在内网晒代码?

      前阵子,在阿里一个小黑屋里,5名对代码有着极致追求的工程师参与阿里代码领域最高荣誉“多隆奖”的最终角逐。......

    06-08????来源:四川新闻网

    分享
  • 超级大汇总!200多个最好的机器学习、

      我把这篇文章分为了四个部分:机器学习,自然语言处理,python和数学。在每个部分中我都列举了一些主题,但是因......

    09-25????来源:洛阳新闻网

    分享
返回列表
Ctrl+D?将本页面保存为书签,全面了解最新资讯,方便快捷。