时间:2023-03-13 03:22:01 | 来源:电子商务
时间:2023-03-13 03:22:01 来源:电子商务
集成化的服务(部署、维护、升级、兼容性管理、服务目录等);
l一体化开发+运维(DevOps)、持续集成、持续部署(CI/CD)。
提供资源所需的时间(Provisioning Time)。云的性能评测(Performance Benchmark)可以从多个维度展开:
提供可伸缩资源的全面性—左右水平、上下垂直、计算、网络、存储、服务及应用等。
对于弹性资源的监控粒度。传统的监控方式的颗粒度是基于物理机或虚拟机的资源组件(如Nagios、Ganglia等),但是在云计算框架下对于一个可能跨越了多个物理机、虚机或容器的应用或服务而言,对其监控的复杂度大增,需要在对整个应用或服务的各项指标做综合甚至是加权计算后呈现给用户。
资源供应的准确性,避免过度供应(Over-Provisioning)或供应不足(Under- Provisioning)。
传统指标的评测:CPU/VCPU、网络、磁盘吞吐率指标。谈到云的性能,其核心就是云上工作负载的性能,在这里,我们需要引入和澄清一个重要的概念:云本地应用、云原生应用(Cloud Native Application,CNA)。并非所有的应用都是为云而生的,传统应用的一个重要特点是Monolithic (独立性、封闭性),而在云基础架构上运行应用分为两类:传统应用的云化迁移与创建云本地应用。传统应用通常对底层硬件有很多需求,因此迁移并非是像搬箱子(Lift-n-Move)那么简单的事情,通常需要对其进行虚拟机或容器封装(有些甚至需要在符合规格的裸机上直接运行才能保证效率,如大数据类应用),并且这些传统应用很难进行弹性扩展,如此一来它们的云化迁移更多的是为了云化而云化。
云化工作负载(Workloads)性能评测:如数据库、大数据或某个具体应用的性能(吞吐率、启动速度等)评测。
其他功能的支持及指标:如是否支持实时的块数据复制(SAN Replication)、系统的IOPS(每秒读写操作次数)、对传统应用向云迁移的支持、云内及跨云数据迁移速度等。
MSA是云本地应用的最重要的特点,它源自于SOA(Service Oriented Architecture,面向服务的架构),可以认为是SOA整体框架中的一部分,在云化的过程中逐渐演变为各个云组件之间通过可独立部署的服务接口来实现通信。图1-39形象地展示了传统独立应用与微服务架构应用间的差异。独立应用是一个“大包大揽”的整体,每一个应用进程(Process)会把多个功能集成在一起,独立应用的扩展也是以应用进程为单位扩展到多台主机上;而微服务的最大区别在于把每一个功能元素作为一个独立的服务,这些服务可以部署在不同的主机上,每个服务只要保证通信接口不变,它们可以各自独立进化。从DevOps的角度出发,MSA架构也具有非常明显的优势——一个服务的故障不至于会导致整个应用下线,而在独立应用架构中,任何一个单一功能的维护、升级都要求整个应用进程下线、重启……(2)云应用12要素:
然而,一味鼓吹MSA的以上的优势,并不等于MSA可以通吃,或者说毫无缺点可言,在HPC(高性能计算)的很多场景中,关注每一微秒的吞吐率、时耗的时候,MSA平日里灵活、健壮的优势就无法体现了,相对而言,更紧耦合的系统(例如更少的网络层数据交换)的性能可能会更好。
12-Factor Application(云应用12要素)是业界被广泛引用的CNA类型应用的通用特点,由Adam Wiggins在2012年提出10。他总结了CNA的12要素:单代码库多次部署、明确定义依赖关系、在环境中存储配置、后端服务作为附加资源、建设发布及上线运行分段、以无状态进程来运行应用、通过端口绑定来暴露服务、通过进程模型扩展来实现并发、通过快速启动与优雅终止来实现最大化健壮性、开发环境=线上环境、日志=事件流、后台管理任务=一次性进程。以上12要素在业界被广泛引用,有些人甚至称之为建设与运行云应用最佳实践的金标准。(3)自服务敏捷基础架构:
自服务敏捷基础架构(Self-Service Agile Infrastructure)的概念最早由笔者的同事Matt Stine在他2015年的Migrating to Cloud-Native Application Architectures11一书中提出,自服务敏捷架构的另一个叫法是PaaS(平台即服务),它帮助程序员完成四件事情:
· 自动化、按需的应用实例伸缩(Automated & On-demand Scaling);
· 应用程序健康管理(Health Management);
· 对应用实例访问的自动路由与负载均衡(Routing&Load-Balancing);
· 对日志与度量数据的集结(Aggregation)。
面向API的协作模式是在完成向微服务架构、12要素应用建设、自服务敏捷基础架构三大模式转变过程中必然出现的新型协同工作模式。传统的协同开发模式是基于应用部件间的方法调用(Method Calls),而在云架构中,更多的是通过调用某种APIs的方式来实现组件间的通信,而API版本之间的兼容关系通过版本号来定义与协调,REST APIs12就是一种非常流行的方式——它也是整个WWW的软件架构标志性风格——无独有偶,REST的作者Roy Fielding在他的博士答辩论文中对RESTful API进行了定义,而他同时也是HTTP/1.113的主要作者。REST与HTTP之间有如此千丝万缕的联系,以至于很多人将二者混为一谈,在这里需要做一下简单的澄清,区别如下:(5)面向故障:
· HTTP是传输层协议;REST是一组架构约束条件(Constraints),它可以使用HTTP或任意其他传输层协议来实现。
· HTTP API与REST API间存在本质区别。任何使用HTTP作为传输层协议的API,如SOAP,都是HTTP API,而REST API则遵循REST的约束条件,它更多的是一种围绕资源的设计风格而不是标准。
面向故障(Anti-fragile-Design for Failure)是云计算弹性与敏捷性的终极体现,在遵循微服务架构、12要素、自服务、面向API的设计原则下,云本地应用可以做到零下线时间,也就是说在故障甚至灾难发生时系统有足够的冗余来确保服务保持在线。业界最著名的面向故障的实践案例是Netflix工程师为了测试他们在亚马逊AWS上的服务的健壮性而开发的一套叫作Chaos Monkey14的开源软件——它会发现并随机终止系统中的云服务,以此来测试系统的自我恢复能力。
·过度部署(Over-Provisioning);另外,当公有云的成本达到一定阶段或某些任务无法在现有云服务目录中得到满足(老孙与同事做过一些市场调查,发现很多企业把每年100万美元在公有云上的消费作为一条警戒线,一旦达到或超过就会开始把部分业务向私有云环境迁移。
·缺少实时审计(Auditing)导致的空转与浪费;
·存储浪费(不同热度的数据访问代价差异巨大);
·一切免费都是有代价的(互联网推广本性所致);
·复杂的计费方式;
·进场免费离场代价高昂(数据迁移高代价);
·高昂的故障修复成本;
·不可定制。
关键词: