51CTO诚邀您9月23号和秒拍/国美/美团元专家一路聊智能CDN的优化之路,抓紧时光哦!
微办事架构经由过程定义优胜的界线让掉效隔离成为可能,但每一个分布式体系都存在同样的问题——收集、硬件或应用法度榜样层面都有可能出现故障。因为办事之存放在依附关系,所以任何一个组件出现了问题都邑影响到组件依烂魅者。为了最小化局部故障所带来的影响,我们须要构建具有容错才能的办事,可以优雅地应对某些类型的故障。
这篇文┞仿基于RisingStack的Node.js咨询和开辟经验,介绍构建高可用微办事体系的常用技巧和架构模式。
微办事架构将营业逻辑分散到了各个微办事傍边,微办事间经由过程收集层进行通信。收集通信带来了额外的延迟和复杂性,须要多个物理组件和逻辑组件合营协作。分布式体系的额外复杂性增长了出现收集故障的几率。
例如,我们可以应用一个外部办事来辨认一组办事实例,然后随机地终止个中的一个实例。如许就知道该若何应对单个实例故障,当然,也可以封闭整组办事来模仿云办事中断。
微办事架构比拟单体架构最大年夜的优势之一在于,不合的团队可以自力地设计、开辟和安排他们的办事。他们可以完全掌控本身的微办事生命周期。当然,这也意味着他们无法控制办事依附项,因为依附项的┞菲握权控制在其他团队手中。在采取微办事架构时,我们要时刻铭记,宣布、设备等方面的问题可能会导致办事供给者出现短暂的弗采取。
优雅的办事降级
经由过程微办事架构可以实现掉效隔离,也就是说,在组件产生故障时可以实现优雅的办事降级。例如,在图片共享应用产生故障时,用户可能无法上传新的图片,但他们仍然可以浏览、编辑和分享已有的图片。
图:理论汕9依υ?办事掉效隔离
在大年夜多半情况下,实现这种优雅的办事降级是很艰苦的,因为在分布式体系里,应用之间互相依附,为了应对临时的故障,须要应用到一些掉效备援筹划(稍后会提到)。
图:互相依附的办事,在没有掉效备援筹划的情况下就会全部掉效。
变革治理
Google的网站靠得住性团队发明,70%的故障都是由体系变革引起的。更改办事、安排新代码、变革设备,这些都有可能惹人新的缺点或造成办事掉效。
另一种速度限制器叫作并发请求限制器(concurrent request limiter),它在某些情况下会很有效。比如,你不欲望某些端点被多次调用,但同时又想为所有的流量供给办事。
在微办事架构里,办事之间是互相依附的。所以我们要最小化出现故障的几率,限制故障所造成的负面影响。我们须要优胜的变革治理策略和主动回滚机制。
例如,在安排新代码时,或者在对设备做出变革时,要先在一小部分办事实例长进行,然后监控它们,一旦发明关键性度量指标出现异常,立时主动回滚。
Netflix的ChaosMonkey是一个异常受迎接的弹性测试对象。
图:变革治理——回退安排
另一个解决方檀卷是运行两套临盆情况。在安排的时刻只安排到个一一个临盆情况,只有在确认这个情况没问题了之后才能将负载均衡器指向这个情况。这种安排方法被称为蓝绿安排或者红黑安排。
回退代码并不是件坏事。你总弗成能一边把有问题的代码留在临盆情况里,一边想着到底产生了什愦问题。所以,在须要的时刻回退代码,越快越好。
健康监测和负载均衡
办事实例老是因为各类原因(故障、安排或主动伸缩)经历着启动、重启、停止如许的过程。这个过程会让办事临时或永远地弗采取,为了避免出现问题,负载均衡器须要忽视出现问题的办事实例,因为它们已经不具备为用户或其他子体系供给办事的才能。
应用的健康状况可以经由过程外部的不雅察来获得,比如经由过程赓续反复地调用/health端点来得知应用的状况,或者让应用申报本身的状况。办事发明机制会持续地收集办事实例的健康信息,负载均衡器应当被设备成只将流量路由给健康的办事实例。
自愈
自愈才能可以或许让应用在产生故障时进行自我恢复。如不雅一个应用可以或许经由过程一系列步调年腋荷琐故障状况中恢复,那么就可以说它具备了自愈才能。在大年夜多半情况下,这是经由过程一个外部体系来实现的。这个体系监控办事实例的健康状况,如不雅办事长时光处于不健康状况,体系就会将它重启。在大年夜多半时刻自愈才能是很有效的,不过如不雅持续赓续的重启应用也会造成一些问题。在应用超载或数据库连接出现超时的时刻平日会产生这种情况。
要实现高等的自愈筹划会比较麻烦,比如在产生数据库连接超时的情况下,你须要在应用法度榜样里添加额外的逻辑,让外部体系知道此瓯不须要重启办事实例。
掉效备援缓存
掉效备援缓存平日会应用两个不合的过不时光,一个是短期时光,表示正常情况下的缓存过不时光,另一个是经久时光,表示在产生故障时代的缓存过不时光。
推荐阅读
51CTO诚邀您9月23号和秒拍/国美/美团元专家一路聊智能CDN的优化之路,抓紧时光哦!“‘神农尝百草’一日遇七十毒,所得三百六十物后形成《神农本草经》。这是将人身作为测试‘mode>>>详细阅读
本文标题:如何设计高可用的微服务架构
地址:http://www.17bianji.com/lsqh/37381.html
1/2 1