以更优雅的方式实现弹性架构

本文涉及的产品
传统型负载均衡 CLB,每月750个小时 15LCU
资源编排,不限时长
网络型负载均衡 NLB,每月750个小时 15LCU
简介:

为什么弹性架构是重要的

        谈到IT系统架构,我们经常会用建筑架构来做类比,事实上,Architecture这个词也正是来自于传统的建筑行业。系统架构图就像建筑设计图一样,用来指导软件构建。同时,两者之间也存在一个巨大的不同,建筑物追求的是屹立千百年不变,而IT系统追求的是灵活性,以便随时应对真实世界的业务变化。从这个角度来看,IT系统更像一个有机的生命体,需要不停的改变自己去适应外界变化,才能让自身更有生命力。系统压力是一个重要的变化维度,是否能够随着系统压力的增减而动态的调整系统的某一部分体现了架构是否具有足够的弹性。

        水平扩展能力,是互联网架构重要的弹性表现。当系统面对增加的用户和访问量时,是否能够快速进行水平扩展,往往决定了互联网应用的生死。另一方面,当访问量回落后,是否能够释放掉资源以节约成本会变成核心竞争力之一。根据扩展的粒度不同,这种扩展可能是机器或组件粒度的,比如增加或减少云服务器的数量,也可能是整体架构粒度的,比如在线游戏开新服,就需要复制整个系统。

        实现弹性架构有很多方法,重要的问题是,如何更优雅的让系统具备弹性?让IT系统应对变化时能够快速、可靠和自动化?

实现弹性架构的基本原则

数据化运维

        让系统具备弹性的目的是为了应对业务变化,而感知变化是首要的事情。这就需要系统能够具备数据化的运维能力,从收集系统运行数据,到最终根据数据做出是否需要触发弹性变化的判断。

按需获取资源

        系统的弹性变化最终会落到对资源的调整上,可能是流量增加时增加云服务器,流量减少时减少云服务器。这就需要系统能够随时根据需要获取和释放计算资源。

可复制和可维护

        系统的弹性变化是随时都有可能发生的,所以弹出来的部分一定是被内置到系统内部的,是可以无限次被执行的。同时,又能够很好的被开发人员维护,以代码的形式成为系统的一部分,可以被修改、测试、追踪版本等。

自动化

        自动化是减少系统错误的重要手段,所以以上原则都需要能够自动化执行。

在阿里云上实现弹性架构的实践

        基于阿里云提供的运维管理服务,我们可以很容易的实现弹性架构。其中最重要的两个服务是云监控和资源编排。

        云监控(CloudMonitor)可用于收集阿里云资源的监控指标,探测服务可用性,并针对指标设置报警。通过OpenAPI,可以实时获取系统的运行状况,用来作为弹性变化的触发依据。

        资源编排服务(ROS),提供了通过模板管理云资源的能力,用户可以在JSON格式的模板文件中,描述系统的资源和配置,ROS会根据用户的模板,创建和释放资源,并对资源、软件做指定的配置。模板是一种描述性的文本文件,可以像代码一样被编辑、测试和版本控制。通过模板,我们可以把弹性变化的部分进行完整的定义,并且可以被无限次的重复执行。同时,ROS是一种无需人工值守的完全自动化服务。通过ROS提供的OpenAPI和CLI工具,结合云监控的数据,可以把弹性变化整合成自动的机制,让系统拥有完全的弹性能力。

        下面用一个例子来介绍如何基于阿里云提供的服务来构建弹性架构。架构如下图:
web_scale_1

        这是一个非常典型的基于阿里云的Web系统。系统通过ECS提供Web服务,通过RDS来做数据持久化存储,通过SLB来做访问负载均衡。我们要解决的问题是,如何才能让系统具有弹性,以应对可能出现的访问量暴增。一个直观可行的思路就是,直接增加ECS服务器的数量。但是这涉及到一些复杂而琐碎的事情。比如创建ECS实例、初始化系统、安装软件、把ECS实例挂在到SLB,当流量回落以后把增加的ECS从SLB摘除并释放实例。

        我们的目标是更优雅的实现弹性架构,也就是要让架构符合之前所说的原则。通过云监控和资源编排,可以很容易做到这一点。云监控可以在控制台直观的配置。我们重点来看看资源编排(ROS)的角色。ROS通过模板创建一批资源,这些资源被成为资源栈(Stack)。所以,当通过ROS来为系统弹出资源以后,系统会变成下图所示:

web_scale_2

        依据监控数据,我们通过ROS创建了一个资源栈,其中包含3台按量付费的ECS实例,根据我们在模板中的定义,ROS会在这些实力中安装我们的业务软件,这些软件会访问系统已存在的RDS存取数据。当ECS实例启动后,ROS把这些机器加入到SLB,新的访问就会被分发到这些新增加的ECS上。

        当访问量回落后,我们通过ROS销毁这个资源栈,ROS会首先把ECS从SLB中摘除,这样新的访问就回到了最开始的ECS上,ROS接着把ECS删除。整个过程不会对用户访问产生影响,系统又回到了最开始的状态。

        上面所有的事情都是自动进行的,我们把弹出的内容用ROS的模板进行了定义,其中描述了所有关于ECS创建、软件安装、SLB挂载的细节。因为模板是可以被像代码一样管理的,所以我们弹出的内容是经过了严格测试的,并且能够跟踪回溯版本。

        ROS的模板是申明式的JSON文件,所以我们只需要在里面描述清楚我们希望系统达到的状态,而不需要关注如何实现。这个模板文件里的主要部分(需要根据实际情况修改):

{
    "ROSTemplateFormatVersion": "2015-09-01",
    "Resources": {
        "newEcsInstances": {
            "Type": "ALIYUN::ECS::InstanceGroup",
            "ImageId": "m-25xovkjg5",
            "InstanceType": "ecs.s2.large",
            "MinAmount": 1,
            "MaxAmount": 3,
            "SecurityGroup": "sg-25f9isr5m",
            "VpcId": "vpc-bp168go6c51f16786k9dl",
            "VSwitch": "vsw-bp1r47wdty5ecx4e82j9qaa"
        },
        "backendServerAttachment": {
            "Type": "ALIYUN::SLB::BackendServerAttachment",
            "Properties": {
                "LoadBalancerId": "15187200816-cn-beijing-btc-a01",
                "BackendServerList": {
                    "Fn::GetAtt": [
                        "newEcsInstances",
                        "InstanceIds"
                    ]
                }
            }
        }
    }
}

        上面的例子稍显简单,其实,阿里云的资源编排服务基本实现了对所有阿里云服务的支持,更有像实例克隆、资源栈更新这样的高级特性,我们可以在一个模板中描述包含大量资源的复杂架构。

总结

        我们在上面介绍了弹性架构的重要性和基本原则,并结合阿里云的云监控和资源编排服务,介绍了如何在阿里云上实现弹性架构。随着我们的系统与云计算结合的越来越密切,弹性架构已经成为使用云计算的标准能力,同时也是系统的核心竞争力之一。构建更加优雅的弹性架构,不仅需要我们具备理论,也要能够熟练的整合云计算资源和服务。

相关实践学习
基于云监控实现的监控系统
通过阿里云云监控功能给非阿里云主机安装监控插件,从而实现对非阿里云主机的各项指标进行监控和管理,在配置报警规则和报警人的情况下,能对特定的场景做出报警反应通知到报警人的手机上。
目录
相关文章
|
负载均衡 Cloud Native 数据库
构建高可用的云原生微服务架构:实现弹性和可扩展性
随着云计算技术的快速发展,云原生微服务架构成为了现代应用开发领域中的一种重要范式。它通过利用云服务提供的弹性和可扩展性,为企业构建高可用的、面向未来的应用程序。本文将探讨云原生微服务的概念、核心原则以及一些关键技术,帮助您设计和构建具有弹性和可伸缩性的架构。
1140 1
|
存储 人工智能 分布式计算
2021云栖大会丨阿里云发布第四代神龙架构,提供业界首个大规模弹性RDMA加速能力
10月20日,2021年杭州云栖大会上,阿里云发布第四代神龙架构,升级至全新的eRMDA网络架构,是业界首个大规模弹性RDMA加速能力。
2021云栖大会丨阿里云发布第四代神龙架构,提供业界首个大规模弹性RDMA加速能力
|
7月前
|
存储 分布式计算 分布式数据库
【专栏】云计算与分布式系统架构在数字化时代的关键作用。云计算,凭借弹性、可扩展性和高可用性,提供便捷的计算环境
【4月更文挑战第27天】本文探讨了云计算与分布式系统架构在数字化时代的关键作用。云计算,凭借弹性、可扩展性和高可用性,提供便捷的计算环境;分布式系统架构则通过多计算机协同工作,实现任务并行和容错。两者相互依存,共同推动企业数字化转型、科技创新、公共服务升级及数字经济发展。虚拟化、分布式存储和计算、网络技术是其核心技术。未来,深化研究与应用这些技术将促进数字化时代的持续进步。
221 4
|
5月前
|
存储 设计模式 监控
探索微服务架构的弹性设计
【7月更文挑战第23天】在现代软件开发中,微服务架构因其灵活性和可扩展性而受到青睐。然而,随之而来的挑战是如何确保系统在面对故障时能够持续运行。本文将深入探讨如何通过弹性设计原则和实践来增强微服务架构的韧性,包括冗余、服务降级、超时控制等策略,并结合实例分析其应用。
|
5月前
|
设计模式 监控 Java
探索微服务架构的弹性设计模式
【7月更文挑战第19天】在现代后端开发中,微服务架构因其灵活性、可扩展性而受到企业的青睐。本文将深入探讨微服务架构中的弹性设计模式,包括其定义、重要性以及如何通过技术手段实现服务的高可用性和容错性。我们将通过实例分析,展示如何在微服务系统中应用这些模式以提高系统的整体稳定性和响应能力。
65 1
|
7月前
|
消息中间件 监控 中间件
探索微服务架构下的系统弹性设计
【4月更文挑战第26天】 在当今快速迭代和持续部署的软件发展环境中,系统的弹性设计成为维护高可用性和稳定性的关键因素。本文将深入探讨在微服务架构下如何实现系统弹性,包括识别潜在的故障点、设计容错机制、以及通过实践案例分析提升系统整体的韧性。我们将讨论一系列策略,如服务降级、超时管理、重试策略、断路器模式等,旨在为开发者提供一套实用的系统弹性设计方案。
|
7月前
|
敏捷开发 缓存 算法
探索微服务架构下的弹性设计
【2月更文挑战第30天】 随着现代软件系统对可靠性和可扩展性的要求日益增长,传统的单体应用架构已难以满足快速变化的业务需求。本文聚焦于微服务架构下如何实现系统的弹性设计,旨在探讨一系列策略与实践,以提升分布式系统在面对故障和负载波动时的稳健性。通过深入分析微服务环境中的常见挑战,文章提出了一套综合解决方案,包括容错机制、服务降级、超时控制以及重试策略等,并通过案例分析阐述这些策略的具体应用及其对系统整体弹性的影响。
|
7月前
|
人工智能 运维 架构师
数美科技首席架构师陈建:基于云上弹性的高可用实时风控架构实践
2023年10月31日-11月2日,2023云栖大会在中国杭州·云栖小镇举行,北京数美时代科技有限公司首席架构师陈建在【CloudOps云上运维专场】发表了题为《基于云上弹性的高可用实时风控架构实践》的主题演讲,从在线实时风控架构及高可用解决方案等方向做了分享。
|
机器学习/深度学习 弹性计算 编解码
阿里云服务器架构弹性裸金属和超级计算集群有什么区别?
阿里云服务器架构弹性裸金属和超级计算集群有什么区别?
201 1
|
机器学习/深度学习 弹性计算 编解码
阿里云服务器架构X86计算、异构计算、弹性裸金属、超级计算集群架构适用场景介绍
阿里云服务器架构x86计算、异构计算、弹性裸金属、超级计算集群架构适用场景介绍,阿里云服务器架构有什么区别?X86计算、ARM计算、GPU/FPGA/ASIC、弹性裸金属服务器、超级计算集群有什么区别?阿里云服务器网分享云服务器ECS架构详细说明
257 0

热门文章

最新文章