【愚公系列】2021年12月 二十三种设计模式(二十)-状态模式
1051
2022-05-29
DLI可靠性之跨AZ双活
服务保障可靠性的几个关键点
在现实世界中,故障和BUG无处不在,云服务也同样如此。硬盘可能损坏、网络可能中断,用户和业务提供方都希望能够预防故障的出现,但事与愿违,现在它还是一个无法实现的梦想。
那就需要我们转变思路,从避免故障出现转向即使出现了故障也不会使服务不可用。其中有以下几个关键的点:功能降级、断路器、舱壁、冗余、冗灾,此次文章想谈的点就是对于一个高可用的服务,必须具备冗余的能力。即对于一个高可用的服务,必须具备冗余的能力,当一个实例故障后,可以由其它实例继续提供服务。这些实例需要被监控,并在实例故障时能够拉起新的实例。这些服务实例必须具备良好的负载均衡能力,并部署在不同的节点上(最好是不同的物理机,以避免同时故障)。
DLI集群级别的可靠性保障
对于之前的DLI来说,每个队列会绑定到一个AZ(物理可用区),用户的SQL等作业都会提交到这个集群中运行,但是当这个AZ遇到不可抗力因素断电后,那么意味着这个AZ下的所有服务都不可供用户使用,也就是不可靠了。而用户希望的场景是当一个AZ挂掉后,我的作业能够继续提交到另外一个AZ下运行,这是一个比较合理的诉求。而目前DLI提供的就是这种跨AZ双活方案,用户只需要在购买队列页面中选择包周期/按需专属,勾选跨AZ选项即可。
跨AZ意思就是作业提交会提交到两个不同的AZ中,而双活的意思就是两个AZ下的集群可以同时接收任务,同时存活可用。
从文案的名字也可以大致看出来,我们使用的可靠性方案是冗余,即是在创建集群资源的时候我会在两个AZ下都建一个相同规格的集群,用户提交SQL作业时我们会负载均衡的将作业分发到这两个集群中,当一个AZ下的集群不可用时,作业会经过failover机制重新提交到另外一个可用AZ下的集群中。且有定时检测机制,每分钟会检测是否有失败的集群,当有一个集群失败后会在另外一个AZ下重新创建一个相同规格的,这样用户又可以拥有两个双活的集群进行作业提交。并且对于用户而言,这整个过程是无感知的,且和之前的操作基本没有变化,但是可靠性确大大增加了。目前已经处于内部使用期,当稳定后会推广到华为云全网的DLI局点供所有的用户使用。
欢迎体验数据湖探索(DLI)服务:https://www.huaweicloud.com/product/dli.html
优势和局限性
1. 从保障服务可用性的角度来说,DLI双活方案可以保障用户在大部分情况下的使用可靠性,并且是无需用户额外进行操作的
2. 从作业执行角度来说,由于有双份的资源,用户提交作业的并行度也会得到一个比较大的提升
3. 例如用户原本使用的是1000CU,那么跨AZ可以建两个500CU的集群,这样费用方面也和之前没有什么差别,花同样的钱确体验到了更加先进可靠的服务,何乐而不为呢
DLI
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。