Spring Cloud
本文中我们主要介绍微服务开发框架——Spring Cloud。尽管Spring Cloud带有"Cloud"的字样,但它并不是云计算解决方案,而是Spring Boot的基础上构建的,用于快速构建分布式系统的通用模式的工具集。
Spring Cloud有以下特点:
由上图可知,Spring Cloud是以 英文单词+SR+数字 的形式命名版本号的。那么英文单词和SR分别表示什么呢?
因为Spring Cloud是一个综合项目,它包含很多子项目。由于子项目也维护着自己的版本号,Spring Cloud采用了这种命名方式,从而避免与子项目的版本混淆。其中英文单词如Edware是伦敦某地铁站名,它们按照字母顺序发行,可以将其理解为主版本的演进。SR表示"Service Release",一般表示Bug修复。
版本兼容性如下
版本内容
可参考官方文档: https://spring.io/projects/spring-cloud#overview
我的上一篇博客(微服务理论篇)中谈到,对单体应用进行服务拆分得到各个微服务,而这些服务又是相互独立的,那么我们如何知道各个微服务的健康状态、如何知道某个微服务的存在呢?由此、一个拥有服务发现的框架显得尤为重要。这也就是Eureka诞生的原因。
综上,Eureka通过心跳检查、客户端缓存等机制,确保了系统的高可用性、灵活性和可伸缩性。
通过使用Eureka已经实现了微服务的注册与发现。启动各个微服务时,Eureka Client会把自己的网络信息注册到Eureka Server上。似乎一切更美好了一些。然而,这样的架构依然有一些问题,如负载均衡。一般来说,各个微服务都会部署多个实例。那么服务消费者要如何将请求分摊到多个服务提供实例上呢?
如果服务提供者相应非常慢,那么消费者对提供者的请求就会被强制等待,知道提供者响应或超时。在高负载场景下,如果不作任何处理,此类问题可能会导致服务消费者的资源耗竭甚至整个系统崩溃。
微服务架构的应用系统通常包含多个服务层。微服务之间通过网络进行通信,从而支撑起整个应用系统,因此,微服务之间难免存在依赖关系。而这种由于"基础服务故障"导致"级联故障"的现象称为雪崩效应。
如图所示,A最为服务提供者(基础服务),B为A的服务消费者,C和D是B的服务消费者。当A不可用引起了B的不可用,并将不可用像滚雪球一样放大到C和D时,雪崩效应就形成了。
那么Hystrix是如何容错的呢?
以下对该图做个简单讲解:
Zuul作为微服务架构中的微服务网关。微服务架构经过前几个组件的组合,已经有了基本的雏形了,那么我们为什么还要使用微服务网关呢?我们可以想象,一般情况下我们一个业务并不是只调用一个接口就可以完成一个业务需求。
如果让客户端直接与各个微服务通信,会有以下问题:
如图,微服务网关封装了应用程序的内部结构,客户端只须跟网关交互,而无须直接调用特定微服务接口。同时,还有以下优点:
为什么要同一管理微服务配置?
对于传统的单体应用,常常使用配置文件管理所有配置。例如一个Spring Boot 项目开发的单体应用,可以将配置内容放到application.yml文件中。如果需要切换环境,可以设置多个Profile,并在启用应用时指定spring.profile.active={profile}。
而在微服务架构中,微服务的配置管理一般有以下需求:
巧雯复方: Spring Cloud 是Pivotal提 供的用于简化分布式系统构建的工具集.Spring Cloud引入了云平台连接器(Cloud Connector)和服务连接器(Service Connector)的概念.云平台连接器是一个接口,需要由云平台提供者进行实现,以便库中的其他模块可以与该云平台协同工作.
清涧县14725044559: 如何使用Spring Cloud - ?
巧雯复方: 使用Spring Cloud构建实际的微服务架构.基本概念:使用Docker进行集成测试混合持久化微服务架构服务发现API网关Docker使用Docker对每一个服务进行构建和部署.使用Docker Compose在一个开发机上进行端到端的集成测试....
清涧县14725044559: spring cloud,基于什么实现 - ?
巧雯复方: Spring Cloud的子项目,大致可分成两类,一类是对现有成熟框架”Spring Boot化”的封装和抽象,也是数量最多的项目;第二类是开发了一部分分布式系统的基础设施的实现,如Spring Cloud Stream扮演的就是kafka, ActiveMQ这样的角色....
清涧县14725044559: spring boot和Spring Cloud有什么区别? - ?
巧雯复方: spring boot 下个项目会用,作为app的服务端框架,spring boot 我理解就是把spring spring mvc spring data jpa 等等的一些常用的常用的基础框架组合起来,提供默认的配置,然后提供可插拔的设计,就是各种starter,来方便开发者使用这一系...
清涧县14725044559: 如何使用Spring Boot/Spring Cloud 实现微服务应用 - ?
巧雯复方: Spring Cloud介绍 spring Cloud是一个基于Spring Boot实现的云应用开发工具,它为基于JVM的云应用开发中的配置管理、服务发现、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态管理等操作提供了一种简...
清涧县14725044559: spring cloud 有哪些功能 - ?
巧雯复方: 用了二个多月,理解的就这些:1. 注册中心(易分布,易扩充)2. 网关(保护服务,权限统一验证)3. 配置中心(配置统一管理)4. 基于http的服务调用(调用简单)5. 熔断器(容灾)6. 监控 坑很多,一步一个坑.
清涧县14725044559: Spring boot与Spring cloud 是什么关系 - ?
巧雯复方: spring Cloud是一个基于Spring Boot实现的云应用开发工具,它为基于JVM的云应用开发中的配置管理、服务发现、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态管理等操作提供了一种简单的开发方式.spring boot 的优点是可以快速启动,快速构建应用程序,而不需要太多的配置文件.spring cloud 是分布式开发的解决方案,基于spring boot,在spring boot做较少的配置,便可成为 spring cloud 中的一个微服务
清涧县14725044559: 求助,Spring Cloud是什么?还有Gradle - ?
巧雯复方: Spring Cloud是一些东西的集合,基础是Spring Boot,学过Spring MVC应该比较好入门. Gradle是一个构建工具,跟Maven类似,你可以把它当做另一种用法的Maven就行了.
清涧县14725044559: 现在为什么越来越多的公司要用Spring Cloud? - ?
巧雯复方: Spring作为企业应用构建的利器已深入人心,Spring Cloud提供一套分布式应用常见问题的解决方案,帮助企业应用迅速云化.华为在构建自己的微服务框架的过程中充分借鉴了Spring以及SpringCloud 的很多优秀思想.我们公司也在用,是和上海艾班仕合作的.