目录
[1. spring cloud alibaba 特点](#1. spring cloud alibaba 特点)
[2.springcloud 组件](#2.springcloud 组件)
[3. 加入启动服务注册注解 [注意:][新版本之后这步可以省略不写]](#3. 加入启动服务注册注解 [注意:][新版本之后这步可以省略不写])
一、SpringCloudAlibaba简介
Spring Cloud Alibaba provides a one-stop solution for distributed application development. It contains all the components required to develop distributed applications, making it easy for you to develop your applications using Spring Cloud.
spring cloud 用来解决微服务系统中(分布式系统)解决方案
spring cloud alibaba 用来解决微服务系统中解决方案
With Spring Cloud Alibaba, you only need to add some annotations and a small amount of configurations to connect Spring Cloud applications to the distributed solutions of Alibaba, and build a distributed application system with Alibaba middleware.
原文翻译
https://spring.io/projects/spring-cloud-alibaba
阿里云为分布式应用开发提供了一站式解决方案。它包含了开发分布式应用程序所需的所有组件,使您可以轻松地使用springcloud开发应用程序。
有了阿里云,你只需要添加一些注解和少量的配置,就可以将Spring云应用连接到阿里的分布式解决方案上,用阿里中间件搭建一个分布式应用系统。
1. spring cloud alibaba 特点
a.服务降级和流量控制 sentinel 替换 hystrix
b.服务注册与发现 nacos 替换 eureka consul
c.分布式配置& 事件驱动消息总线 nacos 替换 config & bus
d.分布式事务&dubbo seta
2.springcloud 组件
服务注册与发现组件 eureka consul nacos
服务间通信组件 restTemplate+ribbon,Openfeign restTemplate+ribbon,Openfeign
服务降级和熔断 hystrix hystrix dashboard sentinel
服务网关组件 gateway gateway
统一配置中心组件 消息总线组件 config bus nacos
二、环境搭建
1.构建项目并引入依赖
XML
<!--定义springcloud版本-->
<properties>
<spring.cloud.alibaba.version>2.2.1.RELEASE</spring.cloud.alibaba.version>
</properties>
<!--全局引入springcloudalibaba下载依赖地址,并不会引入依赖-->
<dependencyManagement>
<dependencies>
<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>
三、Nacos
1.什么是Nacos
Name Service(服务注册与发现) & Configurations Services(统一配置中心)
https://nacos.io/zh-cn/index.html
Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。
总结:Nacos就是微服务架构中服务注册中心以及统一配置中心,用来替换原来的(eureka,consul)以及config组件
2.安装Nacos
准备环境
1.64 bit OS,支持 Linux/Unix/Mac/Windows,推荐选用 Linux/Unix/Mac。必须满足
2.64 bit JDK 1.8+;下载 & 配置。 必须满足
3.Maven 3.2.x+;下载 & 配置。
下载nacos
https://github.com/alibaba/nacos/releases
解压缩安装包到指定位置
[root@localhost ~]# tar -zxvf nacos-server-1.3.1.tar.gz
bin 启动nacos服务的脚本目录
conf nacos的配置文件目录
target nacos的启动依赖存放目录
data nacos启动成功后保存数据的目录
3.启动安装服务
linux/unix/mac启动
打开终端进入nacos的bin目录执行如下命令
./startup.sh -m standalone
windows启动
在 cmd中
执行 startup.cmd -m standalone 或者双击startup.cmd运行文件。
4.访问nacos的web服务管理界面
-
用户名 和 密码都是nacos
四、开发服务注册到nacos
1.创建项目并引入依赖
XML
<!--引入nacos client的依赖-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
2.配置注册地址
XML
server.port=8789 #指定当前服务端口
spring.application.name=nacosclient #指定服务名称
spring.cloud.nacos.server-addr=localhost:8848 #指定nacos服务地址
spring.cloud.nacos.discovery.server-addr=${spring.cloud.nacos.server-addr} #指定注册中心地址
management.endpoints.web.exposure.include=* #暴露所有web端点
3. 加入启动服务注册注解 [注意:][新版本之后这步可以省略不写]
4.查看nacos的服务列表
五、使用nacos作为配置中心
1.从nacos获取配置
1.创建项目并引入nacons配置中心依赖
XML
<!--引入nacos client 依赖-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!--引入配置中心依赖-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
2.配置配置中心地址
XML
spring.cloud.nacos.server-addr=localhost:8848 # 远程配置中心的地址
spring.cloud.nacos.config.server-addr=${spring.cloud.nacos.server-addr} # 去指定nacos地址读取配置
spring.cloud.nacos.config.group=DEFAULT_GROUP # 读取配置的分组
spring.cloud.nacos.config.file-extension=properties # 指定读取文件后缀
spring.application.name=config # 指定读取文件的前缀
spring.profiles.active=prod # 指定读取文件的具体环境
3.在nacos中创建配置
4.编写控制器测试配置读取情况
java
@RestController
@Slf4j
public class HelloController {
//注入配置
@Value("${user.name}")
private String username;
@GetMapping("/hello/config")
public String config(){
log.info("用户名: [{}]",username);
return username;
}
}
5.DataId
1.DataId
用来读取远程配置中心的中具体配置文件其完整格式如下:
{prefix}-{spring.profile.active}.${file-extension}
a. prefix 默认为 spring.application.name 的值,也可以通过配置项 spring.cloud.nacos.config.prefix来配置。
b. spring.profile.active 即为当前环境对应的 profile,详情可以参考 Spring Boot文档。 注意:当 spring.profile.active 为空时,对应的连接符 - 也将不存在,dataId 的拼接格式变成 {prefix}.{file-extension}
c. file-exetension 为配置内容的数据格式,可以通过配置项 spring.cloud.nacos.config.file-extension 来配置。目前只支持 properties 和 yaml 类型。
6.实现自动配置刷新
1.自动刷新
- 默认情况下nacos已经实现了自动配置刷新功能,如果需要刷新配置直接在控制器中加入@RefreshScope注解即可
java
@RestController
@Slf4j
@RefreshScope
public class HelloController {
//注入配置
@Value("${user.name}")
private String username;
@GetMapping("/hello/config")
public String config(){
log.info("用户名: [{}]",username);
return username;
}
}
7.命名空间
1.命名空间(namespace)
-
https://github.com/alibaba/spring-cloud-alibaba/wiki/Nacos-config
-
namespace命名空间是nacos针对于企业级开发设计用来针对于不同环境的区分,比如正在企业开发时有测试环境,生产环境,等其他环境,因此为了保证不同环境配置实现隔离,提出了namespace的概念,默认在nacos中存在一个public命名空间所有配置在没有指定命名空间时都在这个命名空间中获取配置,在实际开发时可以针对于不能环境创建不同的namespace空间。默认空间不能删除!
2.创建其他命名空间
- 每个命名空间都有一个唯一id,这个id是读取配置时指定空间的唯一标识
3.在配置列表查看空间
4.在指定空间下载创建配置文件
5.项目中使用命名空间指定配置
6.配置分组
1.配置分组(group)
- 配置分组是对配置集进行分组,通过一个有意义的字符串(如 Buy 或 Trade )来表示,不同的配置分组下可以有相同的配置集(Data ID)。当您在 Nacos 上创建一个配置时,如果未填写配置分组的名称,则配置分组的名称默认采用 DEFAULT_GROUP 。配置分组的常见场景:可用于区分不同的项目或应用,例如:学生管理系统的配置集可以定义一个group为:STUDENT_GROUP。
2.创建分组
3.读取不同分组的配置
下一篇来讲解nacos的持久化和高可用