当前位置: 首页 > news >正文

微服务系统设计:横向扩展和纵向扩展的对比

微服务扩展性:水平扩展 vs 垂直扩展

特点水平扩展垂直扩展
扩展单位增加微服务实例增加单个实例的资源 (CPU,内存)
方向向外,增加节点向上,增加单个节点的资源
复杂性随着实例数量的增加,管理难度更大管理更简单,但资源限制容易达到
容错性容错性更高,一个实例的故障不会影响其他实例容错性较低,单个实例故障可能会影响整个服务
成本通常更昂贵,因为需要增加基础设施刚开始可能更便宜,但随着资源需求增加,成本可能会上升
性能性能可以随着实例的增加线性提升性能提升可能受限于单个节点的瓶颈
扩展速度通过添加新实例可以快速扩展扩展速度可能较慢,需要重新启动或调整现有实例
微服务隔离保持微服务之间清晰的隔离当资源在单个节点上共享时,微服务之间的边界可能模糊
监控和日志记录需要跨多个实例进行监控和日志记录监控和日志记录集中在单个实例上
适用场景高流量且负载不可预测的服务,无状态服务负载可预测的服务,有状态服务,需要高 CPU 或内存资源的服务

额外注意事项:

  • 由于其弹性和容错性,水平扩展通常更适用于无状态微服务。
  • 垂直扩展对于有状态微服务或负载可预测的服务可能是有效的。
  • 也可以结合水平和垂直扩展的混合方法。
  • 选择水平扩展还是垂直扩展取决于具体的应用需求和限制。

相关文章:

  • C#基础题
  • Java中使用StopWatch实现代码块耗时统计/计时某段代码执行
  • ​LeetCode解法汇总2670. 找出不同元素数目差数组
  • C语言指针学习 之 指针是什么
  • python验证服务器或容器端口是否可以用
  • Linux(ubuntu) -- 安装后调配
  • C语言实现12种排序算法
  • kubernetes内外网通信-集群外节点访问 pod ip
  • k8s二进制及负载均衡集群部署详解
  • grafana安装DevOpsProdigy KubeGraf 1.5.2
  • 协作办公开源神器:ONLYOFFICE
  • BrainAGE作为大脑老化的神经影像标志物的十年
  • 微信小程序for循环嵌套
  • css3 属性 backface-visibility 的实践应用
  • map和set封装
  • IE9 : DOM Exception: INVALID_CHARACTER_ERR (5)
  • 8年软件测试工程师感悟——写给还在迷茫中的朋友
  • Android框架之Volley
  • Android路由框架AnnoRouter:使用Java接口来定义路由跳转
  • Bytom交易说明(账户管理模式)
  • CSS 提示工具(Tooltip)
  • iBatis和MyBatis在使用ResultMap对应关系时的区别
  • PAT A1120
  • Sequelize 中文文档 v4 - Getting started - 入门
  • STAR法则
  • 猴子数据域名防封接口降低小说被封的风险
  • 理解 C# 泛型接口中的协变与逆变(抗变)
  • 数据仓库的几种建模方法
  • 由插件封装引出的一丢丢思考
  • 关于Kubernetes Dashboard漏洞CVE-2018-18264的修复公告
  • 数据可视化之下发图实践
  • ​Base64转换成图片,android studio build乱码,找不到okio.ByteString接腾讯人脸识别
  • ​LeetCode解法汇总2670. 找出不同元素数目差数组
  • "无招胜有招"nbsp;史上最全的互…
  • #include<初见C语言之指针(5)>
  • ${factoryList }后面有空格不影响
  • (C#)if (this == null)?你在逗我,this 怎么可能为 null!用 IL 编译和反编译看穿一切
  • (poj1.2.1)1970(筛选法模拟)
  • (Redis使用系列) Springboot 在redis中使用BloomFilter布隆过滤器机制 六
  • (ZT)北大教授朱青生给学生的一封信:大学,更是一个科学的保证
  • (第二周)效能测试
  • (附源码)ssm高校实验室 毕业设计 800008
  • (十六)Flask之蓝图
  • (转)jdk与jre的区别
  • (转)可以带来幸福的一本书
  • *++p:p先自+,然后*p,最终为3 ++*p:先*p,即arr[0]=1,然后再++,最终为2 *p++:值为arr[0],即1,该语句执行完毕后,p指向arr[1]
  • .bat批处理(十一):替换字符串中包含百分号%的子串
  • .NET Framework .NET Core与 .NET 的区别
  • .NET MVC 验证码
  • .Net下的签名与混淆
  • .set 数据导入matlab,设置变量导入选项 - MATLAB setvaropts - MathWorks 中国
  • [ C++ ] STL_stack(栈)queue(队列)使用及其重要接口模拟实现
  • [ 云计算 | AWS ] AI 编程助手新势力 Amazon CodeWhisperer:优势功能及实用技巧
  • [BZOJ 3531][Sdoi2014]旅行(树链剖分+线段树)
  • [BZOJ4010]菜肴制作