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的集群搭建

springcloud3 Nacos的集群搭建

springcloud3 Nacos中namespace和group,dataId的联系

springcloud3 EurekaServer集群的搭建1

springcloud3 EurekaClient集群的搭建2

springcloud3 Sentinel的搭建以及作用