您当前的位置:首页 > 电脑百科 > 程序开发 > 架构

微服务架构开发实战:微服务的高级主题一自动扩展的定义及意义

时间:2020-09-23 10:33:04  来源:  作者:

微服务的高级主题一自动扩展

Spring Cloud 提供了大规模部署微服务所必需的支持。为了获得像云服务环境一样的能力, 微服务实例也应该能够根据流量的规模来自动扩展,也称自动缩放( Auto-scaling)。

微服务架构开发实战:微服务的高级主题一自动扩展的定义及意义

 

自我注册和自我发现

Spring Cloud有两个重要的概念,称为自我注册( self-registration )和自我发现( self-discovery )。

这两个功能支持自动化的微服务部署。通过自我注册,只要微服务实例做好准备,微服务就可以通过向中央服务注册中心( 服务注册表)注册服务元数据来自动发布该服务,并确保其可用。一旦微服务被注册,消费者就可以通过使用注册服务来发现新注册服务实例,接着就能消费这些服务。其中,服务注册表是这种自动化的核心。

Spring Cloud与传统的JAVA EE应用服务器采用的传统的集群方法完全不同。在Java EE应用程序服务器部署的过程中,服务器实例的IP地址或多或少地需要在负载均衡器中静态配置。因此,集群方法并不是在互联网大规模部署中进行自动扩展的最佳解决方案。此外,集群还会带来其他挑战,例如,它们必须在所有集群节点上具有完全相同的二进制文件版本。由于集群中的节点之间紧密的依赖关系,一个集群节点的故障也可能会使其他节点不可用。

在Spring Cloud中,服务注册表会将服务实例解耦。它还消除了在负载平衡器中手动维护服务地址或配置虚拟IP的烦琐过程。

在图14-1所示的Spring Cloud的服务注册和发现架构示意图中,自动化微服务部署主要由三个关键组件组成。

微服务架构开发实战:微服务的高级主题一自动扩展的定义及意义

 

●服务注册表:主要由Eureka Server来实现,是微服务注册和发现的中心注册组件。服务的消费者和提供者都可以通过RESTAPI来访问注册表。注册表还包含服务元数据,如服务标识、主机、端口、健康状态等信息。

●客户端:主要由Eureka Client来实现,结合Ribbon客户端一 起提供了客户端动态负载平衡。

消费者使用Eureka Client查找Eureka Server, 从而识别出目标服务的可用实例列表。Ribbon客户端使用此服务器列表在可用的微服务实例之间进行负载平衡。同样的,如果服务实例退出服务,这些实例将被从Eureka注册表中取出。负载均衡器会自动对这些动态的更改做出反应。

●微服务实例:该组件是基于Spring Boot开发的微服务实例。

以上便是前面已经实践过的部署方案。但是,这种方案存在一个缺陷,那就是当需要额外的微服务实例时,需要执行手动任务来启动新的实例。在理想情况下,微服务实例的启动和停止最好也能够自动化,从而解放手动操作。

例如,当需要添加另--个城市数据API微服务实例来处理流量增长或负载突发情况时,运维人员不得不手动去启动一个新实例。此外,城市数据API微服务实例空闲一段时间时,运维人员需要手动停止服务以获得最佳的基础设施使用率。特别是当服务使用的是按使用付费的云环境时,这对于节约成本尤其重要。

自动扩展的核心概念

自动扩展是一种基于资源使用情况自动扩展实例的方法,通过复制要缩放的服务来满足SLA( Service Level Agreement,服务等级协议)。

具备自动扩展能力的系统,会自动检测到流量的增加或减少。如果是流量增加,则会增加服务实例,从而能够使其可用于流量处理。同样的,当流量下降时,系统会通过从服务中取回活动实例来减少服务实例的数量。

如图14-2所示,微服务通常会使用一-组备用机器完成自动扩展。

微服务架构开发实战:微服务的高级主题一自动扩展的定义及意义

 

由于云环境都是基于“即用即付”的模式,因此这是定位云部署的关键功能。这种方法通常称为弹性,也称为动态资源提供和取消。自动扩展是一-种有 效的方法,专门针对具有不同流量模式的微服务。例如,购物网站通常会在“双十一”的时候迎来服务的最高流量,服务实例当然也是最多的。如果平时也配置那么多的服务实例,显然就是浪费。Amazon就是这样一- 个很好的实例,Ama-zon总是会在某个时间段迎来流量的高峰,此时,就会配置比较多的服务实例来应对高访问量。而在平时流量比较小的情况下,Amazon 就会将闲置的主机出租出去,用来收回成本。正是拥有这种强大的自动扩展的实践能力,造就了Amazon从一个网上书店成为世界云计算巨头。

在自动扩展的方法中,通常会有- -个资源池和多个备用实例。根据需求,将实例从资源池移到活动状态以满足剩余需求。在一-些高级部署场景中,这些实例并不会针对特定的微服务来预先打包成微服务的二进制文件,而是从资源库(如Nexus)中进行下载。

自动扩展的意义

实现自动扩展机制有很多好处。在传统部署中,运维人员会针对每个应用程序预留一-组服务 器。

通过自动扩展,这个预分配将不再需要。因为这些预分配的服务器,可能会导致在很长一段实间内未充分得到利用,从而演变成为一种浪费。在这种情况下,即使邻近的服务需要争取更多的资源,这些空闲的服务器也不能使用。通过数百个微服务实例,为每个微服务预分配固定数量的服务器并不符合成本效益。更好的方法是为-组微服务预留一-些服务 器实例,而不用预先分配。这样,根据需求,一组服务可以共享- -组可用的资源。这样做可以通过优化使用资源,将微服务动态移动到可用的服务器实例中。

例如,MI微服务有三个实例,M2微服务有一一个实例,M3微服务有一个实例,这些实例都是正在运行的。还有另一台服务器保持未分配。根据需求,未分配的服务器可用于任何微服务:MI、M2或M3。如果MI有更多的服务请求,那么未分配的实例将用于M1。当服务使用率下降时,服务器实例将被释放并移回到池中。之后,如果M2需求增加,则可以使用M2激活相同的服务器实例。

总结起来,使用自动扩展有以下好处。

1.提高了可用性和容错能力

由于服务是存在多个实例的,即使其中-一个实例失败,另一个实例也可以接管并继续为客户提供服务。这种故障转移对消费者来说是透明的。如果此服务的其他实例不可用,则自动扩展服务将会识别到该情况,并调用具有该服务实例的另一个服务器。随着整个实例的自动化,整个服务的可用性将高于没有自动扩展的系统。没有自动扩展的系统需要手动来进行添加或删除服务实例,这将在大型部署中难以管理。

例如,假定M1服务的两个实例正在运行。如果流量增加,在正常情况下,现有实例可能会过载。在大多数情况下,整套服务将被堵塞,导致服务不可用。而在自动扩展的情况下,可以快速创建一个新的M1服务实例。这将会平衡负载并确保服务可用性。

2.增加了可伸缩性

自动扩展的关键优势之一是水平扩 展性。自动扩展允许用户根据流量模式自动选择放大或缩小服务。

3.具有最佳使用率,并节约成本

在即付即用模式中,计费基于实际的资源利用率。通过自动扩展方式,实例将根据需求启动和关闭。因此,资源得到最佳利用,从而节省成本。

4.优先考虑某些服务或服务组

使用自动扩展可以考虑不同服务的优先级。这将通过从低优先级的服务中移除实例并将其重新分配给高优先级的服务来完成。这也将消除高优先级服务因资源紧张而得不到执行,而低优先级服务大量使用资源的情况。

微服务架构开发实战:微服务的高级主题一自动扩展的定义及意义


Tags:微服务架构   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
前言要理解微服务,首先要先理解不是微服务的那些。通常跟微服务相对的是单体应用,即将所有功能都打包成在一个独立单元的应用程序。从单体应用到微服务并不是一蹴而就的,这是一...【详细内容】
2021-07-09  Tags: 微服务架构  点击:(112)  评论:(0)  加入收藏
一、Zuul简介Zuul相当于是第三方调用和服务提供方之间的防护门,其中最大的亮点就是可动态发布过滤器二、Zuul可以为我们提供什么1、权限控制2、预警和监控3、红绿部署、(粘...【详细内容】
2021-04-21  Tags: 微服务架构  点击:(229)  评论:(0)  加入收藏
前不久作为架构师完成了某知名快消企业的一个业务中台建设。系统上线后,经历了双十一活动的流量高峰,整体运行稳定。最近有空,便将此次架构的思路,心得稍作整理在这篇博客中分享...【详细内容】
2021-02-07  Tags: 微服务架构  点击:(181)  评论:(0)  加入收藏
文章简介:作者结合自身微服务架构研发经验进行回顾、总结,本文将介绍微服务架构中,在技术选型时需要注意哪些选型原则,会遇到哪些开源框架,又该如何选择, 进行了全面的归纳、对比,希望能够为大家提供一些思路、方向,少走一些...【详细内容】
2021-02-05  Tags: 微服务架构  点击:(160)  评论:(0)  加入收藏
思维导图 文章已收录Github精选,欢迎Star:https://github.com/yehongzhi/learningSummary一、前言伴随着Eurka2.0版本已停止维护,开始要考虑使用微服务新一代的开源的注册中心...【详细内容】
2020-11-13  Tags: 微服务架构  点击:(159)  评论:(0)  加入收藏
消息总线的定义前面在1.4.2节中强调过,在微服务架构中,经常会使用REST 服务或基于消息的通信机制。在3.6节中也详细介绍了消息通信的实现方式。消息总线就是一种基于消息的通...【详细内容】
2020-09-29  Tags: 微服务架构  点击:(140)  评论:(0)  加入收藏
微服务的高级主题一自动扩展Spring Cloud 提供了大规模部署微服务所必需的支持。为了获得像云服务环境一样的能力, 微服务实例也应该能够根据流量的规模来自动扩展,也称自动缩...【详细内容】
2020-09-23  Tags: 微服务架构  点击:(96)  评论:(0)  加入收藏
Spring Cloud 微服务总体架构图Spring cloud作为当下主流的微服务框架,让我们实现微服务架构简单快捷,Spring cloud中各个组件在微服务架构中扮演的角色如图所示。spring-cl...【详细内容】
2020-09-20  Tags: 微服务架构  点击:(133)  评论:(0)  加入收藏
常见微服务的消费者本节就常见的微服务的消费者进行介绍。在Java领域比较常用的消费者框架主要有HttpClient、Ribbon、Feign 等。 Apache HttpClientApache HttpClient是Apa...【详细内容】
2020-09-11  Tags: 微服务架构  点击:(129)  评论:(0)  加入收藏
什么是微服务模式随着网络基础设施的高速发展,以及越来越多的个体接入互联网,在考虑构建支持海量请求以及多变业务的软件平台时,微服务架构成为多数人的首选。微服务架构的出现...【详细内容】
2020-09-09  Tags: 微服务架构  点击:(95)  评论:(0)  加入收藏
▌简易百科推荐
为了构建高并发、高可用的系统架构,压测、容量预估必不可少,在发现系统瓶颈后,需要有针对性地扩容、优化。结合楼主的经验和知识,本文做一个简单的总结,欢迎探讨。1、QPS保障目标...【详细内容】
2021-12-27  大数据架构师    Tags:架构   点击:(3)  评论:(0)  加入收藏
前言 单片机开发中,我们往往首先接触裸机系统,然后到RTOS,那么它们的软件架构是什么?这是我们开发人员必须认真考虑的问题。在实际项目中,首先选择软件架构是非常重要的,接下来我...【详细内容】
2021-12-23  正点原子原子哥    Tags:架构   点击:(7)  评论:(0)  加入收藏
现有数据架构难以支撑现代化应用的实现。 随着云计算产业的快速崛起,带动着各行各业开始自己的基于云的业务创新和信息架构现代化,云计算的可靠性、灵活性、按需计费的高性价...【详细内容】
2021-12-22    CSDN  Tags:数据架构   点击:(10)  评论:(0)  加入收藏
▶ 企业级项目结构封装释义 如果你刚毕业,作为Java新手程序员进入一家企业,拿到代码之后,你有什么感觉呢?如果你没有听过多模块、分布式这类的概念,那么多半会傻眼。为什么一个项...【详细内容】
2021-12-20  蜗牛学苑    Tags:微服务   点击:(8)  评论:(0)  加入收藏
我是一名程序员关注我们吧,我们会多多分享技术和资源。进来的朋友,可以多了解下青锋的产品,已开源多个产品的架构版本。Thymeleaf版(开源)1、采用技术: springboot、layui、Thymel...【详细内容】
2021-12-14  青锋爱编程    Tags:后台架构   点击:(20)  评论:(0)  加入收藏
在了解连接池之前,我们需要对长、短链接建立初步认识。我们都知道,网络通信大部分都是基于TCP/IP协议,数据传输之前,双方通过“三次握手”建立连接,当数据传输完成之后,又通过“四次挥手”释放连接,以下是“三次握手”与“四...【详细内容】
2021-12-14  架构即人生    Tags:连接池   点击:(16)  评论:(0)  加入收藏
随着移动互联网技术的快速发展,在新业务、新领域、新场景的驱动下,基于传统大型机的服务部署方式,不仅难以适应快速增长的业务需求,而且持续耗费高昂的成本,从而使得各大生产厂商...【详细内容】
2021-12-08  架构驿站    Tags:分布式系统   点击:(23)  评论:(0)  加入收藏
本系列为 Netty 学习笔记,本篇介绍总结Java NIO 网络编程。Netty 作为一个异步的、事件驱动的网络应用程序框架,也是基于NIO的客户、服务器端的编程框架。其对 Java NIO 底层...【详细内容】
2021-12-07  大数据架构师    Tags:Netty   点击:(16)  评论:(0)  加入收藏
前面谈过很多关于数字化转型,云原生,微服务方面的文章。虽然自己一直做大集团的SOA集成平台咨询规划和建设项目,但是当前传统企业数字化转型,国产化和自主可控,云原生,微服务是不...【详细内容】
2021-12-06  人月聊IT    Tags:架构   点击:(23)  评论:(0)  加入收藏
微服务看似是完美的解决方案。从理论上来说,微服务提高了开发速度,而且还可以单独扩展应用的某个部分。但实际上,微服务带有一定的隐形成本。我认为,没有亲自动手构建微服务的经历,就无法真正了解其复杂性。...【详细内容】
2021-11-26  GreekDataGuy  CSDN  Tags:单体应用   点击:(35)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条