MST

星途 面试题库

面试题:容器化应用弹性伸缩之基础概念

在容器化应用的弹性伸缩场景中,简述水平伸缩和垂直伸缩的区别,以及它们各自适用的场景。
14.0万 热度难度
后端开发容器化

知识考点

AI 面试

面试题答案

一键面试

区别

  1. 水平伸缩
    • 概念:通过增加或减少容器实例的数量来调整应用的处理能力。例如在Web应用中,增加更多相同配置的Web服务器容器来应对高流量。
    • 资源变化:每个实例的资源(如CPU、内存等)配置基本不变,主要是实例数量改变。
    • 实现方式:依赖于负载均衡器将流量均匀分配到新增或移除的容器实例上。比如使用Nginx、HAProxy等负载均衡工具。
  2. 垂直伸缩
    • 概念:通过增加或减少单个容器实例的资源(如CPU、内存等)来调整应用的处理能力。例如将容器的CPU核心数从2核增加到4核,或把内存从2GB提升到4GB。
    • 资源变化:实例数量不变,单个实例的资源量变化。
    • 实现方式:修改容器运行时的资源分配参数,比如在Docker中可以通过修改docker run命令中的--cpus--memory参数,在Kubernetes中可以通过修改Pod的资源请求和限制。

适用场景

  1. 水平伸缩适用场景
    • 高并发场景:如电商的促销活动期间,大量用户同时访问网站,通过水平伸缩快速增加Web服务器容器实例,能有效应对高并发请求。
    • 无状态应用:像大多数Web前端应用,它们不依赖特定服务器实例保存状态,可轻松水平扩展,负载均衡器能将请求均衡分配到各个实例。
    • 成本敏感场景:在非高峰时段,可以减少实例数量降低成本,高峰时增加实例,按实际需求灵活调整资源,节省开支。
  2. 垂直伸缩适用场景
    • 资源瓶颈明确:如果通过监控发现某个容器实例的CPU或内存利用率长期过高,明确是单个实例资源不足导致,垂直伸缩增加资源可直接解决问题。
    • 有状态应用:例如数据库应用,数据存储和处理依赖特定的服务器配置,增加单个实例资源能更好满足其性能需求,避免水平伸缩带来的数据一致性等复杂问题。