Spring|Spring Cloud学习笔记25——自动扩展

垂直扩展 Spring|Spring Cloud学习笔记25——自动扩展
文章图片

水平扩展 Spring|Spring Cloud学习笔记25——自动扩展
文章图片

自我注册和自我发现

  • 服务注册表
  • 客户端
  • 微服务实例
Spring|Spring Cloud学习笔记25——自动扩展
文章图片

按需扩展 Spring|Spring Cloud学习笔记25——自动扩展
文章图片

自动扩展的意义 好处:
  • 提高了高可用性和容错能力
  • 增加了可伸缩性
  • 具有最佳使用率,并节约成本
  • 优先考虑某些服务或服务组
自动扩展的常见模式 自动扩展的不同级别 应用程序级别
Spring|Spring Cloud学习笔记25——自动扩展
文章图片

基础架构级别
【Spring|Spring Cloud学习笔记25——自动扩展】Spring|Spring Cloud学习笔记25——自动扩展
文章图片

自动扩展的常用方法 资源限制 Spring|Spring Cloud学习笔记25——自动扩展
文章图片

特定时间段 Spring|Spring Cloud学习笔记25——自动扩展
文章图片

消息长度 Spring|Spring Cloud学习笔记25——自动扩展
文章图片

业务参数 Spring|Spring Cloud学习笔记25——自动扩展
文章图片

根据预测
  • 历史信息
  • 当前趋势
如何实现微服务的自动扩展 要思考的问题 Spring|Spring Cloud学习笔记25——自动扩展
文章图片

所需功能 依赖两个关键功能:
  • 一个容器抽象层,在许多物理或虚拟机上提供统一的抽象:如果没有统一的抽象,所部署的实例可能千差万别,很难按照统一编排进行扩展
  • 容器编排和初始化系统在集群抽象之上智能管理部署
容器编排
  • 容器编排工具提供了一个抽象层来处理大规模的集装箱部署
  • 具备发现、资源管理、监控和部署等功能
容器编排工作职责
  • 集群管理:将一个虚拟的或物理的集群作为一个大型的机器进行管理,这些机器在资源方面可能是异构的,但是基本上还是以Linux为主要的操作系统的机器,这些虚拟的集群可以在云端也可以在本地,或者是两地的结合
  • 自动部署:应该能够支持应用程序容器的多个版本,并支持在大量的集群的基础上进行滚动升级,这些工具应该能够处理错误,并且可以回滚到一些可用的版本上
  • 可伸缩性:可以根据需要来处理应用程序实例的自动以及手动的可伸缩性能,并将其作为一个主要目标来进行优化利用
  • 运行状况监控:适用于管理集群、结点、应用程序的运行状况,可以从集群中删除一些故障的机器或应用程序实例
  • 基础架构抽象:做了抽象后,开发者不用担心机器、容量等问题,因为这些都是容器编排软件来决定的
  • 资源优化
  • 资源分配:根据应用程序,开发人员设置的一些资源可用性和约束来分配服务器,资源分配将基于约束来进行实施
  • 服务可用性:要确保服务在集群中能够正常运行,在发生机器故障的情况下,容器编排要通过在集群中的某个其他的机器上能够重新启动这些服务来自动地处理这些故障
  • 敏捷性:将工作负载分配给可用的一些资源,或者在资源需求发生变化时将工作负载迁至其他的机器上,此外还可以根据业务关键性、业务的优先级等等来设置约束,重新调整资源
  • 隔离:这些工具中有一些是提供了一些即开即用的资源隔离的功能,因此即使这个应用程序没有进行容器化,也能够实现资源的隔离
资源分配常用算法
  • 传播(Spread
  • 装箱(Bin Packing
  • 随机(Random
传播 将负载平均分配到各个主机上
Spring|Spring Cloud学习笔记25——自动扩展
文章图片

装箱 试图通过机器来填充来确保机器的最大使用率
Spring|Spring Cloud学习笔记25——自动扩展
文章图片

随机 随机地在某一台机器上部署
Spring|Spring Cloud学习笔记25——自动扩展
文章图片

常用的容器编排技术
  • Docker Swarm
  • Kubernetes
  • Apache Mesos

    推荐阅读