文章目录
- 微服务架构的挑战与解决方案 —— Spring Cloud
- 挑战
- 微服务挑战解决方案 - Spring Cloud
- 什么是Spring Cloud
- Spring Cloud 版本
- Spring Cloud实现方案
- Spring Cloud Netflix
- Spring Cloud Alibaba
微服务架构的挑战与解决方案 —— Spring Cloud
挑战
- 服务依赖复杂性
随着微服务数量的增长,服务之间的依赖关系变得更加复杂。一个服务的更改可能会影响到多个其他服务,增加了维护的难度和成本。 - 运维成本上升
微服务架构下,一个业务流程可能由多个微服务共同完成,这要求运维团队需要处理更多的服务编译、部署、运行等工作。同时,不同服务可能使用不同的编程语言和运行环境,进一步增加了运维的复杂性。 - 开发和测试难度增加
微服务间的网络调用引入了网络延迟和不可靠性,增加了开发和测试的难度。此外,如何进行有效的容错处理也是开发人员需要面对的问题。 - 服务监控的复杂性
在微服务架构中,不仅需要对整个链路进行监控,还需要对每一个服务进行细致监控,以确保系统的稳定性和性能。 - 负载均衡的挑战
微服务架构中的服务实例数量可能非常庞大,需要有效的服务发现和负载均衡机制来管理请求流量和保证高可用性。
微服务挑战解决方案 - Spring Cloud
什么是Spring Cloud
Spring Cloud提供了一系列工具,帮助开发人员快速构建分布式服务,解决微服务架构中的常见问题。它集成了配置管理、服务发现、熔断、智能路由等多种功能,是微服务架构落地的理想选择。
也就是说,**Spring Cloud是分布式微服务架构的一站式解决方案,**是微服务架构落地的多种技术的集合
值得注意的是,Spring Cloud并不是Spring团队研发的框架,它只是将一些比较优秀的解决微服务架构中常见问题的开源框架,基于SpringCloud规范进行流量整合,并基于SpringBoot的风格,对这些组件进行了封装.屏蔽掉了复杂的配置和原理实现,为开发中提供了开箱即用的微服务开发体验
Spring Cloud 版本
Spring Cloud是一个由很多子项目组成的庞大项目,这些子项目由各个公司来维护的,所以发布阶段也时不同的
为了管理主项目和子项目的关系,以及为了避免和子项目版本的冲突,主项目版本命名并没有采用和子项目数字版本化的形式,而是使用了英文单词来命名
但是英文版本号太复杂了,从Hoxton版本之后,Spring Cloud版本就变成了2020.0.0 这样的日期版本号了
由于Spring Cloud中所有子项目都依赖SpringBoot,所以SpringBoot 和Spring Cloud 的版本之间也存在一定如上图所示的对应关系
Spring Cloud实现方案
在Spring Cloud的规范下,有很多实现,其中最为出名的是
- Spring Cloud Netflix
- Spring Cloud Alibaba
Spring Cloud Netflix
Spring Cloud Netflix 是 Netflix OSS在Spring Cloud规范下的实现
包含的组件以及其主要功能大致如下:
- Eureka:服务的注册以及实现
- Zuul:服务网关
- Ribbon:负载均衡
- Feign:服务调用组件
- Hystrix:断路器,提供服务熔断和限流
- Hystrix Dashboard:监控面板
- …
在很长的一段时间内,Spring Cloud一度被泛指为Spring Cloud Netflix.因为Spring Cloud一直以来将 Netflix OSS套件作为其官方默认的一站式解决方案
然而,Netflix公司在2018年后宣布其核心组件Hystrix,Ribbon,Zuul等进入维护状态,Spring Cloud也被迫宣布删除这些维护模块
即使这样在短时间内影响不大,但是长期显然是不合适的,Spring Cloud官方也提供了一些替换建议
Netflix | 推荐替代品 | 说明 |
---|---|---|
Hystrix | Resilience4j | 替代Hystrix进行断路器、限流等弹性设计 |
Hystrix Dashboard/Turbine | Micrometer + Monitoring System | 一个更专业的监控解决方案 |
Ribbon | Spring Cloud Loadbalancer | 替代Ribbon进行客户端负载均衡(Spring自己实现) |
Zuul 1 | Spring Cloud Gateway | 替代Zuul作为API网关(Spring自己实现) |
Archaius 1 | Spring Boot外部化配置 + Spring Cloud配置 | 替代Archaius进行配置管理 |
Spring Cloud Alibaba
作为阿里巴巴集团下的开源组件和云产品在Spring Cloud规范下的实现,Spring Cloud Alibaba吸收了Spring Cloud Netflix的核心架构思想,并进行了高性能改进。在Spring Cloud Netflix停更后,Spring Cloud Alibaba逐渐成为主流的微服务框架。