现代的企业面临着一个 VUCA 的时代,高可用系统架构面对着诸多不确定性带来的影响和挑战,如何才能能够突破困境,使得复杂的系统仍然能保持业务的连续性。业务的弹性扩容也同时会对高可用性的架构造成影响,在实践中,我们结合微服务/K8S/DevOps 这三架马车进行了微服务的容器化的实践之路。
在现实的复杂而又不确定性的环境下,高可用架构面临诸多挑战,都可能对系统带来巨大影响,比如:
天灾和人为操作失误等不确定因素之外,从整体的角度来说,现在企业级的高可用架构已经变得越来越复杂,我们往往需要在多种OS并存,各种软硬件的结合,多种开发语言并用,新旧系统共存存的条件下进行高可用行设计,加之无时不在的变更,动态横向的需求不断提高,速度和稳定同时需要被满足,这些都使得高可用的架构变得越来越困难。
企业级高可用性架构面临着的这些的挑战,如何才能能够突破困境,使得复杂的系统仍然能保持业务的连续性,同时如何实践微服务和容器化等技术的实践,这里将会列出整体的原则和策略。
物有本末,事有终始,知所先后,则近道矣。了解设计的目标,以终为始很关键。良好的系统解耦,扩展性,可维护性等都很重要,但是服务的稳定性和连续性则更为重要。衡量高可用性也有很多指标比如MTTF/MTTR/RPO/RTO,根据MTTR和MTTF可以计算出系统可以被正常使用的时间,除此之外还有,RTO和RPO分别从时间和数据两个角度分别能够验证高可用系统容灾备份在数据冗余和业务恢复方面的能力。
MTBF = MTTF + MTTR
一般来说达到N个九的高可用性,具体含义如下:
系统可用性比率 = MTTF/MTBF
根据 GB20988-2007-T 信息安全技术信息系统灾难恢复规范 , 根据其定义,RTO/RPO与灾难恢复能力等级的关系具体如下所示:
在具体的实践中,将目标聚焦到K8S/微服务/DevOps这三个角度,这三架马车各司其职,使得容器化的微服务落地更加顺畅。
Kubernetes在这其中起到的是基础平台的作用,Kubernetes提供基础平台的能力,对运行于其上的容器化的微服务提供服务自愈的能力,以及负载增大时的动态横向调整。同时使用消除单点的冗余策略保证ETCD和Master的高可用性。
运行在Kubernetes上的微服务在设计上进行解耦,功能简单化和独立化,与外部交流轻量化,尽量无状态以保证横向扩展方便,并可进行独立部署和回滚而不至于对其他服务照成太多影响。
微服务在设计上和实践上所遵循的原则很多已经和DevOps实践有了重合,而设计良好的微服务以容器化的形式存在,结合自动化工具与持续集成和持续交付的最佳实践能使得架构从设计出来到交付到生产环境的整个过程变得更加快捷和流畅。
高可用的 Kubernetes 平台应该能保障如下三种层次的高可用性:
容器化的微服务在 kubernetes 上运行,依靠着 k8s 的 RC/deployment/DaemonSet 等机制,保证服务的高可用性。
依靠这种机制,Kubernetes 平台本身对运行在其上的服务来说,会监控运行在其上的应用的 replication 的数量,多了删,少了补。
依靠冗余策略来消除单点以保证 ETCD 和 Master 无论何时都始终可用,从而保证了平台自身的高可用。
ETCD 是 coreOS 的开源项目用于提供可靠的 key/value 的数据存储。而 kubernetes 用来保存数据。使用 ETCD 集群提供稳定的服务保证 Kubernetes 的 API Server 能够正常访问到 ETCD 服务。
同样,Kubernetes的Master大家都很熟悉,通过APISERVER与ETCD进行交互,提供统一的API入口,使用Scheduler进行资源调度,Controller-Manager进行资源管理。
一旦Master不可用,则会造成较大的影响,所以可以采用多个备用状态的Master,一旦出错便可随时切换的机制则能降低或近似消除MASTER的单点故障的可能性,从而使得Kubernetes基础平台自身更加可靠。
严格来说,横向扩展并不一定是一个高可用性架构的必须,但是考虑到动态变化对资源需求的变化以及资源的有效利用,不用说ROI,访问量的突然增大,而资源没有及时调整也会使得原本正常访问的网站也变得缓慢无比,而这个时候则需要横向扩容。
容器化的方式之下,横向扩展变得非常容易。而且kubernetes能够在整体的基础上进行资源的协调和分配从而达到横向扩展的目的。而达到按需扩容则需要结合监控。
实时可靠的监控对高可用系统非常重要,利用很多商用的软件或者很多开源的工具进行整合甚至自行开发可以对整体的业务状况以及系统状况进行把握。在监控中确认采集到指标是否达到了动态调整的阈值,从而进行横向扩展,当然这一切,则需要监控的功能是准确的基础之上的。
有了 Kubernetes 提供的基础平台服务,比如服务的多重控制都可以通过 kubernetes 来实现,而微服务则可以专注于业务价值的实现。
微服务的方式跟传统的SOA非常的类似,抛开概念之争,让我们重新思考一下传统企业那种超重的单一应用会有那些问题:经年累月之后,这种本来就很庞大的系统最终会形成一个谁也不敢轻易去动的多米诺骨牌:修改成本巨大,扩展困难。在大型的项目中很多人都有过修改一行代码,判断影响要查几天的通过经历,这其实主要还是源于系统过于复杂,如果是边界清晰的小型规模的模块或者服务,到底应该怎样改会容易判断地多。
而微服务,通过尽可能对功能进行简单化/小型化,划定明确的功能边界,降低和其他模块的耦合度,通过规范化的轻量的RestAPI进行交互,服务的部署独立可置换使得对整体的影响较小,即使出问题也能限定影响范围,这种方式其实在传统的SOA方式的架构设计中我们也会经常考虑,只是在DevOps运动推行之前,部署的独立化这些要素没有覆盖,另外与微服务的微相比,显得更大更重一些而已。
目前也有很多开源的框架可以使得微服务落地时更加快捷,比如使用Spring Cloud提供的很多开箱即用的功能,服务注册,API网关,负载均衡,配置中心等等拿来即用,而我们只需要专注于业务功能的实现即可,而这些大大提高了效率。
微服务带来的有清晰的边界和可控的影响范围,但微服务也会带来一些新的问题。比如接触过的一个项目说他们推行了微服务,最大的好处就是以前部署一个包一次结束的事情现在需要做二十次。虽然是句玩笑,但是也说明了一个事实。微服务在设计上将业务功能解耦拆解成了可独立部署小型单元,但是随着服务的增多,这些在部署上会带来很多影响。
根据2017年DORA发布的最新现状研究报告,给予了更多权利,能够自主选择工具的团队能表现更好。所以在实践中我们让团队去能够使用他们熟悉的工具自定义自己的流水线进行持续集成和持续交付。从代码的提交,然后进行代码检查,自动化构建一极各种测试,使用同样一种机制进行部署,可定制的流水线使得这一切变得是可靠的安全的和快速的。
环境的一致性,我们指的是整体环境的一致性:开发环境/测试环境/生产环境的一致性。
我们一直都非常强调安全的重要性,尤其是高可用性架构,所以我们在保证环境一致性的同时都会保证很多,比如镜像的安全性。早在2015年的一次调查中,研究者就曾发现取样的Dockerhub上有 30%-40% 的镜像存在安全性的问题。安全性对任何产品来说都非常重要,比如著名的HeartBleed就曾经给很多忽视安全问题的企业带来了很大的影响,如果你所有的架构都是高可用的,但是你的镜像安全忽视了,万一镜像中想HeartBleed那样的脆弱性的CVE没有对应,有可能会带来非常之大的影响,所以尽早的将安全引入高可用性架构的设计和开发中,有问题早发现早治疗。比如Anchore或者CoreOS的Clair都能很容易的对镜像进行扫描。
通过对软件开发全生命周期的KPI进行管理和可视化管控。从构建到测试,从开发到部署到运维的监控, 从构建频度到成功率,更加有效的掌握整体情况,在实际的DevOps落地实践中通过有效的可视化打通那堵看不见的“墙”。
这些可视的KPI不仅使流程更加透明,运维监控更是直接为按需横向扩展需求下的高可用性的设计提供非常比较的触发判断机制。
DevOps 实践中通过可视化的监控为扩容提供了条件,可以更加清楚的了解到什么时候扩容应该被触发,整体的策略如下:
整体的策略确定之后,动态实施的方式就会非常的简单了。
容器化的微服务如何利用kubernetes平台提供的基础能力,从而使得微服务能够专注于业务开发,而DevOps利用定制化的流水线的落地,则能保证微服务的交付更加快速和安全;
同时结合DevOps的可视化和透明化实践的落地,则能保障动态弹性扩容机制的实现,整体使得基于容器化的微服务的架构具有更高的可用性。
https://blog.csdn.net/liumiaocn/article/details/77466760
本文由哈喽比特于4年以前收录,如有侵权请联系我们。
文章来源:https://mp.weixin.qq.com/s/aL2KIO2xVSB9hLFqR8zqJw
京东创始人刘强东和其妻子章泽天最近成为了互联网舆论关注的焦点。有关他们“移民美国”和在美国购买豪宅的传言在互联网上广泛传播。然而,京东官方通过微博发言人发布的消息澄清了这些传言,称这些言论纯属虚假信息和蓄意捏造。
日前,据博主“@超能数码君老周”爆料,国内三大运营商中国移动、中国电信和中国联通预计将集体采购百万台规模的华为Mate60系列手机。
据报道,荷兰半导体设备公司ASML正看到美国对华遏制政策的负面影响。阿斯麦(ASML)CEO彼得·温宁克在一档电视节目中分享了他对中国大陆问题以及该公司面临的出口管制和保护主义的看法。彼得曾在多个场合表达了他对出口管制以及中荷经济关系的担忧。
今年早些时候,抖音悄然上线了一款名为“青桃”的 App,Slogan 为“看见你的热爱”,根据应用介绍可知,“青桃”是一个属于年轻人的兴趣知识视频平台,由抖音官方出品的中长视频关联版本,整体风格有些类似B站。
日前,威马汽车首席数据官梅松林转发了一份“世界各国地区拥车率排行榜”,同时,他发文表示:中国汽车普及率低于非洲国家尼日利亚,每百户家庭仅17户有车。意大利世界排名第一,每十户中九户有车。
近日,一项新的研究发现,维生素 C 和 E 等抗氧化剂会激活一种机制,刺激癌症肿瘤中新血管的生长,帮助它们生长和扩散。
据媒体援引消息人士报道,苹果公司正在测试使用3D打印技术来生产其智能手表的钢质底盘。消息传出后,3D系统一度大涨超10%,不过截至周三收盘,该股涨幅回落至2%以内。
9月2日,坐拥千万粉丝的网红主播“秀才”账号被封禁,在社交媒体平台上引发热议。平台相关负责人表示,“秀才”账号违反平台相关规定,已封禁。据知情人士透露,秀才近期被举报存在违法行为,这可能是他被封禁的部分原因。据悉,“秀才”年龄39岁,是安徽省亳州市蒙城县人,抖音网红,粉丝数量超1200万。他曾被称为“中老年...
9月3日消息,亚马逊的一些股东,包括持有该公司股票的一家养老基金,日前对亚马逊、其创始人贝索斯和其董事会提起诉讼,指控他们在为 Project Kuiper 卫星星座项目购买发射服务时“违反了信义义务”。
据消息,为推广自家应用,苹果现推出了一个名为“Apps by Apple”的网站,展示了苹果为旗下产品(如 iPhone、iPad、Apple Watch、Mac 和 Apple TV)开发的各种应用程序。
特斯拉本周在美国大幅下调Model S和X售价,引发了该公司一些最坚定支持者的不满。知名特斯拉多头、未来基金(Future Fund)管理合伙人加里·布莱克发帖称,降价是一种“短期麻醉剂”,会让潜在客户等待进一步降价。
据外媒9月2日报道,荷兰半导体设备制造商阿斯麦称,尽管荷兰政府颁布的半导体设备出口管制新规9月正式生效,但该公司已获得在2023年底以前向中国运送受限制芯片制造机器的许可。
近日,根据美国证券交易委员会的文件显示,苹果卫星服务提供商 Globalstar 近期向马斯克旗下的 SpaceX 支付 6400 万美元(约 4.65 亿元人民币)。用于在 2023-2025 年期间,发射卫星,进一步扩展苹果 iPhone 系列的 SOS 卫星服务。
据报道,马斯克旗下社交平台𝕏(推特)日前调整了隐私政策,允许 𝕏 使用用户发布的信息来训练其人工智能(AI)模型。新的隐私政策将于 9 月 29 日生效。新政策规定,𝕏可能会使用所收集到的平台信息和公开可用的信息,来帮助训练 𝕏 的机器学习或人工智能模型。
9月2日,荣耀CEO赵明在采访中谈及华为手机回归时表示,替老同事们高兴,觉得手机行业,由于华为的回归,让竞争充满了更多的可能性和更多的魅力,对行业来说也是件好事。
《自然》30日发表的一篇论文报道了一个名为Swift的人工智能(AI)系统,该系统驾驶无人机的能力可在真实世界中一对一冠军赛里战胜人类对手。
近日,非营利组织纽约真菌学会(NYMS)发出警告,表示亚马逊为代表的电商平台上,充斥着各种AI生成的蘑菇觅食科普书籍,其中存在诸多错误。
社交媒体平台𝕏(原推特)新隐私政策提到:“在您同意的情况下,我们可能出于安全、安保和身份识别目的收集和使用您的生物识别信息。”
2023年德国柏林消费电子展上,各大企业都带来了最新的理念和产品,而高端化、本土化的中国产品正在不断吸引欧洲等国际市场的目光。
罗永浩日前在直播中吐槽苹果即将推出的 iPhone 新品,具体内容为:“以我对我‘子公司’的了解,我认为 iPhone 15 跟 iPhone 14 不会有什么区别的,除了序(列)号变了,这个‘不要脸’的东西,这个‘臭厨子’。