忙信号模式介绍

在阅读本文前,您需要了解云计算与互联网开发基础知识。[忙信号模式]是专注应用程序对当云服务请求响应不成功时忙信号如何处理。这种模式从客户端角度出发,这里主要描述的云计算中场景。客户端是每发出请求到服务端,服务端答复忙信号。客户端负责根据忙信号做出适当数量的重试次数处理。如果重试过程中继续收到忙信号,客户端将该服务视为不可用。我们偶尔地拨号电话结果是忙信号,正常的反应需要重拨,这时通常会导致能成功建立通话。

同样,偶尔会调用服务结果被返回失败代码,表明云服务目前不能够满足该请求。需要重试,在服务端这种结果通常称之为常规反应。云服务不能满足请求的主要原因可能是因为它是太忙了。有时服务是"太忙"因为几百毫秒,或一个或两个秒处理。智能重试的策略将有助于处理忙信号而不影响用户体验。

场景
您的应用程序每次使用云平台服务,但云服务不能保证都响应成功。这个模式应用于所有访问云平台服务类型,如管理服务,数据服务等。一般来说,也可以应用于通过网络访问的服务或资源,不一定是云计算。在所有这些情况下,应定期短暂失效。熟悉的场景,在如非云计算下,当
Web 浏览器完全加载一个网站失败后,需要简单刷新或重发请求来修复该问题。

对云平台的意义。通常在云服务会有短暂失效的结果,这个时候如果不回应合适的忙信号,用户体验则非常糟糕,用户感觉是服务端程序错误,并且难于重现。应用程序应有计划地响应忙信号,这个模式能增加应用程序的健壮性。

影响: 可用性,可伸缩性,用户体验。

机制:当客户端访问云服务时,正常情况下使用忙信号模式来预测与处理短暂失效。短暂失效是瞬间失效,它不是客户端的故障。事实上,如果客户端稍后重发相同的请求,它往往会成功。短暂失效是预期发生的,不是意外。有点儿像电话拨打电话时对方忙音,这是正常的。想象你打电话中国移动客服中心,你的呼叫将被上百个话务员中一个人接听。但不是这每次会这样顺利,当听到提示客服忙线时,你不会猜测哪儿不对了,通常你会重拨这个号码,这就是[短暂失效],作出适当的反应:
[重试]。但是,连续的忙信号意味着需要停止呼叫一段时间,可能是一天。如果这是真实的忙信号我们才想去重试,如果我们拨打错号码或号码销号了,我们不再会想重试了。

虽然网络连接问题有时可能是短暂失效引起的,但我们关注的是服务边界上的短暂失效,这是一个请求到达云服务,但没有被服务端立即满足。
云计算服务有限制的;具体需要查阅您的云供应商文档。例如,限制在每个可执行服务操作的最大数目,每秒可以将多少数据传输,在单个操作中可以传输多少数据?在云服务中个别客户端或多个客户端集合可能超出限制。每当您对服务的使用超出了其允许的最大吞吐量,这将由服务检测到您的访问,并将进行带宽限制。带宽限制是由服务完成的,有时延迟响应,并做出其它客户端的请求被拒绝正常反应。

云服务也有内部故障,如发生磁盘驱动器故障。虽然该服务将自动通过自我修复并将故障转移到一个可工作的磁盘驱动器,将流量重定向到一个可工作的节点,并启动故障磁盘上的数据复制程序
(通常有三个副本),它可能无法在瞬间完成。在恢复过程中,该服务将减弱,并且服务调用更有可能被拒绝或超时。

为什么预期数据库将被释放?

SQL
数据库为什么会断开您的连接?当您连接时,在幕后它不是单个实例,而是三个协作服务器的群集。这有几个好处。一个好处是当每个字节写入群集内所有三个服务器的磁盘驱动器时发生故障的复原能力。另一个好处是,作为一种多租户服务,SQL
数据库可以分发 (和重新分配) 跨服务器而保持它平衡负载。这些好处付出了代价。如果 SQL
数据库选择改变连接到另一个群集中的三个服务器,则需要首先断开连接你
;当您重新连接,您将连接到您的新分配的群集节点,虽然你不能分辨的这些连接。

识别忙信号

对于通过 HTTP
访问的云服务,短暂失效是表示拒绝该请求,通常服务端回应适当的状态代码, 如:HTTP 503 服务不可用。对于通过 TCP
访问关系数据库服务,可能会关闭数据库连接。其他短暂的服务中断可能会导致不同的错误代码,但处理程序类似。

现实中的案例:

某应用程序通过公共互联网向 Windows Azure Blob
存储设备
上传数据,采用自定义指数退避算法的重试策略,同时还记录每次重试日志。上载期间的有近 100
万个文件且平均大小4兆字节,1.8%的文件大约至少需要一次重试。请注意因为文件是如此之多,每个文件上传涉及许多存储操作细节,所以很少超过
0.1%的时间就需要对存储操作重试。还有,许多因素可以影响重试的发生,例如公共互联网网络连接与本地网络资源的竞争。结果将会变化很大。

响应忙信号

您的应用程序应在如何应对如果再次请求服务失败?这取决于具体环境。要考虑一些响应包括:

重试立即 (无延时)

延迟 (固定或随机延迟) 后重试

增量延迟 (线性或指数退避) 最大延迟时间重试

应用程序中抛出异常

这里又引入[重试模式],上图的3个步骤解释了Http下重试流程。应该不能看懂,在些这不再赘述。在微软最佳实践的企业库,提供了The Transient fault handling application
block
模块来处理这个问题。有时间在后面,我们来介绍它使用。

希望对您云计算的软件设计与开发有帮助。

您可能感兴趣的文章:

Database数据库切片模式

集中队列的模式

Windows台的FailOver群集简介

作者:Petter
Liu

出处:http://www.cnblogs.com/wintersun/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

该文章也同时发布在我的独立博客中-Petter Liu
Blog

忙信号模式介绍,布布扣,bubuko.com

时间: 2024-10-25 23:39:13

忙信号模式介绍的相关文章

CDN模式介绍

CDN(content delivery network 或 content distribution network)模式专注于通过全球分布式缓存架构为经常访问的文件减少网络访问时的延迟.目标是加快交付应用程序内容给用户.内容是任何可以存储在一个文件,如图像. 视频和文档.内容交付网络 (CDN) 是一种全球分布式缓存的服务.CDN 在世界各地的许多地方保存了应用程序文件的副本.当用户访问时,会选择离这些地方接近结点,内容不需要走长距离网络来传递,所以它能访问到达速度更快,以此来改善用户体验.

Windows7中7种不同关机模式介绍

在Win7关机选项中一共有7种关闭方式,分别为 Switch user(切换用户), Log off(登出), Lock(锁定), Restart(重启), Sleep(睡眠), Hibernate(休眠), Shut down(关机). 下面分别介绍一下它们的区别: 1.Switch user, Log off, Lock Win7支持多用户登录.也就是说,用户可以以管理员或是其他用户身份同时登录.如下图:在我的系统中目前有两个用户在登陆,一个处于Active(活动)状态,一个处于Discon

虚拟主机中三种网络模式介绍

cocos2d-x升级到3.0后变化不小,除了API的变化(主要是函数和类名称变化,以及使用了C++11的不少特性,function/bind, lamda, std::thread-),创建和编译工程也做了一些简化调整.本文主要讨论一下cocos2d-x3.0 在android平台开发的环境设置及工程创建编译流程. 1.   初始设置 除了2.x所需要的python,jdk, android sdk和ndk之外,还需要部署apache-ant. 1)      在path中设置好java环境变

Spark on YARN两种运行模式介绍

本文出自:Spark on YARN两种运行模式介绍http://www.aboutyun.com/thread-12294-1-1.html(出处: about云开发)   问题导读 1.Spark在YARN中有几种模式? 2.Yarn Cluster模式,Driver程序在YARN中运行,应用的运行结果在什么地方可以查看? 3.由client向ResourceManager提交请求,并上传jar到HDFS上包含哪些步骤? 4.传递给app的参数应该通过什么来指定? 5.什么模式下最后将结果输

Bitcoin学习篇之---PPS和PPLNS挖矿模式介绍

PPS和PPLNS挖矿模式介绍 比特币每10分钟产生一个区块,会有千万人竞争,而这个区块最终只归1个人所有,其它人都颗粒无收.你也许要挖5年才能获得一个区块.组队挖矿就是,一旦队伍里任何人获得了一个区块,就将区块中的货币按大家的性能分给大家,这样大家就能很快地获得比特币. PPLNS矿池(最纯正的组队挖矿)PPLNS,全称Pay Per Last N Shares,意思是说"根据过去的N个股份来支付收益",这意味着,所有的矿工一旦发现了一个区块,大家将根据每个人自己贡献的股份数量占比来

StrictMode模式介绍

最新的Android平台中(Android 2.3起),新增加了一个新的类,叫StrictMode(android.os.StrictMode).这个类可以用来帮助开发者改进他们编写的应用,并且提供了各种的策略,这些策略能随时检查和报告开发者开发应用中存在的问题,比如可以监视那些本不应该在主线程中完成的工作或者其他的一些不规范和不好的代码. StrictMode有多种不同的策略,每一种策略又有不同的规则,当开发者违背某个规则时,每个策略都有不同的方法去显示提醒用户.在本文中,将举例子说明如何使用

企业IT管理员IE11升级指南【4】—— IE企业模式介绍

IE企业模式介绍 企业模式,运行在Windows8.1 Update和Windows7 Internet Explorer 11上的兼容模式,让网站使用一种模仿Internet Explorer 8的修改浏览器配置方式呈现,避免在旧版本的Internet Explorer上编写和测试的Web应用程序出现常见兼容性问题. Enterprise Mode Internet Explorer (“EmIE”) for Internet Explorer 11 改进了Internet Explorer

Apache三种工作模式介绍与配置

Apache三种工作模式介绍与配置 一.Apache的三种工作模式介绍及相关查看方法 1.Apache三种工作模式简介 Apache目前一共有三种稳定的MPM(Multi-Processing Module,多进程处理模块)模式.它们分别是prefork,worker和event,它们同时也代表这Apache的演变和发展. Apache在configure配置编译参数的时候,可以使用 --with-mpm=prefork|worker|event 来指定编译为那一种MPM,当然也可以用编译为三种

Vmware虚拟机仅主机(Host-only)、桥接(Bridge)、NAT三种网络模式介绍

Vmware虚拟机仅主机(Host-only).桥接(Bridge).NAT三种网络模式介绍 给大家介绍一下虚拟机的三种网络模式,希望能对大家有所帮助. 虚拟机在创建完成以后,会在物理主机上创建两个虚拟连接vmnet1和vmnet8,想必大家都知道了吧. 下面开始讲一下这三种网络连接吧 仅主机(Host-only)模式: 仅主机模式,可以实现虚拟机和物理主机之间相互通信,但虚拟机无法与外网(Internet)之间互相通信. 如下图所示: 我们可以认为虚拟机网卡与vmnet1连接在一个虚拟的交换机