断路器
舱壁的概念也可以在软件开辟顶用于隔离资本。
本文起首介绍微办事架构存在的风险,然后针对若何避免微办事架构的故障,提出了多种有效的微办事架构中的办法和技巧,个中例如办事降级、变革治理、健康检查和修复、断路器、限流器等。
我们也欲望我们的组件可以或许快速掉效(fail fast),因为我们不欲望比及断开的实例直到超时。没有什么比挂起的要乞降无响应的界面更令人掉望。这不仅浪费资本,并且还会让用户体验变得更差。我们的办事是互相调用的,所以在这些延迟叠加前,应当特别留意防止那些超时的操作。
微办事架构经由过程定义明白的办事界线,能有效地隔离故障。 和其他分布式系同一样,微办事在收集、硬件和应用层上都邑存在更多的问题。因为办事之间是互相依附,是以任何组件都可能掉足导致用户不克不及拜访。为尽可能削减部分中断带来的影响,我们须要构建容错才能强的办事,以安闲应对产生的某些中断。
本文在RisingStack’s Node.js Consulting & Development experience一文基本上,介绍了构建和运维高可用的微办事架构体系中最常用的技巧和架构模式。
如不雅读者不熟悉上文中的模式,那并没什么大年夜碍。构建靠得住的体系不是一踞而就的。
微办事架构的风险
微办事架构将应用逻辑拆分成办事,办事之间经由过程收集交互。因为是经由过程收集调用,而不是在过程中调用,是以这给须要在多个物理和逻辑组件间进行协作的体系带来了潜在的问题和复杂性。分布式体系变得越来越复杂,也导致收集特定故障产生的可能性增大年夜。
比拟传统应用宏大年夜的构造,微办事架构最大年夜的一个长处是团队能自力地设计、开辟和安排各自的办事。团队能掌控各自办事的┞符个生命周期。这也意味者团队无法控制办事的依附关系,因为这些依附的办事可能是由其他团队治理。在微办事架构体系下,我们要切记供给的办事因为是其他人控制,是以可能会因为宣布、设备、和其他变革等原因,大年夜而导致办事临时弗采取,并且组件之间互相自力。
优雅的办事降级
微办事架构最大年夜的长处之一就是当组件出现故障时,能隔离这些故障并且能做到优雅地办事降级。比如,在图片分享应用中,当出现故障时,用户可能无法上传图片,但他们依然能浏览、编辑和分享已上传的图片。

微办变乱障自力(理论上)
在大年夜多半情况下,是很难实现上钤记种优雅地办事降级的,因为在分布式情况下,应用都是互相依附的,开辟者须要实现若干缺点处理的逻辑(该部分在本文稍后部分评论辩论)却竽暌功对短暂的故障和中断。

办事互相依附,如不雅无故障转移的逻辑,则会同时掉效
变革治理
Google的网站靠得住性团队发来岁夜概70%的故障都是因为变革而引起的。当对办事进行修改时—例如宣布代码的新版本或者改变一些设备,则总会有可能引起故障或者惹人新的缺点。
在微办事架构中,办事是互相依附的。这就是为什么你须要削减故障并且尽可能降低它们的负面影响。为了应对变革带来的问题,你可以实施变革策略治理并且实现其主动回滚。
比如,当安排新的代码或者修改设备时,应当分步将这些变革安排到办事实例群中的部分实例中,并且进行监控,如不雅发明关键指标出现问题则能主动进行回滚。

变革治理-回滚安排
另一个解决筹划是运行两套临盆情况。安排的时刻只部署蹦更的应用到个一一套情况中,并且在验证了新宣布的版本相符预期后,才将负责均衡的流量指向新的应用,这种办法称为“蓝-绿宣布”或者“红-黑宣布”。
回退代码并不是坏工作。你不该该在临盆情况中安排有问题的代码,并且应当揣摩哪里掉足了。当须要时刻应当不雅断回退代码,这越早越好。
健康检查和负载均衡
关于更多限流器和负载开关的常识,建议读者参考Stripe的相干文┞仿。
因为故障或安排、主动扩大等原因,办事实例会一向启动,从新启动及停止。这使得办事临时或一向停用。为了避免产生这些问题,在负载均衡中应当在路由中设置忽视这些实例,因为它们无法为子体系或用户供给办事。
我们可以经由过程外部不雅察去断定应用实例是否健康。你可以多次调用
Get /health的端点(endpoint)或者经由过程自身办事的申报获得相干信息。如今的
办事发明解决筹划会持续大年夜实例中收集健康信息,并且设置负载均衡的路由,让其只指向健康的实例组件。
自我修复
自我修复能赞助恢复竽暌功用。我们评论辩论下当应用碰到崩溃状况后,若何经由过程相干的步调去自我修复。在大年夜多半情况下,是经由过程外部体系监控实例的状况,当办事出现故障一段时光后则会重启办事。在大年夜多半情况下,自我修复的功能是相当有效的,然而,在某些情况下因为赓续地重启办事会带来相干的问题。例如当办事过载或者数据库连接超时,则会导致应用不克不及反馈精确的办事健康状况。
推荐阅读
曾几何时,OICQ、QQ、MSN等专注于即时通信的平台独树一帜,将即时通信打造为PC时代的三大年夜盈利模式之一。如今,移动互联网已渗入生活的“骨髓”,即时通信已无处不在,成为几>>>详细阅读
本文标题:避免大规模故障的微服务架构设计之道
地址:http://www.17bianji.com/lsqh/37626.html
1/2 1

网友点评
精彩导读
科技快报
品牌展示