我是靠谱客的博主 慈祥大雁,这篇文章主要介绍springcloud alibaba快速入门springcloud alibaba,现在分享给大家,希望可以做个参考。

文章目录

  • springcloud alibaba
    • nacos
      • 1. nacos是注册中心和配置中心。
      • 2. 如何注册到nacos注册中心
      • 3. nacos服务发现
      • 4. nacos集成openFeign
      • 5. nacos集成gateway
      • 6. 以集群模式启动nacos-server
      • 7. nacos配置中心

springcloud alibaba

springcloud alibaba项目地址: https://github.com/alibaba/spring-cloud-alibaba

版本依赖关系:https://github.com/alibaba/spring-cloud-alibaba/wiki/版本说明

nacos

1. nacos是注册中心和配置中心。

NacosServer相当于EurekaServer,EurekaServer是自己搭建的项目,NacosServer不需要自己搭建。

下载NacosServer地址:https://github.com/alibaba/nacos/releases/tag/2.0.3。

下载完成后创建一个nacos数据库,导入nacos-server中conf目录下的nacos-mysql.sql。

根据本机的数据库 修改conf目录下的application.properties

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
#*************** Config Module Related Configurations ***************# ### If use MySQL as datasource: spring.datasource.platform=mysql ### Count of DB: db.num=1 ### Connect URL of DB: db.url.0=jdbc:mysql://127.0.0.1:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC db.user.0=root db.password.0=123456

命令运行bin目录startup.cmd startup.cmd -m standalone或者修改startup.cmd 将set MODE="cluster"修改为

set MODE="standalone“ ,这个设置是集群启动改为单机启动

如果mysql版本为8.0出现启动报错,可以创建plugin/mysql目录,把对应的jar包放进去重新启动

启动成功访问 http://localhost:8848/nacos

用户名密码都是nacos

2. 如何注册到nacos注册中心

创建一个springboot项目,注意版本依赖关系,这里使用

Spring Cloud Alibaba VersionSpring Cloud VersionSpring Boot Version
2.2.7.RELEASESpring Cloud Hoxton.SR122.3.12.RELEASE

添加springweb和nacos-discovery依赖:

复制代码
1
2
3
4
5
6
7
8
9
<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>

配置文件:nacos注册中心和eureka相比,nacos哟是命名空间的概念它可以根据命名空间的不同区分隔离两个服务。在命名空间内还有分组的区分。比如两个项目有服务名撞了就可以做到区分隔离。

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
spring: application: name: nacos-client-a cloud: nacos: #如果不指定命名空间默认注册到public,没有指定分组默认DEFAULT_GROUP server-addr: localhost:8848 #在这个地址注册自己 username: nacos password: nacos server: port: 8080

启动类添加注解:@EnableDiscoveryClient 开启服务发现客户端

复制代码
1
2
3
4
5
6
7
8
9
10
@SpringBootApplication @EnableDiscoveryClient //开启服务发现客户端 public class NacosClintAApplication { public static void main(String[] args) { SpringApplication.run(NacosClintAApplication.class, args); } }

启动项目,再次访问nacos查看服务列表可以发现注册成功

在这里插入图片描述

3. nacos服务发现

再创建一个springboot项目注册到注册中心,这里给出一个配置文件,其他设置和上一个一样

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
server: port: 8081 spring: application: name: nacos-client-b cloud: nacos: username: nacos password: nacos server-addr: localhost:8848 discovery: # 注册相关配置 namespace: c98c08fc-a4c2-433b-bc4a-bcb68496fd7b group: A_GROUP

通过A去访问B,在A中创建controller类

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
@RestController public class TestController { @Autowired private DiscoveryClient discoveryClient; @GetMapping("test") public String test(){ List<ServiceInstance> instances = discoveryClient.getInstances("nacos-client-b"); System.out.println(instances); return "ok"; } }

注意:跨命名空间或者跨组都请求不到,只有同组同命名空间才能访问

所以修改配置文件保持一致再访问localhost:8080/test,才能得到ok的结果

4. nacos集成openFeign

如果要在A中请求B提供的接口,B的controller代码:

复制代码
1
2
3
4
5
6
7
8
9
@RestController public class testController { @GetMapping("info") public String info(){ return "b提供的接口"; } }

然后A添加openFeign依赖,因为他是springcloud提供的,所以还要确定springcloud依赖遵循对应关系,这里使用Hoxton.SR12版本,pom文件:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
<properties> <java.version>1.8</java.version> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <spring-boot.version>2.3.12.RELEASE</spring-boot.version> <spring-cloud-alibaba.version>2.2.7.RELEASE</spring-cloud-alibaba.version> <spring-cloud.version>Hoxton.SR12</spring-cloud.version> </properties> <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> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> <exclusions> <exclusion> <groupId>org.junit.vintage</groupId> <artifactId>junit-vintage-engine</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency> </dependencies> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>${spring-boot.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> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>${spring-cloud.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>

A启动类添加注解@EnableFeignClients

复制代码
1
2
3
4
5
6
7
8
9
10
11
@SpringBootApplication @EnableDiscoveryClient @EnableFeignClients public class NacosClientAApplication { public static void main(String[] args) { SpringApplication.run(NacosClientAApplication.class, args); } }

A中feign接口编写:

复制代码
1
2
3
4
5
6
7
@FeignClient(value = "nacos-client-b") public interface testFeign { @GetMapping("info") public String info(); }

A的controller修改:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
@RestController public class TestController { @Autowired private DiscoveryClient discoveryClient; @Autowired private TestFeign testFeign; @GetMapping("test") public String test(){ List<ServiceInstance> instances = discoveryClient.getInstances("nacos-client-b"); System.out.println(instances); return testFeign.info(); } }

AB都重新启动后可以发现调用成功

5. nacos集成gateway

创建一个项目 添加gateway和nacos-discovery依赖

配置文件:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
server: port: 80 spring: application: name: gateway cloud: nacos: server-addr: localhost:8848 username: nacos password: nacos discovery: namespace: c98c08fc-a4c2-433b-bc4a-bcb68496fd7b group: A_GROUP gateway: discovery: locator: enabled: true #开启路由 lower-case-service-id: true

启动类添加注解:

复制代码
1
2
3
4
5
6
7
8
9
10
@SpringBootApplication @EnableDiscoveryClient public class GatewayApplication { public static void main(String[] args) { SpringApplication.run(GatewayApplication.class, args); } }

全部启动成功后,访问http://localhost/nacos-client-a/test,依然能够得到B提供接口的返回结果即成功

6. 以集群模式启动nacos-server

复制多个nacos,修改conf目录下配置文件application.properties,每个配置端口不同。

再根据application.properties.example创建一个cluster.conf文件,里面编写ip和端口号即可。

这里给出一个例子,如果两个配置文件端口分别为8848和8850,cluster.conf文件内容如下:

192.168.137.1:8848

192.168.137.1:8850

7. nacos配置中心

启动一个nacos-server,再配置管理中点击+号新增一个配置,这里以yaml为例

注意:nacos配置中心和注册中心一样有空间和组的概念用于区分配置文件

在这里插入图片描述

如何配置中心里的值?

新建一个springboot项目来,添加nacos configuration和spring web依赖,再resources目录下创建bootstrap.yml

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
server: port: 8081 spring: application: name: nacos-config-a cloud: nacos: config: server-addr: localhost:8848 username: nacos password: nacos prefix: nacos-config # 配置文件Data ID file-extension: yml #文件类型

创建controller

复制代码
1
2
3
4
5
6
7
8
9
10
11
@RestController public class TestController { @Value("${lgd.carry}") private String name; @GetMapping("info") public String info(){ return name; } }

启动项目成功即配置正确,访问localhost:8081/info可以返回ame。

**nacos配置中心的配置文件持久化在哪?**观察nacos数据库表config_info可以发现数据存在该表中

如果此时通过nacos编辑配置文件,再次访问localhost:8081/info发现结果不变,在类上加注解@RefreshScope 可以解决该问题

**如何回滚配置文件?**通过配置管理-历史版本回滚即可,历史记录存在表his_config_info中

如何读取多个配置文件

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
spring: application: name: nacos-config-a cloud: nacos: config: server-addr: localhost:8848 username: nacos password: nacos file-extension: yml namespace: extension-configs: - dataId: group: refresh: - dataId: group: refresh:

如何读取共享配置文件?

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
spring: application: name: nacos-config-a cloud: nacos: config: server-addr: localhost:8848 username: nacos password: nacos file-extension: yml namespace: shared-configs: #共享配置文件 # - application-dev.yml #写共享文件名,这种写法只能是默认组DEFAULT_GROUP - dataId: #这种写法也可以 group: refresh: - dataId: group: refresh:

os-config-a
cloud:
nacos:
config:
server-addr: localhost:8848
username: nacos
password: nacos
file-extension: yml
namespace:
shared-configs: #共享配置文件
# - application-dev.yml #写共享文件名,这种写法只能是默认组DEFAULT_GROUP
- dataId: #这种写法也可以
group:
refresh:
- dataId:
group:
refresh:

复制代码
1

最后

以上就是慈祥大雁最近收集整理的关于springcloud alibaba快速入门springcloud alibaba的全部内容,更多相关springcloud内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(85)

评论列表共有 0 条评论

立即
投稿
返回
顶部