分布式组件 SpringCloud Alibaba 简单接触
前言
在分布式开发中需要知道3个概念-微服务-注册中心、配置中心、网关。
注册中心
如果有各个微服务,每个微服务上线都应该注册注册中心,这样做的好处是统一管理,方便远程调用。
配置中心
能够统一集中管理配置,假设存在多个商品服务,我们只需要在配置中心修改,每个商品服务就能实时从配置中心获取配置
网关
所有请求,都可统一管理,附带鉴权、过滤、路由的作用。
# SpringCloud 的几大痛点
- 部分组件停止维护和更新,给开发带来不便;
- 部分环境搭建复杂,没有完善的可视化界面,我们需要大量的二次开发和定制
- 配置复杂,难以上手,部分配置差别难以区分和合理应用
# SpringClouAlibaba的优势
详细介绍:https://github.com/alibaba/spring-cloud-alibaba/blob/master/README-zh.md
阿里使用过 的组件经理考研,性能强悍,设计合理,现在开源出来大家用成套的产品搭配完善的可视化界面给开发运维带来极大的便利,搭配简单,学习曲线低。
# 最终的技术搭配方案
结合SpringCloud Alibaba 我们最终的技术搭配方案:
- SpringCloud Alibaba - Nacos:注册中心(服务发现/注册)
- SpringCloud Alibaba - Nacos:配置中心(动态配置管理)
- SpringCloud - Ribbon:负载均衡
- SpringCloud - Feign:声明式HTTP客户端(调用远程服务)
- SpringCloud Alibaba - Sentinel:服务容错(限流、降级、熔断)
- SpringCloud - Gateway:API网关(webflux编程模式)
- SpringCloud - Sleuth:调用链监控
- SpringCloud Alibaba - Seata:原Fescar,即分布式事务解决方案
如何整合?
# 版本选择
https://github.com/alibaba/spring-cloud-alibaba/blob/master/README-zh.md
在官方文档中,有这一段。
项目的版本号格式为 x.x.x 的形式,其中 x 的数值类型为数字,从 0 开始取值,且不限于 0~9 这个范围。项目处于孵化器阶段时,第一位版本号固定使用 0,即版本号为 0.x.x 的格式。
由于 Spring Boot 1 和 Spring Boot 2 在 Actuator 模块的接口和注解有很大的变更,且 spring-cloud-commons 从 1.x.x 版本升级到 2.0.0 版本也有较大的变更,因此我们采取跟 SpringBoot 版本号一致的版本:
- 1.5.x 版本适用于 Spring Boot 1.5.x
- 2.0.x 版本适用于 Spring Boot 2.0.x
- 2.1.x 版本适用于 Spring Boot 2.1.x
- 2.2.x 版本适用于 Spring Boot 2.2.x
# 引入依赖
在common模块的pom.xml下引入依赖,然后刷新maven
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2.2.3.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
2
3
4
5
6
7
8
9
10
11
上面是依赖管理,相当于以后再dependencies里引spring cloud alibaba就不用写版本号, 全用dependencyManagement进行管理