在应对业务变化多、基础设施变化多带来的不可预期问题,可采取哪些方式?
1)负载自动化 为了高效地进行应用交付,研发需要权衡交付效率和业务稳定性。阿里大规模地使用 OpenKruise 进行应用的交付,其中 cloneset 覆盖了阿里上百万的容器。 在 cloneset 中可以通过 partition 来控制暂停发布从而进行业务观察,通过 maxunavailable 来控制发布的并发度。通过综合设置 partition 和 maxunavailable 可以实现复杂的发布策略。实际上,大多数情况下 PaaS 层在设计分批发布的功能时,往往选取了每批暂停的方式(仅通过 cloneset partition 字段来控制分批)。然而,每批暂停的方式往往因为应用每批中个别机器的问题而产生卡单的问题,严重影响发布效率 2)以快制动 为了应对突发的业务流量,需要能够快速的进行应用的部署,并从多方面保障紧急场景的快速扩容。 一方面,通过推进业务使用方的 CPUShare 化,让应用能够原地利用节点额外计算资源,从而给紧急扩容争取更多的反应时间。其次,通过镜像预热的方式来预热基础镜像,通过 P2P 和 CDN 的技术加速大规模的镜像分发,通过按需下载容器启动实际需要的镜像数据,使业务镜像下载时间极大地降低。 3)打好提前量 俗话说,"不打无准备之仗" 。要实现高效率的部署,做好准备是必需的。首先是对于 资源的准备, 如果集群内没有为服务准备好一定的容量,或者没有为集群准备好额外节点额度的话,就无法在必要时实现弹性。因为阿里不同业务有着不同的流量峰值,我们会结合实际情况定期对部分业务缩容,并对另外一种业务进行扩容的方式实现计划资源的伸缩。当然,寻找这样可以匹配较好的业务组会比较困难,对于采用函数等 Serverless 形态的应用,阿里构建一个公共预扩容的 Pod 池,使得不同业务紧急扩容时能够完全规避调度、网络和储存的开销,达到极致的扩容速度。
答复内容摘自《云原生大规模应用落地指南》,这本电子书收录开发者藏经阁 下载连接:https://developer.aliyun.com/topic/download?id=1055
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
阿里云拥有国内全面的云原生产品技术以及大规模的云原生应用实践,通过全面容器化、核心技术互联网化、应用 Serverless 化三大范式,助力制造业企业高效上云,实现系统稳定、应用敏捷智能。拥抱云原生,让创新无处不在。