出自拉勾教育

Spring Cloud 是如何支撑微服务架构的

在 Java 领域可以说 Spring 无人不知无人不晓,我们现代的企业级应用与互联网应用,绝大多数都是构建在 Spring 这个生态体系上。同样的,Spring Cloud 也是在 Spring 基础上生根发芽的。

Spring Cloud 微服务介绍

下面这张图很好地诠释了 Spring、Spring Boot、Spring Cloud 它们之间的关系。
Spring 是整个微服务开发生态的基石,在此基础上 Spring 经过封装和简化,形成了Spring Boot 敏捷开发框架,而 Spring Cloud 开发微服务则必须掌握 Spring Boot,如果此时你对Spring 以及 Spring Boot 还不了解,可以在拉勾教育找到相关课程补充学习。
Spring Cloud 提供了完整的微服务架构的技术生态,像刚才我们提到的微服务架构标准组件,在 Spring Cloud 中都有着对应的实现。
image.png

Spring Cloud 内置组件

不过这里有一点需要注意,Spring Cloud 并不是完全由 Spring 机构自主开发的,秉持不重复造轮子的理念,Spring 机构整合了多家厂商的优秀开源产品,比如注册中心就选用了 Netflix 的 Eureka,在此基础上进行整合形成了完整的 Java 微服务架构解决方案。刚才我们列举出来的 8 个微服务的标准组件在 Spring Cloud 中都有对应的具体实现,值得注意的是同一类组件 Spring Cloud 可能给出多种不同的开源产品供我们选择,这些产品在 Spring Cloud 下是彼此兼容的。
image.png
以上是 Spring Cloud 的主要组成部分,这里还有许多没有提到的功能组件,如果你对此感兴趣,可以到 Spring Cloud 官网(https://spring.io/projects/spring-cloud)了解更详细的内容。
仔细看上面的表格,你会发现其中问题,正是因为 Spring Cloud 是集众家所长,但这也受制于第三方厂商的约束。以 Zuul 为例,Netflix 宣布停止维护,Spring 机构便不得不寻找替代品或者自行研发。与此同时,Spring Cloud 作为国外产品引入国内后也出现了水土不服,例如 Spring Cloud Config 默认将配置文件转存在Github仓库,但国内开发商并不喜欢这种做法,他们更希望将这些配置信息存储到自己的数据库中。因此,阿里巴巴在原有 Spring Cloud 基础上,结合阿里巴巴多年的开源技术沉淀,设计了更符合国情的 Spring Cloud Alibaba。

功能更强大的国产微服务生态Spring Cloud Alibaba

Spring Cloud Alibaba是直接隶属于 Spring Cloud 的子项目。官网是:https://spring.io/projects/spring-cloud-alibaba#overview
Spring Cloud Alibaba是国产的微服务开发一站式解决方案,与原有 Spring Cloud 兼容的同时对微服务生态进行扩展,通过添加少量的配置注解,便可实现更符合国情的微服务架构。
image.png
下面是 Spring Cloud 与 Spring Cloud Alibaba 的对比表格。
image.png
我将两者从不同维度进行比对,可以发现相比 Spring Cloud,Spring Cloud Alibaba 对服务注册、配置中心与负载均衡功能都整合进 Nacos,这样简化了微服务架构的复杂度,出问题的概率也会降低。原有的服务保护组件也调整为 Sentinel,相较Hystrix功能更强大,使用也更加友好。在表格最下方也可看到 Spring Cloud Alibaba 基于阿里云强大的能力提供了更多的新特性,很多复杂的应用场景通过 Spring Cloud Alibaba 结合阿里云便可轻松实现。