蓝绿发布、滚动发布、灰度发布(金丝雀发布)、AB测试

蓝绿发布、滚动发布、灰度发布(金丝雀发布)、AB测试,第1张

在一般情况下,升级服务器端应用,需要将应用源码或程序包上传到服务器,然后停止掉老版本服务,再启动新版本。但是这种简单的发布方式存在两个问题,

(1)在新版本升级过程中,服务是会暂时中断的。

(2)如果新版本有BUG,升级失败,回滚起来也非常麻烦,容易造成更长时间的服务不可用。

(3)新功能体验不好,版本升级过程中带来的流量有损,造成用户流失。

为了解决这些问题,人们研究出了几种常见的服务发布策略,下面一一介绍。

所谓蓝绿部署,是指同时运行两个版本的应用,

如上图所示,蓝绿发布部署时候需要对服务的新版本进行冗余部署并不停止掉老版本,一般新版本的机器规格和数量与旧版本保持一致,相当于该服务有两套完全相同的部署环境,只不过此时只有旧版本在对外提供服务,新版本作为热备。当服务进行版本升级时,我们只需将流量全部切换到新版本即可,旧版本作为热备。由于冗余部署的缘故,如果新版本上线后出现严重的程序 BUG,那么我们只需将流量全部切回至旧版本,大大缩短故障恢复的时间。待新版本完成 BUG 修复并重新部署之后,再将旧版本的流量切换到新版本。

蓝绿发布通过使用额外的机器资源来解决服务发布期间的不可用问题,当服务新版本出现故障时,也可以快速将流量切回旧版本。

蓝绿部署的优点:

1、部署结构简单,运维方便;

2、服务升级过程 *** 作简单,周期短。

蓝绿部署的缺点:

1、资源冗余,需要部署两套生产环境;

2、新版本故障影响范围大。

ps:当然,蓝绿发布也可以在系统非繁忙时段进行升级,把现有的集群服务器一分为二,一半升级一半保留并隔离,待到新系统稳定后升级另一半服务器,并解除隔离。从而充分利用现有服务器资源。

滚动发布能够解决掉蓝绿部署时对硬件要求增倍的问题。

所谓滚动升级,就是在升级过程中,并不一下子启动所有新版本,是先启动一台新版本,再停止一台老版本,然后再启动一台新版本,再停止一台老版本,直到升级完成,这样的话,如果日常需要10台服务器,那么升级过程中也就只需要11台就行了。

但是滚动升级有一个问题,在开始滚动升级后,流量会直接流向已经启动起来的新版本,这个时候,新版本是不一定可用的,比如需要进一步的测试才能确认。那么在滚动升级期间,整个系统就处于非常不稳定的状态,如果发现了问题,也比较难以确定是新版本还是老版本造成的问题。

为了解决这个问题,我们需要为滚动升级实现流量控制能力。

在灰度发布开始后,先启动一个新版本应用,但是并不直接将流量切过来,而是测试人员对新版本进行线上测试,启动的这个新版本应用,就是我们的金丝雀。验证新版本符合预期后,逐步调整流量权重比例,使得流量慢慢从老版本迁移至新版本,期间可以根据设置的流量比例,对新版本服务进行扩容,同时对老版本服务进行缩容,使得底层资源得到最大化利用。

相比于前两种发布策略,灰度发布的思想则是将少量的请求引流到新版本上,因此部署新版本服务只需极小数的机器。

灰度发布可以基于用户请求的元信息将流量路由到新版本,这是一种基于请求内容匹配的灰度发布策略。只有匹配特定规则的请求才会被引流到新版本,常见的做法包括基于 >

Alberto Pistocchi1Lucia Luzi2Paola Napolitano3著

朱汝烈4译校

(1Studio di Ingegneria per I'Ambiente e il Territorio,Viale GCarducci,15,47023 Cesena,Italy;2IRRS-CNR,MiLan,Italy;3ACTA Studio Associato,Naples,Italy;4中国地质调查局水文地质工程地质技术方法研究所,河北保定,071051)

摘要此案例研究,源于将不同概率的预测模型[贝叶斯(Bayesian)概率、模糊逻辑、“与”、“或”、“总和”、“产出”、“灰度(非线性)”运算以及必然性因素等],用于编制意大利亚平宁山脉北部的丘陵和山岳地区滑坡灾害地图。利用7个数据层来检验非常脆弱的区域:岩性、与地质构造线的距离、年降雨量数值、土地覆盖类型、地形坡度和坡向,以及与水文网络段的距离。与用预测率指数预测的不同结果进行了对比和缜密的讨论,以评价这种易于运用、适宜有效的数据库在土地规划中使用价值的可能性。

关键词支持性函数 整体化模拟 滑坡灾害 空间数据库

1 导言及一般论点

近几年来,全欧洲各地方及规划部门在建立空间数据库方面有了长足进展。然而,很多数据库似乎对决策支持仍然不起作用,而且其使用的有效数据经常是纯粹土化的。特别是,最终数据使用者和决策者对于有关地理信息系统(Geographic Information Systems——GIS)的模拟能力,近乎于毫不知晓的状况。极少有地方政府机构在日常的决策中采用预测模型作为其有效支撑。

地理信息系统为详细的空间特征模拟带来巨大的能力,并且许多地方政府现在已拥有GIS技术,为其使用提供了方便条件。人们在对自然界现象进行日常习惯性观察时,这一重要信息有变成一种更有力的方法手段的潜在可能吗?

出于参与规划和目标共享的需要,地学家已经注意到确定的共享资源在用于规划和决策支持中做出的评估具有何等重要性的有关阐述。一些人强调地球科学地图在制定政策和土地使用规划过程中的作用。据他们的观点,灾害地图(hazard maps)的主要作用是,为决策者提供有关土地开发规章条例定义问题的正确观点。

基于自然现象之间因果关系的预测模型,已被水文工作者、地球科学家、环境分析家和工程师广泛地应用于自然风险评估、自然资源管理、污染防治与土壤改良及环境影响评估等领域。然而,就诸如滑坡这一自然灾害场合而言,要建立一个能在区域规模内可靠适用的模式似乎相当困难。一些人探究产生这一困难的原因,认为主要是受模型和数据的限制。与其他风险管理的角度不同,很少有管理者探索过有关定量模型的应用问题。

滑坡灾害制图的传统方法,依赖地质学家和地貌学家的经验观察、鉴定(通过对现场特性的直接观察和远距离的检测报告)来解释滑坡发生的特征。这样虽有相当可能判明既往事件,但是在撇开专家主观性及定性判断的情况下,几乎不能支持任何预测。

近几年来,已经提出了基于成带现象的大地构造模型。然而,基于大地构造模型的计算方法,或者说实际上是基于指数叠加的方法,限于数据不足或数据质量的低下,尽管其自然基础相当稳固,仍经常是不可靠的。

另一方面,通过“客观”的可复制模型进行的预测,分析家对可能的、有限的随机选择感到兴趣。特别是下列这些情况:

·当具有相当重要性的规划设想涉及到社会冲突时;

·当现象不容易觉察时;

·当对覆盖整个所关心区域的现象做详细测图所耗费用过于高昂,因而有必要对那些需更深一步了解的区域进行“筛选范围”模拟的时候。

一般说来,模拟过程与决策很相似,而且其工作具协调性和基础性。灾害地图之所以合理的一个理由,是通过专家的专门鉴别,可用模拟方法学的手段再现、复制,可以有助于认识的社会构成,亦即在管理者、社区公众以及科学家之间分享正确的决策准则。

这一原因导致开展使用概率进行预测的可能性的调查研究。在这些探索过程中,充分运用有关滑坡事件的先验性知识,通过合理地确定参数,用模糊的、或随机的地图套叠方法进行概率预测。

在最近几年,对这种方法做了很多探索。所有这些方法已经比较广泛地使用于敏感性分析或不同方法的性能对相同案例的研究。目前,在这些应用中存在的主要困难是不同的地图的对比。

有人提出了一种解决问题的构想,以完善绘图功能。在那些作者们的工作中,显示了概率、模糊的范畴,并可用现象发生地区最支持性的探测功能——例如滑坡或者矿藏——来证明。这些技术通过推测、校核而发挥效用;对其他诸如神经和贝叶斯(Bayesian)网络等方法,其共通特征与一般的数学模拟近似。以这种方法能轻易地找出一种称之为预测比率的独特标准,它主要用于比较不同预测地图,堪称使模型具有良好性能的有效措施。对其解释如下:支持性函数的用途在于以产生至少包含科学家基于规章的判断,即可从现场经验获得的、预测大部分正确的地图为目标。当然,随后由于专家对现象认识和理解的逐步深化在评估期间必然要求选择多种模拟。同时,由于协调不当而产生变量的假定概率,以及数据缺乏和不可靠,也可引起谬误的结果。不过,运用定量法可以使模型的校准和确认能够支持预测的透明度和合理性。支持性函数模拟方法最近已在专门为其安排的某些案例研究中应用。

本文目的在于,探讨支持性函数模拟对用现有的数据库标准认定的滑坡事件,编制灾害地图的可应用性,并且检查这种方法在现有的数据库里信息的运用中如何改进,以与其他技术(例如,每个岩性单位的滑坡频率编图或者纯粹的滑坡目录清单似的绘图)相比较。

支持性函数模拟也可用于构建数据库的概念性设置:数据的收集严格依赖于在理论框架上对最佳可用信息的准确理解。

2 理论背景

很多作者指出,数值技术的使用与那些对相关现象自身属性的局部价值认为值得关注的事件相联系。属性被认为是事件的证据因素,“或然性”、“可能性”或者发现事件的“可能”程度,在一定意义上与每个相关属性的存在非常符合。假定 A是已进行分析的定义域,而 F是被检查的事件现象。若 r数据层为有效数据,则对于每一个属性种类中的mk来说,设定k=1,…r,便可对每个数据层定义一个分配函数:

地质灾害调查与监测技术方法论文集

它将 A的每个象素分配到k层序列中的一层中;可以为每层确定另一个函数:

地质灾害调查与监测技术方法论文集

在这种情况下,地图在每个层里出现一个数值下降的间隔[a,b]。在此,a和b取决于分析者(如稍后将指出的那样)所做的进一步假定。这个数值代表支持性(favorability),即假定一旦遭遇某种特殊种类属性现象出现时的可靠程度。

对作为每个数据层的函数成分 V和R被定义后,支持性函数可表示为:

地质灾害调查与监测技术方法论文集

间隔极值 a,b必须由分析家据其“可靠性”的解释而定,若认为可靠性与“可能性”相同,则 a=0,b=1。若令可靠性范围等于确定性系数,则 a=-1,b=1。如果选择不同的方法,则可能需要另外的数值。

支持性函数在本项目中的不同用法将在本报告中予以陈述。

若支持性假设为与特定现象 F相关,设定与事件的可能性一致的属性种类为E1,…,E。,然后根据贝斯定理,按 E1,…,E。独立条件假说,可写为:

地质灾害调查与监测技术方法论文集

在ppsI中,I=1,…,n,是发生必然属性种类的优先概率,并且可用该属性种类存在的总面积的百分比进行估算。pps1至n作为属性种类的先期共同可能性考虑;这可以作为全部种类共同发生的总面积的百分比。ppaI,I=1,…,n是观察到的F对于属性种类Ei事件的可能性;这可以根据公式计算。ppaI=1-(1-(areaI)-1)nb(I),其中areaI是符合i系列条件的面积,而nb(i)是与F条件也符合的i系列的面积。psF是所有覆盖整个区域的F的优先概率,并可用所有符合F条件面积的百分数算出。

按此法则,一张地图可以由发生的属性种类的每种组合的计算编制出。这可以通过常规交叉作业程序,在GIS的栅格内 *** 作完成。

如果使用确定性系数,则运算法则作如下相应变动:

(1)一种属性种类的确定性系数可以定义为:

地质灾害调查与监测技术方法论文集

式中:I=1,…,n;n是作为原因因数的主题数据种类的数量。

(2)对两个数据种类来说,确定性系数根据下列法则计算:

当 CF1和CF2均为正号,那么 CF1+2=CF1+CF2-(CF1×CF2);

若 CF1和CF2符号相反,则 CF1+2=CF1+CF2/{1-min(|CF1|,|CF2|));

若 CF1和CF2均为负号,则 CF1+2=CF1+CF2+(CF1×CF2)。

(3)程序通过首先计算 CF1+2=CF12,然后 CF13=CF12+3等等,按此重复 *** 作可获得更多的图件。

作为最后的方法,采用模糊集合论通过计算“模糊总和”、“模糊产出”,“模糊与”、“模糊或”以及“模糊非线性函数”。所有这些函数都是在假设 F存在的可能性预测值等于给定的种类EI(即 ppaI)的条件下进行运算的。它们是:

·“模糊与”=min(ppaI),I=1,…n;

·“模糊或”=max(ppaI),I=1,…n;

·“模糊结果”=Ⅱ(ppaI),I=1,…n;

·“模糊总和”=1-Ⅱ(1-ppaI),I=1,…n;

·“模糊非线性计算”=(模糊总和)(模糊结果)1-γ,γ是0:1范围的参数。

按此方法,可确定编制覆盖层地图的法则,以便分析家能评价覆盖整个研究地区的不同事件属性数据差别,并有助于进一步识别存在更多现象的场地。这些计算结果代表与被认为属于有利性的现象相关指标的数目。必须注意到,除已描述之外,根据相应的资料证据分量、可信功能、线性回归覆盖概率以及其他诸多条件,可采用不同的技术。

必须指出,优先概率psF需要对确定性系数的估计测定而计算获得,但将它用于绝对边界条件是无意义的,因为要预知未来的滑坡事件的可能性实际上几乎是不可能的。预测根据的理由必须在概括全部条件求得支持性指标后,方可确认,而不能以对灾害的数字计算结果为依据。

3 应用

用于本案例研究的地区在意大利(图1)北部的萨维(Savio)河流域。区域地质概况基本上为泥灰岩和沙岩组成的一个沉积盆地。可更详细分为以下3种主要的地质岩层:

图1 研究区位置图

(1)托尔顿阶(Tortonian N1)为灰色砂质和泥质浊流沉积岩,是主要地质岩层,并出露于这条主要溪流两侧。

(2)由微晶质石膏与泥质粘土和沙层互层组成,而其基底为含硫石灰岩地层。

(3)由泥质岩、砂质岩和砾岩3层构成,全部含有灰岩层。

此外,还有淤泥质泥灰岩层、晚始新世砂岩地层、上新世粘土以及混杂堆积的粘土层出露地表。

该地区被大量滑坡覆盖,在不同的地质单元内,大多数情况下是以滑移型或泥石流型的运动形式发生。而且,有的地区有岩石崩落,并存在块体平移运动,然而对它们均未做过分析。研究过程中使用的数据由埃米利亚·罗马格纳地区地质调查所(Regione Emilia Romagna Geological Survey)提供。

用于本案例研究的数据库由若干主题层构成,它们涉及:

·线性构造(断层,向斜和背斜),比例尺1:50000;

·岩性单元,比例尺1:50000;

·根据CORINE欧洲工程指南协议,从TM陆地卫星映像获得的土地覆盖情况,比例尺1∶50000:

·数字地形模型(DTM),根据从Regione Emilia Romagna地方当局的地图数据库中获得的、通过计曲等高线内插、等高距为50m的等值线制成;

·整个地区的7个降雨计量站的降雨测量数据;

·数字化水文网,比例尺1:10000。

必须强调,数据库的分辨度非常低劣,另外,数据在比例尺上很不均匀。有人会认为特别是当与平均滑坡面积进行对比时,地形信息明显很不精确,因而成为非实际滑动的运动学的代表。这项研究的目的是评价现实世界数据库的预测能力(前已阐述),必须意识到,重要的不是做出可靠的灾害地图,因为最好的信息虽已被应用殆尽,但不可能有任何更深远范围的调查和数据可供获取。正如在以下内容所强调的那样,与土地计划的预测相比较,评估的结果将为数据库的改进给予更多的输入内容。

从DTM数字地形模型中形成了坡度和坡向地图,并用固定的数值间隔对坡度做了分级。

对线性构造的距离做了计算,目的在于评价构造干扰对坡体稳定性的可能影响。以对栅格地图和栅格化作为计算结果。

分析了降雨资料,以查明高程与年降雨量之间的关系。从这两个变量的一个回归方程发现:y=07086x+70819(R2=066),x为海拔高程(m),y是超过30年的长时间级数降雨量的总平均值(mm/a)。后来用该方程式做了一幅连续降雨地图,结果明确显示,DTM既像降雨特征的指示剂,同时也犹如位能释放的一个显示器。

应当注意,过高的高程与降雨的相互关系相当微弱,而更进一步的分析则要求更好地描述该地区的实际降雨分布情况。然而,依据现有数据,仅能说明已经适当地查明了降雨分布的一般趋势而已。

尽管概念上的差异特性可以在滑坡的现象情况与所需的因素之间梳理出来,然而,当其他所需要特征都存在的情况下,恰恰只是“要素”触发了滑坡。可以认为,所有这些数据层都可能具有优先意义。

至于存在滑坡可能性的数据,只能依赖地方当局的土地不稳定情况报表获得。应着重指出,数据库适用于构建GIS的长时间序列分析。而且,其数据的密度和分布,按统计学来看,属具典型意义的现实滑坡分布。可以证明,事实上,当为贝叶斯程序培养的数据集不是足够大(并且排列也不足够随机)——这关系到对分区性随机变量的获得——的时候,按定量评价的观点衡量概率综合模拟,是毫无意义的。本案例中,滑坡发生的优先总和有利性条件(级别—特殊)的概率ppa1和psf,需由专家们判定。而且,选择滑坡的类型和年龄以便培养数据系列是重要的,这样的系列可照顾到同类滑坡。已有人进行了关于“泥石流”和“崩滑泥石流”类型滑坡的分析,认为通常发生在局部地区。在本研究项目中,仅在编制一些图件时有效地应用。

地区土地不稳定性报表记录也考虑了岩石崩落、块体滑动以及潜在不稳定的地段,但是这些没包括在分析过程中。图2显示了用于分析的数据层。

被考虑的全部主题的数据原则上有相互关联的可能性。由于多余的信息将可能导致无效结果,因而做一些尝试性计算。为了分析的目的,已进行了一次对7个主题条件(即,降雨地图、岩石学、土地覆盖、坡度、坡向、与水文网的距离及与线性构造的距离)的联合性试验。7个主题条件分类列入独立的图例内,并作为促使滑坡体产生活动的条件在地图上的识别标准。

对每一个地图偶对做了4个指数的联合计算:

·x平方(x2)指数;

·克拉默(Cramers)指数;

·意外事故指数;

·共同信息不确定性得分。

这里,第一个指数被确定为:

图2 用于预测的原因因素主题图

地质灾害调查与监测技术方法论文集

式中

地质灾害调查与监测技术方法论文集

而 T=象素的总数,Ti=地图1中 i类象素的数量,Tj=地图2中 j类象素的数量。指数 n和m分别是在地图1和地图2中的种类数目。

克拉默指数(V)和意外事故指数(C)确定如下:

地质灾害调查与监测技术方法论文集

相同符号的含义相应同前,同时 M取(m-1,n-1)的最小值,而 n和m分别是两幅图中每一幅中的数据种类的数目。

图幅偶对 A和B的共同信息不确定性得分取决于:

地质灾害调查与监测技术方法论文集

其中

地质灾害调查与监测技术方法论文集

n、m分别是在地图A和地图B里种类的数量,而Pij则是在地图A和B的交会线上i和j种类的像素数量分别对像素总量的比率。Pj是地图A中种类j的像素总数量,而 Pi表示种类i在地图B中的总像素。

上述指标可判断一个地图偶对之间的协调性尺度。x平方指数给出协调性(无上边界的)绝对尺度,而对其本身没用;V和C表示区域内预防标准的尺度[0,1],它们越是接近1,则两张地图之间的联系越强。这3个指标结合使用,可提供关于联系性的一个综合尺度标准,并允许我们超越一套地图从不同角度去比较像对的联系性。通常,可能注意到3个指标呈现如所期望那样非常相似的反应。不确定性共同信息记录也可用于确定由前面的指标测定的联系性模型,并假定在0(完全独立的地图)和1(完全联系的地图)之间改变。表1展示了如上所述的地图计算的指标。

表1 数据层之间的联系性指标

尽管未使用计算的指标,在严格条件下,对于确定贝叶斯条件(比非联系性质更强)的独立性,这些由全部数据层推断而得出的联系性指标,可能应当是独立的。

正如分析所指出的,必须被注意到,滑坡显示出与岩石学的某种联系(只有一个滑坡,岩石学主题由于共同信息的不确定性,具有非相关性),并与海拔高程/雨量以及地表覆盖存在空间联系趋势。

应当指出,若从因果关系以外的因素看来,岩石学与海拔高程/雨量和土地覆盖是相关的,而与坡度之间的联系较弱,与其他主题的联系则极少或无联系。提供给研究项目的不甚适用的DTM似乎是造成这一现象的首要原因。除在坡度和降雨量/海拔高程之间的微弱的联系外,其他联系可能均未予考虑。

根据当地地质调查所的分析似乎也得出同样的结论,岩性的因素仅仅用于编制滑坡灾害图以及拟定作为滑坡灾害指标的每个岩性单位的滑坡频率。

在每次运算期间,只有已知滑坡(通过随意抽样选择)的一半用来生成预测地图,然而剩下的东西,应当视为同样有效的数据群。作为滑坡灾害预测尝试,最先使用潜在原因因素,而在第2次试验过程中,只使用了3个最为相关的因素,这将在后面的章节中予以解释。

4 结果讨论

支持性函数的计算如以下将予以描述的那样,是在不同的模拟假定前提下进行的。每一幅由计算生成的良好地图的预测能力,用曲线的预测比率进行测试。这种曲线,是通过研究地区的累积百分率标定分类,以支持性评定数值的递减量(遵循上面提到的各种法则)作为横坐标,以滑坡地区的累积百分率作为纵坐标而做成的。据说,当预测的滑坡百分比与区域最大值的20%相一致时,便是对模型预测能力的良好评估。更广泛的观念是,曲线越是有规则的接近纵轴,则预测越加吻合。相反,若更多的曲线靠近45°直线,则说明组合因素造成预测靠近支持性数值的随机分布范围,这种预测的有用价值极小。在因果因素中,已经认识到水文网络所起的作用较小,这是因为为其所拟定的细节,要比其他因素的精密度高得多。乍看起来河流切割“遍布”各地,因而不便于将滑坡分布与它和水文网络的距离加以联系。因此,在因果因素中没有包括河流水系。

在图3中对已考虑的6个因果因素的预测比率,逐个予以显示。本项目中,预测者估计的条件频率ppaI,I=1,…n(发生滑坡事件的条件概率,给定的种类 i)适于每个主题内的每一个种类。

图3 原因因素预测的比率——使用整个滑坡封闭折线和条件频率

第一步计算用作证据的数据,来自图解滑坡活动的全部封闭折线。滑坡被分解成两个随机取样组,其中一个用于标定,而另一个用于证实。计算作业使用了3个最相关的主题(岩性、土地覆盖以及海拔高程/雨量),遵照先前描述的指标。预测比率曲线用图4显示。

进一步使用所有的6个指标进行了计算,其预测比率用图5显示。

我们注意到,由于整个滑坡体均被绘制,因而这可能会含有一些精确性的偏差;由于因果因素的集合,致使滑坡触发点和滑坡前缘不相同。因此,在每个滑坡封闭折线内预测,只使用最高点;若从物质运动的运动学原理考虑,触发点应当在最高位置。6个因果指标在此假定前提下计算的预测比率,如图6所示。

图4 7位预测者预测的比率——使用3个因果指标

(岩石学、降雨量和土地覆盖)和整个滑坡封闭折线

图5 7位预测者预测的比率——使用所有6个相关的原因指标和整个滑坡封闭折线

7位预测者使用3个和6个因果指标的预测比率,分别用图7和图8显示。

就输入数据的相关性而论,表明使用坡度、坡向和雨量分布(即更准确的DTM和雨量——由更区域化的降雨计量器获得的数据)具有更好的代表性,将使结果得到改进。一旦得到新数据,分析者们便可重新评价其对预测的潜在影响。

从预测比率的比较中可以确定:

·当使用6种因果指标代替3种与滑坡关联性更好的指标(岩石学、土地覆盖以及雨量)时,似乎没有明显的改进;在两种情况下的预测表现得非常近似,这恰似对种类群用了修整清除器,然而更多的指标是被应用了的。

·更进一步的清除效果可由只用触发点,而无需考虑滑坡整体来作为证据。这不至于带来地图总体预测能力的恶化;但同时也须顾及到,过量的清除有可能会导致绘图的可靠程度降低乃至消失。

图6 只使用触发点因果指标预测的比率

图7 7个预测者只使用3个因果指标(岩石学、土地覆盖和降雨量)和触发点预测的比率

图8 7个预测者使用6个相关因果指标和滑坡触发点预测的比率

·岩石学在原因指标的预测比率图解中,无论如何显然具有更高的预测能力(如此则可理解,为何当地地质调查所单独选择了将这个主题层用于灾害制图),当然还包括土地覆盖和降雨。然而并非其他全部主题都与预测相关。

·在本案例研究过程中,除贝叶斯可能性的情况外,7位预测者所用的预测表现得极其近似。然而数据的有效分布性是非常敏感的,当整个滑坡体被用作证据,并处于模糊“或”、“与”的某些场合时,则预测均近乎为随机性的。通常,似乎确定性系数是预测者在这一具体案例的研究中最有用的手段,虽然在每种情况下,一些预测者以预测比率曲线和预测地图所作出的预测实际上相同。

图9显示了在本案例中,进一步显示了将3个因素与作为主题证据的触发点共同配合使用时的7种预测。这是本案例研究过程中探讨的情况之一,它具有更好的预测比率,并且可能对滑坡灾害成带性作出最佳的基础性思考,显现了当前的认识状态。

图9 根据7种预测做出的预测地图

5 结论

本文讨论的方法是使用数字模型(较少需要专家的主观判断),依据滑坡灾害来划分土地等级。这似乎表明,当客观预测可从空间数据库中提炼出来时,则可以说明其主题有一些“系统”增加的价值,即全部数据都共同使用比仅只使用某些主题的效果更好。

必须强调,这种方法从现有数据库的开发入手,且保留对每个主题认识的开放、完善。在最好的预测者们各种各样的测试(确定性系数、贝叶斯可能性、模糊的 *** 作和其他可能的技术)中,仅能根据各种测试技术的预测能力做出选择,最后则慎重地使用了预测比率曲线进行预测。

这些分析已经引发了现有的数据库尚属不健全的认识,当然,仅指为了生成预测模拟使用目的的地形数据不甚适当而言。这寄希望于未来投入进一步的调查研究并捕获数据,以确定一种更佳的数字化地形模型。只要改进的原因因素地图一旦产生,或者一个新的原因因素被确认与现象相关,便可能重新进行计算,从而可能产生新的预测图。预测比率使用的有效性可按实际和有效改进进行检查,也可用来对数据收集和岩土工程监测的进一步努力指明方向。例如,在本案例研究中,岩性、土地覆盖以及降雨(如上所述,按高程描述)显然是滑坡的最相关的因素,因而到目前为止,分析主要致力于这些因素的调查和编图。更进一步说,准备并使用具有合适解读能力的DTM显得很有必要,其目的是为了更详细地检查地形数据的影响。分析也很重视其他主题条件,例如水体高程,对用于危险绘图时,它可能就变得相当重要。

浏览器名称/客户端IP/访问指定页面/访问时间/离开时间/

可放置在同一张表,

其他的数据都是根据这张表统计分析出来的嗯,我也建议你用sql数据库

域名空间你申请就好了,要求支持mysql数据库,然后告诉网络公司你的空间要用mysql数据库

做网站也有很多注意事项,比如静态页面啊,关键词,描述,及网页标题的优化啦

网络宽带,磁盘IO,查询速度都会影响到数据库的性能。

    具体问题具体分析,举例来说明为什么磁盘IO成瓶颈数据库的性能急速下降了。

   为什么当磁盘IO成瓶颈之后, 数据库的性能不是达到饱和的平衡状态,而是急剧下降。为什么数据库的性能有非常明显的分界点,原因是什么?

    相信大部分做数据库运维的朋友,都遇到这种情况。 数据库在前一天性能表现的相当稳定,数据库的响应时间也很正常,但就在今天,在业务人员反馈业务流量没有任何上升的情况下,数据库的变得不稳定了,有时候一个最简单的insert *** 作, 需要几十秒,但99%的insert却又可以在几毫秒完成,这又是为什么了?

dba此时心中有无限的疑惑,到底是什么原因呢 磁盘IO性能变差了?还是业务运维人员反馈的流量压根就不对? 还是数据库内部出问题?昨天不是还好好的吗?

 当数据库出现响应时间不稳定的时候,我们在 *** 作系统上会看到磁盘的利用率会比较高,如果观察仔细一点,还可以看到,存在一些读的IO 数据库服务器如果存在大量的写IO,性能一般都是正常跟稳定的,但只要存在少量的读IO,则性能开始出现抖动,存在大量的读IO时(排除配备非常高速磁盘的机器),对于在线交易的数据库系统来说,大概性能就雪崩了。为什么 *** 作系统上看到的磁盘读IO跟写IO所带来的性能差距这么大呢?

如果亲之前没有注意到上述的现象,亲对上述的结论也是怀疑。但请看下面的分解。

在写这个文章之前,作者阅读了大量跟的IO相关的代码,如异步IO线程的相关的,innodb_buffer池相关的,以及跟读数据块最相关的核心函数buf_page_get_gen函数以及其调用的相关子函数。为了将文章写得通俗点,看起来不那么累,因此不再一行一行的将代码解析写出来。

咱们先来提问题。 buf_page_get_gen函数的作用是从Buffer bool里面读数据页,可能存在以下几种情况。

提问 数据页不在buffer bool 里面该怎么办?

  回答:去读文件,将文件中的数据页加载到buffer pool里面。下面是函数buffer_read_page的函数,作用是将物理数据页加载到buffer pool, 中显示

buffer_read_page函数栈的顶层是pread64(),调用了 *** 作系统的读函数。

buf_read_page的代码

 如果去读文件,则需要等待物理读IO的完成,如果此时IO没有及时响应,则存在堵塞。这是一个同步读的 *** 作,如果不完成该线程无法继续后续的步骤。因为需要的数据页不再buffer 中,无法直接使用该数据页,必须等待 *** 作系统完成IO

再接着上面的回答提问:

当第二会话线程执行sql的时候,也需要去访问相同的数据页,它是等待上面的线程将这个数据页读入到缓存中,还是自己再发起一个读磁盘的然后加载到buffer的请求呢?   代码告诉我们,是前者,等待第一个请求该数据页的线程读入buffer pool。

试想一下,如果第一个请求该数据页的线程因为磁盘IO瓶颈,迟迟没有将物理数据页读入buffer pool, 这个时间区间拖得越长,则造成等待该数据块的用户线程就越多。对高并发的系统来说,将造成大量的等待。 等待数据页读入的函数是buf_wait_for_read,下面是该函数相关的栈。

通过解析buf_wait_for_read函数的下层函数,我们知道其实通过首先自旋加锁pin的方式,超过设定的自旋次数之后,进入等待,等待IO完成被唤醒。这样节省不停自旋pin时消耗的cpu,但需要付出被唤起时的开销。

再继续扩展问题: 如果会话线程A 经过物理IO将数据页1001读入buffer之后,他需要修改这个页,而在会话线程A之后的其他的同样需要访问数据页1001的会话线程,即使在数据页1001被入读buffer pool之后,将仍然处于等待中。因为在数据页上读取或者更新的时候,同样需要上锁,这样才能保证数据页并发读取/更新的一致性。

由此可见,当一个高并发的系统,出现了热点数据页需要从磁盘上加载到buffer pool中时,造成的延迟,是难以想象的。因此排在等待热点页队列最后的会话线程最后才得到需要的页,响应时间也就越长,这就是造成了一个简单的sql需要执行几十秒的原因。

再回头来看上面的问题,mysql数据库出现性能下降时,可以看到 *** 作系统有读IO。 原因是,在数据库对数据页的更改,是在内存中的,然后通过检查点线程进行异步写盘,这个异步的写 *** 作是不堵塞执行sql的会话线程的。所以,即使看到 *** 作系统上有大量的写IO,数据库的性能也是很平稳的。但当用户线程需要查找的数据页不在buffer pool中时,则会从磁盘上读取,在一个热点数据页不是非常多的情况下,我们设置足够大的innodb_buffer_pool的size, 基本可以缓存所有的数据页,因此一般都不会出现缺页的情况,也就是在 *** 作系统上基本看不到读的IO。  当出现读的IO时,原因时在执行buf_read_page_low函数,从磁盘上读取数据页到buffer pool, 则数据库的性能则开始下降,当出现大量的读IO,数据库的性能会非常差。

高可用性(HA),顾名思义,就是尽可能地减少系统不能提供服务的时间;如果一个系统能够一直保持工作状态,可以对外提供服务,那么我们就说系统的可用性是100%;大部分公司不会把话说这么满,所以经常会提出三个9、四个9的目标,也就是全年系统可用性为999%、9999%。

那么如何保证系统的高可用呢?我认为核心的思想就是防止单点,增加冗余,先让我们看看传统的架构是什么样的,哪里会有风险。

可以看到,架构的每一个部分都是单点的话,简直是风险重重,任何一个环节出现了问题,可能会造成整个系统垮掉(缓存部分可能不会直接影响系统,但往往缓存失去效果之后,会拖垮数据库),解决方法也很容易,其实就是把系统的每个部分都增加冗余:

客户端到Web应用:要增加Web应用,首先要增加反向代理层,也就是负载均衡,比如Nginx;不过如果只部署一个Nginx的话,它又是一个单点了,通常我们会部署多台,一台提供服务,另外的相当于“备胎”,通过keepalived的方式监控工作中的Nginx是否存活,当主服务器发生故障无法对外提供服务时,动态将virtualIP(虚IP)切换到备用机,继续提供服务。

负载均衡到Web应用:搭建多个Web应用,在负载均衡如Nginx中配置多个Web端的地址,并且可以监控多个Web端的存活性,当监控到某台应用挂掉,那么Nginx不在将请求分发到这台机器上。

Web应用到服务层:这里有很多种实现方式,比如服务层前端也挂负载均衡,或者走客户端内的负载均衡(这里Web应用就是客户端,相当于配置多个服务层的地址,每次请求按照一定规则,选取连接来访问下游服务,并使用service-connection-pool监控服务层应用的存活性);也可以使用服务注册发现的方式(可提供服务的应用才会出现在注册中心)。

服务层到缓存:缓存的存在,本身就是一种冗余;缓存层也可以通过集群来解决缓存层的高可用问题。以Redis为例,支持主从同步,而且有sentinel哨兵机制,来做Redis的存活性检测。

服务层到数据库:数据库一般会采用主从架构;数据库读的高可用,通常使用db-connection-pool来保证自动故障转移;而写 *** 作,通常需要keepalived+virtualIP(虚IP)自动切换。

以上都是保证系统高可用的方案,尽量做到客户端所有的请求都可以响应,但是系统资源不可能无限投入,所以需要一些方案保证系统的高可用,不过需要牺牲部分用户:

限流:我们接口只能支持200的并发,我们的页面只能支持一万人同时访问,那么多余的部分,对不起,我需要限制你们进入;常见的限流算法有:漏桶、令牌桶;

降级:牺牲非核心的业务功能,保证核心功能的稳定运行;

熔断:当服务链路中(A调B,B调C,C调D),某个服务响应时间过长或失败,会进行服务的降级,进而熔断该节点服务的调用,快速返回错误信息;不过嘛,我从来没有见过谁敢用熔断

灰度发布:将部分流量导到新上线的应用上,来验证新的功能修改,如果上线后有BUG,也可以快速回滚,尽可能降低发布的风险。

我将持续分享Java开发、架构设计、程序员职业发展等方面的见解,希望能得到你的关注。

如何应对数据库CPU打满?最优解在这里

阿里云数据库

2020-04-26 16:48·字数:4996·阅读:129

如何用好数据库,调校数据库使其发挥最优的性能?

如何快速诊断和应对各种原因导致的突发数据库性能问题?

如何以最低资源成本满足业务需求?

这些复杂的运维难题最优解到底是什么?

今天(4月22日)15:00数据库自治服务DAS重磅发布会

现场为你揭晓答案!

数据库自动驾驶时代一触即发点击这里

即可预约直播

今天提前为大家揭秘数据库自治服务DAS的一个创新功能 —— AutoScale,基于数据库实例的实时性能数据作为输入,由DAS完成流量异常发现、合理数据库规格建议和合理磁盘容量建议,使数据库服务具备自动扩展存储和计算资源的能力。

01背 景

为业务应用选择一个合适的数据库规格,是每个数据库运维同学都会经常面临的一个问题。若规格选的过大,会产生资源浪费;若规格选的过小,计算性能不足会影响业务。

通常情况下,运维同学会采用业务平稳运行状态下,CPU可处于合理水位(例如50%以下)的一个规格(如4核CPU配8G内存)并配一个相对富余的磁盘规格(如200G)。

然而在数据库应用运维同学的日常生活里,线上应用流量突增导致数据库资源打满的情况时有发生,而引发这类问题的场景可能多种多样:

1、新业务上线,对业务流量预估不足,导致资源打满,如新上线的应用接入了大量的引流,或基础流量比较大的平台上线了一个新特性功能。

2、不可预知的流量,如突发的舆论热点带来的临时流量,或某个网红引发的限时抢购、即兴话题等。

3、一些平时运行频次不高,但又偶发集中式访问,如每日一次的上班打卡场景,或每周执行几次的财务核算业务。这类业务场景平时业务压力不高,虽已知会存在访问高峰,但为节省资源而通常不会分配较高的规格。

当上述业务场景突发计算资源不足状况时,通常会让运维同学措手不及,严重影响业务,如何应对“数据库资源打满”是运维同学常常被挑战的问题之一。

在数据库场景下,资源打满可分为计算资源和存储资源两大类,其主要表现:

1、计算资源打满,主要表现为CPU资源利用率达到100%,当前规格下的计算能力不足以应对;

2、存储资源打满,主要表现为磁盘空间使用率达到100%,数据库写入的数据量达到当前规格下的磁盘空间限制,导致业务无法写入新数据;

针对上述两类问题,数据库自治服务 DAS 进行了服务创新,使数据库服务具备自动扩展存储和计算资源的技术能力,应对上述的问题。

DAS AutoScale基于数据库实例的实时性能数据作为输入,由DAS完成流量异常发现、合理数据库规格建议和合理磁盘容量建议,使数据库服务具备自动扩展存储和计算资源的能力。

接下来,本文将对DAS AutoScale服务的架构进行详细的介绍,包括技术挑战、解决方案和关键技术。

02技术挑战

计算节点规格调整是数据库优化的一种常用手段,尽管计算资源规格只涉及到CPU和内存,但在生产环境进行规格变配的影响还是不容忽视,将涉及数据迁移、HA切换、Proxy切换等 *** 作,对业务也会产生影响。

业务有突发流量时,计算资源通常会变得紧张甚至出现CPU达到100%的情况。通常情况下,这种情况会通过扩容数据库规格的方式来解决问题,同时DBA在准备扩容方案时会至少思考如下三个问题:

1扩容是否能解决资源不足的问题?

2何时应该进行扩容?

3如何扩容,规格该如何选择?

解决这三个问题,DAS同样面临如下三个方面挑战:

21 挑战一:如何判别扩容是否能够解决问题?

在数据库场景下,CPU打满只是一个计算资源不足的表征,导致这个现象的根因多样,解法也同样各异。例如业务流量激增,当前规格的资源确实不能够满足计算需求,在合适的时机点,d性扩容是一个好的选择,再如出现了大量的慢SQL,慢SQL堵塞任务队列,且占用了大量的计算资源等,此时资深的数据库管理员首先想到的是紧急SQL限流,而不是扩容。在感知到实例资源不足时,DAS同样需要从错综复杂的问题中抽丝剥茧定位根因,基于根因做出明智的决策,是限流,是扩容,还是其它。

22 挑战二:如何选择合适的扩容时机和扩容方式?

对于应急扩容时机,选择的好坏与紧急情况的判断准确与否密切相关。“紧急”告警发出过于频繁,会导致实例频繁的高规格扩容,产生不必要的费用支出;“紧急”告警发出稍晚,业务受到突发情况影响的时间就会相对较长,对业务会产生影响,甚至引发业务故障。在实时监控的场景下,当我们面临一个突发的异常点时,很难预判下一时刻是否还会异常。因此,是否需要应急告警变得比较难以决断。

对于扩容方式,通常有两种方式,分别是通过增加只读节点的水平扩容,以及通过改变实例自身规格的垂直扩容。

其中,水平扩容适用于读流量较多,而写流量较少的场景,但传统数据库需要搬迁数据来搭建只读节点,而搬迁过程中主节点新产生的数据还存在增量同步更新的问题,会导致创建新节点比较慢。

垂直扩容则是在现有规格基础上进行升级,其一般流程为先对备库做升级,然后主备切换,再对新备库做规格升级,通过这样的流程来降低对业务的影响,但是备库升级后切换主库时依然存在数据同步和数据延迟的问题。因此,在什么条件下选择哪种扩容方式也需要依据当前实例的具体流量来进行确定。

23 挑战三:如何选择合适的计算规格?

在数据库场景下,实例变更一次规格涉及多项管控运维 *** 作。以物理机部署的数据库变更规格为例,一次规格变更 *** 作通常会涉及数据文件搬迁、cgroup隔离重新分配、流量代理节点切换、主备节点切换等 *** 作步骤;而基于Docker部署的数据库规格变更则更为复杂,会额外增加Docker镜像生成、Ecs机器选择、规格库存等微服务相关的流程。因此,选择合适的规格可有效地避免规格变更的次数,为业务节省宝贵的时间。

当CPU已经是100%的时候,升配一个规格将会面临两种情况:第一种是升配之后,计算资源负载下降并且业务流量平稳;第二种是升配之后,CPU依然是100%,并且流量因为规格提升后计算能力增强而提升。

第一种情况,是比较理想的情况,也是预期扩容后应该出现的效果,但是第二种情况也是非常常见的情形,由于升配之后的规格依然不能承载当前的业务流量容量,而导致资源依然不足,并且仍在影响业务。如何利用数据库运行时的信息选择一个合适的高配规格是将直接影响升配的有效性。

03解决方案

针对上述提到的三项技术挑战,下面从DAS AutoScale服务的产品能力、解决方案、核心技术这三个方面进行解读,其中涉及RDS和PolarDB两种数据库服务,以及存储自动扩容和规格自动变更两个功能,最后以一个案例进一步具体说明。

31 能力介绍

在产品能力上,目前DAS AutoScale服务针对阿里云RDS数据库和PolarDB数据提供存储自动扩容服务和规格自动变配服务。

其中,针对即将达到用户已购买规格上限的实例,DAS存储自动扩容服务可以进行磁盘空间预扩容,避免出现因数据库磁盘满而影响用户业务的发生。在该服务中,用户可自主配置扩容的阈值比例,也可以采用DAS服务预先提供的90%规格上界的阈值配置,当触发磁盘空间自动扩容事件后,DAS会对该实例的磁盘进行扩容;

针对需要变更实例规格的数据库实例,DAS规格自动变配服务可进行计算资源的调整,用更符合用户业务负载的计算资源来处理应用请求,在该服务中,用户可自主配置业务负载流量的突发程度和持续时间,并可以指定规格变配的最大配置以及变配之后是否回缩到原始规格。

在用户交互层面,DAS AutoScale主要采用消息通知的方式展示具体的进度以及任务状态,其中主要包括异常触发事件、规格建议和管控任务状态三部分。异常触发事件用于通知用户触发变配任务,规格建议将针对存储扩容和规格变配的原始规格和目标值进行说明,而管控任务状态则将反馈AutoScale任务的具体进展和执行状态。

32 方案介绍

为了实现上面介绍的具体能力,DAS AutoScale实现了一套完整的数据闭环,如图1:

图1 DAS AutoScale数据闭环

在该闭环中,包含性能采集模块、决策中心、算法模型、规格建议模块、管控执行模块和任务跟踪模块,各模块的具体功能如下:

性能采集模块负责对实例进行实时性能数据采集,涉及数据库的多项性能指标信息、规格配置信息、实例运行会话信息等;

决策中心模块则会根据当前性能数据、实例会话列表数据等信息进行全局判断,以解决挑战一的问题。例如可通过SQL限流来解决当前计算资源不足的问题则会采取限流处理;若确实为突增的业务流量,则会继续进行AutoScale服务流程;

算法模型是整个DAS AutoScale服务的核心模块,负责对数据库实例的业务负载异常检测和容量规格模型推荐进行计算,进而解决挑战二和挑战三的具体问题;

规格建议校验模块将产出具体建议,并针对数据库实例的部署类型和实际运行环境进行适配,并与当前区域的可售卖规格进行二次校验,确保的建议能够顺利在管控侧进行执行;

管控模块负责按照产出的规格建议进行分发执行;

状态跟踪模块则用于衡量和跟踪规格变更前后数据库实例上的性能变化情况;

接下来,将分别针对DAS AutoScale支持的存储扩容和规格变配两个业务场景进行展开介绍。

!图2 存储扩容方案](>

数据库的数据管理通常需要考虑以下几个方面:

1 数据库设计:在创建数据库时,需要考虑如何组织数据,定义数据表、列、主键、外键等结构,以便更有效地存储和管理数据。

2 数据录入:将数据录入到数据库中,可以手动录入、通过文件导入或通过其他软件接口实现。

3 数据查询:使用SQL语言或图形界面工具进行数据查询,以便快速获取所需的信息。

4 数据更新:可以使用SQL语言或图形界面工具来更新数据库中的数据,如增加、删除或修改数据。

5 数据备份和恢复:定期对数据库进行备份,以防止数据丢失或损坏。如果数据出现问题,可以从备份中恢复数据。

6 数据安全性:在数据库中存储敏感数据时,需要考虑如何保护数据安全,包括访问控制、数据加密、防火墙等安全措施。

7 数据性能优化:对于大型数据库或高流量应用程序,需要考虑如何优化数据库的性能,包括使用索引、优化查询、分区等技术。

以上就是关于蓝绿发布、滚动发布、灰度发布(金丝雀发布)、A/B测试全部的内容,包括:蓝绿发布、滚动发布、灰度发布(金丝雀发布)、A/B测试、预测模拟技术在空间数据库优化开发中的应用——专家系统类比法滑坡灾害制图案例研究、网站流量统计数据库设计等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9662340.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-30
下一篇2023-04-30

发表评论

登录后才能评论

评论列表(0条)

    保存