SpringCloud(十)——Spring Cloud Alibaba组件
前言
该微服务工具集是分布式应用开发的一整套解决方案。换句话说,该工具集为分布式应用开发提供了一站式解决方案,其中包含开发分布式应用的所有组件。
- SpringCloudAlibaba特性以及提供的组件:
- 服务流量控制和服务降级(
Sentinel ):对应替换Hystrix ; - 服务注册和发现组件(
Nacos ):对应替换consul 以及Eureka ; - 统一中心(
Nacos ):对应替换config ; - 事件驱动(
RocketMQ ):对应替换Bus ; - 分布式事务支持(
Seata ); - Dubbo RPC:使用这个协议的前提是各个微服务使用的语言必须是同一种(Java)。
上述的几个组件中,Alibaba被使用的是前三个(即加粗)的组件,现今微服务开发使用的组件为:
- Nacos:服务注册中心以及统一配置中心;
- HttpRest:结合Ribbon或OpenFeign组件实现服务间的负载均衡通信;
- Sentinel:服务流量监控以及服务降级;
- Gateway:网关组件。
父项目环境搭建
本篇笔记开始说明SpringCloudAlibaba的相关组件,其项目环境搭建和SpringCloud完全相同,只是引入依赖有些区别。
<properties>
<spring.cloud-version>2021.0.0</spring.cloud-version>
<spring.cloud.alibaba.version>2.2.7.RELEASE</spring.cloud.alibaba.version>
</properties>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.6.3</version>
</parent>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring.cloud-version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>${spring.cloud.alibaba.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
【注】:我们新开的父项目在一个新的路径下,这个时候需要将该目录下的JDK和Maven重新配置,否则会出现问题。
Nacos替换consul
使用Nacos替换consul需要注意的是,连接注册中心的依赖需要更改,远端服务器中的注册中心组件需要更改。
Nacos下载
Nacos下载教程
在此需要说明一下,下载教程中为大家提供了两个下载链接,主要是版本不同,大家注意区分。因为大家在使用Nacos 依赖的版本如果过高(2.0版本以上)的时候,低版本的Nacos 服务无法承载本地的版本。
查看Nacos 在GitHub中的版本依赖开一发现,在1.4.1版本开始修改了老版本的客户端代码,所以大家要区分自己需要的版本。
Nacos客户端配置
在此创建的NacosClient 服务仅仅代指需要注册到注册中心的微服务。
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
</dependencies>
server.port=8081
spring.application.name=NACOSCLIENT
# 配置总nacos
#spring.cloud.nacos.server-addr=${ip}:8848
# 单纯配置注册中心的路径
spring.cloud.nacos.discovery.server-addr=${ip}:8848
# 服务名 ,默认为SpringBoot服务名,所以可以不写
#spring.cloud.nacos.discovery.service=${spring.application.name}
@SpringBootApplication
public class NacosClientApplication {
public static void main(String[] args) {
SpringApplication.run(NacosClientApplication.class,args);
}
}
**【注】:**如果发现启动过程中发现无法连接到Nacos服务,请检查网络以及自己的版本是否可以可以匹配。
Nacos套用OpenFeign
Nacos使用OpenFeign进行服务间通信需要注意一些问题,如下:
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<exclusions>
<exclusion>
<groupId>com.netflix.ribbon</groupId>
<artifactId>ribbon</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-loadbalancer</artifactId>
</dependency>
**【注】:**注释里面都说明了,在此不做赘述。
总结
从本篇笔记开始记录的问题,都是基于之前笔记的说明, 所以建议想要学习的同学进行系统的学习。最后,大家一定要对自己使用的版本进行查看。
|