离开APM的弹性云还是真弹性吗
准确来说应该叫脱离业务的弹性云或者容器都是伪弹性。之所以标题中有APM一是因为它近来热门,二是因为它在我将要说的这个事情上起到关键性的作用。
不管是亚马逊的弹性云、容器方案或者国内众多云厂商在自动伸缩的时候所依据的关键指标基本都是硬件资源的利用率,当某一硬件资源利用率达到设定的阀值时会自动进行节点的水平扩展,从而达到所谓的业务服务持续可用。这样看上似乎没有什么问题,比以前的运维方式有很大的改进,从而深受众多运维人员的喜爱。
但这样的自动伸缩来保证服务其实隐含两个前置条件:
1.程序部署到这些云上之前经过充分的性能测试,保证没有软件bottleneck
2.workload基本固定,不会有过多的动态改变导致消耗resource的pattern完全不同
想象下,比如有一个应用没有经过充分的性能测试,退一万步说即使经过很多的测试,仍然有可能在线上出现软件性能问题,那么此时很可能硬件资源的resource并不会达到预定阀值,弹性云不会自动创建更多的节点来保持业务的持续性,但此时终端用户的体验已经很差了,比如响应时间长了。
又比如,在进行测试时,通常会提取先前的业务日志来构建workload模型,这样测试下来可能会做出某个决策说该应用是CPU intensive或者其他啥的。 但很多互联网业务总是在进行调整,有时甚至是营销策划活动都有可能完全改变用户的访问路径,造成workload跟预先测试的完全不一样,消耗resouce的pattern也不一样了。这还不用说很多国内test guys会follow dev们所谓的压力测试,完全就没有量化应用的性能,根据应用性能特征所设定的阀值也就是无稽之谈了。
在随着软件复杂性越来越高,软件所覆盖的场景越来越多的今天,还能满足上面这两个前置条件的应用恐怕不占多数。那么怎么样才能做到真正的弹性伸缩,也就是即使不满足这两个前置条件也能正确的自动伸缩。
前几年团购兴起的时候,经常有报道说某饭店进行团购,结果遇到集中消费,短时间内饭店的营业额是上去了,但是在人满为患的餐厅吃饭的体验想必去过的人都不想再去了,因为人多服务能力有限服务的水准自然就下降了。排队没人理,上一个菜要等半小时才上第二道,说不定因为忙菜里面还额外赠送了高蛋白食物。在服务行业领域,有很多跟服务级别水平相关的,比如酒店,从三星到七星;比如去银行办事,办完了还要给柜台服务人员打星评价。这些都是量化服务的,因为只有去量化服务才能知道服务的水平,才知道以后要不要改善服务。
在软件工程中,我们可以借助于APM来量化我们所要提供出去的服务,实时知道当前的服务水平。我很欣赏SAAS的概念,大部分软件跟普通商品和服务并没有本质上的区别,它们都是为人服务的,我们最应该考虑的是进行服务时,我们的服务水平到底怎么样,低于预期的话能不能马上更正过来。所以在能借助自动水平扩展保证服务的应用中,我们应该根据APM中的定义的SLA来进行自动伸缩,使得终端客户感知到的软件服务水平是一致的。
离开APM的弹性云还是真弹性吗的更多相关文章
- #化鲲为鹏,我有话说# 鲲鹏弹性云服务器配置 Tomcat
在鲲鹏弹性云服务器上配置 Tomcat 1 下载 Tomcat 地址 :http://tomcat.apache.org/ 根据需要选择版本,这里使用 Tomcat 9,下载压缩包 2 将文件发送到服 ...
- 阿里云专有网络与弹性公网IP
阿里云服务器经典网络和专有网络究竟有什么区别? 在用户提交订单购买阿里云ECS云服务器时,会面临怎样选择网络类型的烦恼,阿里云服务器定制购买时,网络类型里的经典网络和专有网络(VPC)是什么含义,该怎 ...
- 【小技巧解决大问题】使用 frp 突破阿里云主机无弹性公网 IP 不能用作 Web 服务器的限制
背景 今年 8 月份左右,打折价买了一个阿里云主机,比平常便宜了 2000 多块.买了之后,本想作为一个博客网站的,毕竟国内的服务器访问肯定快一些.满心欢喜的下单之后,却发现 http 服务,外网怎么 ...
- 云技术:弹性计算ECS
云计算(Cloud Computing)被业界看作继大型计算机.个人计算机.互联网之后的第四次IT产业革命,正日益成为未来互联网与移动技术相结合的一种新兴计算模式.云计算提供了IT基础设施和平台服务的 ...
- 云原生的弹性 AI 训练系列之一:基于 AllReduce 的弹性分布式训练实践
引言 随着模型规模和数据量的不断增大,分布式训练已经成为了工业界主流的 AI 模型训练方式.基于 Kubernetes 的 Kubeflow 项目,能够很好地承载分布式训练的工作负载,业已成为了云原生 ...
- 云原生的弹性 AI 训练系列之二:PyTorch 1.9.0 弹性分布式训练的设计与实现
背景 机器学习工作负载与传统的工作负载相比,一个比较显著的特点是对 GPU 的需求旺盛.在之前的文章中介绍过(https://mp.weixin.qq.com/s/Nasm-cXLtJObjLwLQH ...
- 云原生的弹性 AI 训练系列之三:借助弹性伸缩的 Jupyter Notebook,大幅提高 GPU 利用率
Jupyter Notebooks 在 Kubernetes 上部署往往需要绑定一张 GPU,而大多数时候 GPU 并没有被使用,因此利用率低下.为了解决这一问题,我们开源了 elastic-jupy ...
- CSS3总结五:弹性盒子(flex)、弹性盒子布局
弹性盒子容器的属性与应用 display:flex/inline-flex flex-direction flex-wrap justify-content align-items align-con ...
- EBS描述性弹性域及键弹性域总结
一.描述性弹性域 前言介绍: 描述性弹性域的实质就是系统预留自定字段,系统可以使用说明性弹性域来获取业务所特有的重要附加信息.系统可能自定义说明性弹性域,以显示存储更多信息的字段,提供一套完整的“自定 ...
随机推荐
- c#-关于自动属性的思考
参考:c#-关于自动属性的思考 我的理解:自动属性跟 公有字段 一模一样,编程习惯而已.目前是这么认为的. 自动属性:public string Name{ get; set } 公有字段:pub ...
- 蒟蒻的HNOI2017滚粗记
蒟蒻的第一次省选,然而并没有RP爆发... Day 1: 8:00开考,(然而密码错误是什么鬼).跌跌撞撞,8:40终于拿到纸质试题. { T1:作为一名没有学过Splay的蒟蒻,考场上真的被出题人感 ...
- wukong引擎源码分析之索引——part 3 文档评分 无非就是将docid对应的fields信息存储起来,为搜索结果rank评分用
之前的文章分析过,接受索引请求处理的代码在segmenter_worker.go里: func (engine *Engine) segmenterWorker() { for { request : ...
- 两次跳转后session丢失
public ActionResult index() { Session["a"] = "aaa"; System.Web.HttpContext.Curre ...
- boost之timer
1. timer类实现 #pragma once #include <ctime> #include <limits> class timer { public: timer( ...
- BZOJ_2251_[2010Beijing Wc]外星联络_后缀数组
BZOJ_2251_[2010Beijing Wc]外星联络_后缀数组 Description 小 P 在看过电影<超时空接触>(Contact)之后被深深的打动,决心致力于寻 找外星人的 ...
- MP4V2库与MP4AV库编译
最近在开发一个将RTP流存储为MP4文件的功能.其中针对MP4文件读写,用到了两个开源的库.其中MP4V2用于数据的读写,MP4AV用于对其中的数据帧进行分析. MP4V2和MP4AV都是开源项目MP ...
- Android.mk中call all-subdir-makefiles和call all-makefiles-under,$(LOCAL_PATH)的区别(转载)
转自:http://blog.csdn.net/jackyu613/article/details/5949324 在写Android.mk文件时,call all-subdir-makefiles和 ...
- 第六篇 .NET高级技术之拆箱装箱
拆箱.装箱 值类型赋值给Object类型变量的时候,会发生装箱:包装成Object.ValueType不也是继承自Object吗(CLR内部处理): Object类型变量赋值给值类型赋值的时候会发生拆 ...
- java实现数据结构
数据结构与算法 :一.数据结构和算法简介 数据结构是指数据在计算机存储空间中的安排方式,而算法时值软件程序用来操作这些结构中的数据的过程.二. 数据结构和算法的重要性 几乎所有的程序都会使用到数据结构 ...