当前位置:   article > 正文

springcloud3 Nacos的服务搭建和生产消费调用案例(含工程代码说明)_springcloud+ nacos搭建demo

springcloud+ nacos搭建demo

一 nacos

1.1 nacos概念

Nacos是服务注册发现中心+配置中心的组合。比eurka实现的功能更加强大。

nacos默认均有负载均衡的功能,集成了netflix的ribbon代码包。

代码地址:

https://gitee.com/jurf-liu/mscloud-2022.git

1.2 nacos与其他进行对别

 1.3 nacos的配置

1.4  namespace和group和dataid之间的关系

二  nacos的安装搭建

2.1 软件包下载

1.软件包下载地址 :home

2.找到对应版本,进行下载 

2.2 nacos的安装

2.2.1 附件数据库

1.加压软件包后,进入到目录 nacos/conf/nacos-mysql.sql  找到这个sql文件进行附件。

2.先创建一个数据库,名字为nacos,将sql脚本进行附件数据库

 2.2.2 修改启动脚本

进入bin目录下,修改 startup.cmd文件,在本地运行是需要改成standalone模式

 2.2.3 修改数据库连接配置文件

在config目录下,修改application配置文件中数据库的连接信息

 2.2.4 启动服务

2.3 nacos页面访问

页面进行访问:  http://localhost:8848/nacos

用户名和密码为: nacos/nacos

进入页面

1.添加一条数据

2.在mysql数据库中查看 

三  nacos的生产消费案例

3.1 架构

3.2  生产提供服务模块7001

3.2.1 生产提供模块结构

在主工程新建一个模块,如下图

 3.2.2 pom文件

配置pom文件的依赖

  1. <!--SpringCloud ailibaba nacos -->
  2. <dependency>
  3. <groupId>com.alibaba.cloud</groupId>
  4. <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
  5. </dependency>
  6. <!-- SpringBoot整合Web组件 -->
  7. <dependency>
  8. <groupId>org.springframework.boot</groupId>
  9. <artifactId>spring-boot-starter-web</artifactId>
  10. </dependency>
  11. <dependency>
  12. <groupId>org.springframework.boot</groupId>
  13. <artifactId>spring-boot-starter-actuator</artifactId>
  14. </dependency>
  15. <!--日常通用jar包配置-->
  16. <dependency>
  17. <groupId>org.springframework.boot</groupId>
  18. <artifactId>spring-boot-devtools</artifactId>
  19. <scope>runtime</scope>
  20. <optional>true</optional>
  21. </dependency>
  22. <dependency>
  23. <groupId>org.projectlombok</groupId>
  24. <artifactId>lombok</artifactId>
  25. <optional>true</optional>
  26. </dependency>
  27. <dependency>
  28. <groupId>org.springframework.boot</groupId>
  29. <artifactId>spring-boot-starter-test</artifactId>
  30. <scope>test</scope>
  31. </dependency>

3.2.3 配置文件

  1. server:
  2. port: 7001
  3. #服务名称
  4. spring:
  5. application:
  6. name: nacos-payment-provider
  7. cloud:
  8. nacos:
  9. discovery:
  10. server-addr: localhost:8848 #配置Nacos地址
  11. #暴露所有监控信息为HTTP
  12. management:
  13. endpoints:
  14. web:
  15. exposure:
  16. include: '*'

3.2.4 启动类

  1. @EnableDiscoveryClient
  2. @SpringBootApplication
  3. public class App
  4. {
  5. public static void main( String[] args )
  6. {
  7. //System.out.println( "Hello World!" );
  8. SpringApplication.run(App.class, args);
  9. System.out.println("================nacos7001服务启动成功!!!!");
  10. }
  11. }

3.2.5 业务类

  1. /**
  2. * @auther zzyy
  3. * @create 2020-02-23 14:13
  4. */
  5. @RestController
  6. public class PaymentController
  7. {
  8. @Value("${server.port}")
  9. private String serverPort;
  10. @GetMapping(value = "/payment/nacos/{id}")
  11. public String getPayment(@PathVariable("id") Integer id)
  12. {
  13. return "nacos registry, serverPort: "+ serverPort+"\t id"+id;
  14. }
  15. }

3.2.6 启动查看结果

1.服务启动

 2.nacos页面

3.3  生产提供服务模块7002

3.3.1 复制一份服务

将服务模块7001复制一份变为7001,如下

2.需要将此7002服务添加到主服务中

3.主工程的pom文件中添加此模块的声明

 3.3.2 修改一些配置

1.端口号

 2.配置文件中端口

 3.3.3 将服务均启动

可以看到两个服务提供者:7001和7002

1.服务名称

 2.服务名称对应的集群中具体ip和端口:

 3.4  消费模块7000

3.4.1 新建消费模块

3.4.2 pom文件修改

  1. <dependency>
  2. <groupId>junit</groupId>
  3. <artifactId>junit</artifactId>
  4. <version>4.13</version>
  5. <scope>test</scope>
  6. </dependency>
  7. <!--SpringCloud ailibaba nacos -->
  8. <dependency>
  9. <groupId>com.alibaba.cloud</groupId>
  10. <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
  11. </dependency>
  12. <!-- 引入自己定义的api通用包,可以使用Payment支付Entity -->
  13. <!-- SpringBoot整合Web组件 -->
  14. <dependency>
  15. <groupId>org.springframework.boot</groupId>
  16. <artifactId>spring-boot-starter-web</artifactId>
  17. </dependency>
  18. <dependency>
  19. <groupId>org.springframework.boot</groupId>
  20. <artifactId>spring-boot-starter-actuator</artifactId>
  21. </dependency>
  22. <!--日常通用jar包配置-->
  23. <dependency>
  24. <groupId>org.springframework.boot</groupId>
  25. <artifactId>spring-boot-devtools</artifactId>
  26. <scope>runtime</scope>
  27. <optional>true</optional>
  28. </dependency>
  29. <dependency>
  30. <groupId>org.projectlombok</groupId>
  31. <artifactId>lombok</artifactId>
  32. <optional>true</optional>
  33. </dependency>
  34. <dependency>
  35. <groupId>org.springframework.boot</groupId>
  36. <artifactId>spring-boot-starter-test</artifactId>
  37. <scope>test</scope>
  38. </dependency>

3.4.3 配置文件的修改

  1. server:
  2. port: 7000
  3. spring:
  4. application:
  5. name: nacos-order-consumer
  6. cloud:
  7. nacos:
  8. discovery:
  9. server-addr: localhost:8848
  10. #消费者将要去访问的微服务名称(注册成功进nacos的微服务提供者)
  11. service-url:
  12. nacos-user-service: http://nacos-payment-provider

3.4.4 controller的业务

  1. @RestController
  2. @Slf4j
  3. public class OrderController {
  4. @Resource
  5. private RestTemplate restTemplate;
  6. @Value("${service-url.nacos-user-service}")
  7. private String serverURL;
  8. @GetMapping(value = "/consumer/payment/nacos/{id}")
  9. public String paymentInfo(@PathVariable("id") Long id)
  10. {
  11. return restTemplate.getForObject(serverURL+"/payment/nacos/"+id,String.class);
  12. }
  13. }

3.4.5 负载均衡

  1. @Configuration
  2. public class ApplicationContextConfig
  3. {
  4. @Bean
  5. @LoadBalanced
  6. public RestTemplate getRestTemplate()
  7. {
  8. return new RestTemplate();
  9. }
  10. }

3.4.6 启动服务查看

首先确保nacos启动,7001提供者服务启动,7002服务提供者启动;最后启动7000消费者

 页面进行访问:http://localhost:7000/consumer/payment/nacos/555

 再次刷新:

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

闽ICP备14008679号