当前位置:   article > 正文

SpringCloud+Nacos搭建使用

springcloud+nacos

Nacos【Dynamic Naming and Configuration Service】提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。

1.搭建Nocos服务

01.下载服务

下载地址:Releases · alibaba/nacos · GitHub

 在window环境学习我下载了zip包

02.生成数据库

03.修改文件

a.编辑application

b.复制文件

复制cluster.conf.example 去掉后缀【.example】生成配置文件

04.执行启动

 启动成功

05.访问服务后台

在浏览器上访问     

 账号密码默认为:nacos 

 Nacos环境搭建完成


2.创建服务

01.创建父级

a.创建服务

b.添加依赖

  1. <spring-boot.version>2.0.4.RELEASE</spring-boot.version>
  2. <spring-cloud.version>Finchley.RELEASE</spring-cloud.version>
  3. <nacos.version>0.2.2.RELEASE</nacos.version>

  1. <dependencyManagement>
  2. <dependencies>
  3. <dependency>
  4. <groupId>org.springframework.cloud</groupId>
  5. <artifactId>spring-cloud-dependencies</artifactId>
  6. <version>${spring-cloud.version}</version>
  7. <type>pom</type>
  8. <scope>import</scope>
  9. </dependency>
  10. <dependency>
  11. <groupId>org.springframework.boot</groupId>
  12. <artifactId>spring-boot-dependencies</artifactId>
  13. <version>${spring-boot.version}</version>
  14. <type>pom</type>
  15. <scope>import</scope>
  16. </dependency>
  17. <dependency>
  18. <groupId>org.springframework.cloud</groupId>
  19. <artifactId>spring-cloud-alibaba-dependencies</artifactId>
  20. <version>${nacos.version}</version>
  21. <type>pom</type>
  22. <scope>import</scope>
  23. </dependency>
  24. </dependencies>
  25. </dependencyManagement>

02.创建提供者服务模块

a.创建服务

 b.添加依赖

  1. <dependency>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-starter</artifactId>
  4. </dependency>
  5. <dependency>
  6. <groupId>com.alibaba.cloud</groupId>
  7. <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
  8. <version>2.2.5.RELEASE</version>
  9. </dependency>

为了springboot版本和springcloud版本兼容,这里我修改了

  1. <parent>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-starter-parent</artifactId>
  4. <version>2.3.9.RELEASE</version>
  5. <relativePath/> <!-- lookup parent from repository -->
  6. </parent>

 c.添加注解

@EnableDiscoveryClient

d.添加配置 

  1. server.port=8087
  2. spring.application.name=provider
  3. spring.cloud.nacos.discovery.server-addr=192.168.110.179:8848

 e.创建接口提供服务

  1. @RestController
  2. public class ProviderController {
  3. @GetMapping("/helloProvider")
  4. public String helloProvider(){
  5. return "你好,我是提供服务者";
  6. }
  7. }

03.创建消费者服务

a.创建服务

b.添加依赖

  1. <dependency>
  2. <groupId>com.alibaba.cloud</groupId>
  3. <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
  4. <version>2.2.5.RELEASE</version>
  5. </dependency>
  6. <dependency>
  7. <groupId>com.netflix.archaius</groupId>
  8. <artifactId>archaius-core</artifactId>
  9. <version>0.7.6</version>
  10. <exclusions>
  11. <exclusion>
  12. <groupId>com.google.guava</groupId>
  13. <artifactId>guava</artifactId>
  14. </exclusion>
  15. </exclusions>
  16. </dependency>
  17. <!-- 服务调用 -->
  18. <dependency>
  19. <groupId>org.springframework.cloud</groupId>
  20. <artifactId>spring-cloud-starter-openfeign</artifactId>
  21. <version>2.1.1.RELEASE</version>
  22. </dependency>

为了springboot版本和springcloud版本兼容,这里我修改了

  1. <parent>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-starter-parent</artifactId>
  4. <version>2.3.9.RELEASE</version>
  5. <relativePath/> <!-- lookup parent from repository -->
  6. </parent>

c.添加注解

  1. @EnableDiscoveryClient
  2. @EnableFeignClients

d.添加配置

  1. server.port=8099
  2. spring.application.name=consumer
  3. spring.cloud.nacos.discovery.server-addr=192.168.110.179:8848

e.创建service

  1. @FeignClient(name = "provider", fallback = ConsumerServiceImpl.class)
  2. @Service
  3. public interface ConsumerService {
  4. @GetMapping("/helloProvider")
  5. String getHello();
  6. }
  1. @Component
  2. public class ConsumerServiceImpl implements ConsumerService {
  3. @Override
  4. public String getHello() {
  5. return "服务出错";
  6. }
  7. }

f.创建接口

  1. @RestController
  2. public class ConsumerController {
  3. @Resource
  4. private ConsumerService consumerService;
  5. @GetMapping("/getHello")
  6. public String getHello(){
  7. return consumerService.getHello();
  8. }
  9. }

3.运行

把创建的提供者服务与消费者服务运行起来,再回到nacos服务管理后台页面看

我们会看到有两个服务在nacos服务上注册成功了 

4.调用服务

我们创建一个网页访问消费者服务的接口

 我们会发现成功调用了提供者服务

5.配置中心接入

在这里我把消费者实现配置中心功能

01.创建配置项

在nacos服务后台中的配置列表中创建一个配置文件相当于application.properties或者yaml等配置

 这里我使用的是application.properties并配置了

 2.添加依赖

  1. <!-- **************************************************** -->
  2. <dependency>
  3. <groupId>com.alibaba.cloud</groupId>
  4. <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
  5. <version>2.2.1.RELEASE</version>
  6. </dependency>
  7. <dependency>
  8. <groupId>com.alibaba.nacos</groupId>
  9. <artifactId>nacos-client</artifactId>
  10. <version>1.2.0</version>
  11. </dependency>
  12. <dependency>
  13. <groupId>org.apache.commons</groupId>
  14. <artifactId>commons-lang3</artifactId>
  15. <version>3.7</version>
  16. </dependency>
  17. <!-- **************************************************** -->

3.添加注解

@NacosPropertySource(dataId = "test-dev.properties", autoRefreshed = true)

 4.添加配置

  1. spring.cloud.nacos.config.server-addr=192.168.110.179:8848
  2. spring.profiles.active=dev
  3. spring.cloud.nacos.config.file-extension=properties
  4. spring.cloud.nacos.config.group=DEFAULT_GROUP

 5.修改接口

  1. @RestController
  2. @RefreshScope
  3. @Validated
  4. public class ConsumerController {
  5. @NacosValue(value = "${datasource.url:123}", autoRefreshed = true)
  6. private String url;
  7. @NacosValue(value = "${datasource.username:123}", autoRefreshed = true)
  8. private String username;
  9. @NacosValue(value = "${datasource.password:123}", autoRefreshed = true)
  10. private String password;
  11. @Autowired
  12. private RestTemplate restTemplate;
  13. @Resource
  14. private ConsumerService consumerService;
  15. @GetMapping("/getHello")
  16. public String getHello(){
  17. System.out.println(url);
  18. System.out.println(username);
  19. System.out.println(password);
  20. return consumerService.getHello();
  21. }
  22. }

6.启动调用

01.访问接口

 02.监听输出

服务输出为

 03.修改服务配置

 04.访问接口

05.监听输出

服务输出为

项目源码

链接:https://pan.baidu.com/s/12yC3cjK12_izzFO9imcPjQ 
提取码:k5sj

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/499563
推荐阅读
相关标签
  

闽ICP备14008679号