飞道的博客

springcloud3 Nacos的服务搭建和生产消费案例

437人阅读  评论(0)

一 nacos

1.1 nacos概念

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

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

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 修改数据库连接配置文件

 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

 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消费者

 页面进行访问

 再次刷新:

 


转载:https://blog.csdn.net/u011066470/article/details/128633299
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场