springcloud3 Nacos的服务搭建和生产消费案例
Posted 健康平安的活着
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了springcloud3 Nacos的服务搭建和生产消费案例相关的知识,希望对你有一定的参考价值。
一 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文件的依赖
<!--SpringCloud ailibaba nacos -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!-- SpringBoot整合Web组件 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!--日常通用jar包配置-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
3.2.3 配置文件
server:
port: 7001
#服务名称
spring:
application:
name: nacos-payment-provider
cloud:
nacos:
discovery:
server-addr: localhost:8848 #配置Nacos地址
#暴露所有监控信息为HTTP
management:
endpoints:
web:
exposure:
include: '*'
3.2.4 启动类
@EnableDiscoveryClient
@SpringBootApplication
public class App
public static void main( String[] args )
//System.out.println( "Hello World!" );
SpringApplication.run(App.class, args);
System.out.println("================nacos7001服务启动成功!!!!");
3.2.5 业务类
/**
* @auther zzyy
* @create 2020-02-23 14:13
*/
@RestController
public class PaymentController
@Value("$server.port")
private String serverPort;
@GetMapping(value = "/payment/nacos/id")
public String getPayment(@PathVariable("id") Integer id)
return "nacos registry, serverPort: "+ serverPort+"\\t id"+id;
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文件修改
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13</version>
<scope>test</scope>
</dependency>
<!--SpringCloud ailibaba nacos -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!-- 引入自己定义的api通用包,可以使用Payment支付Entity -->
<!-- SpringBoot整合Web组件 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!--日常通用jar包配置-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
3.4.3 配置文件的修改
server:
port: 7000
spring:
application:
name: nacos-order-consumer
cloud:
nacos:
discovery:
server-addr: localhost:8848
#消费者将要去访问的微服务名称(注册成功进nacos的微服务提供者)
service-url:
nacos-user-service: http://nacos-payment-provider
3.4.4 controller的业务
@RestController
@Slf4j
public class OrderController
@Resource
private RestTemplate restTemplate;
@Value("$service-url.nacos-user-service")
private String serverURL;
@GetMapping(value = "/consumer/payment/nacos/id")
public String paymentInfo(@PathVariable("id") Long id)
return restTemplate.getForObject(serverURL+"/payment/nacos/"+id,String.class);
3.4.5 负载均衡
@Configuration
public class ApplicationContextConfig
@Bean
@LoadBalanced
public RestTemplate getRestTemplate()
return new RestTemplate();
3.4.6 启动服务查看
首先确保nacos启动,7001提供者服务启动,7002服务提供者启动;最后启动7000消费者
页面进行访问
再次刷新:
以上是关于springcloud3 Nacos的服务搭建和生产消费案例的主要内容,如果未能解决你的问题,请参考以下文章
springcloud3 Nacos中namespace和group,dataId的联系
springcloud3 EurekaServer集群的搭建1