nacos服务注册,发现与调用及配置中心

1.下载安装并启动nacos

    之前的文章有详细的下载地址和安装教程

nacos下载传送门:2020年最新版nacos1.3.1免费下载_深蓝格调_的博客-CSDN博客_nacos1.3.1

nacos安装传送门:linux完美安装nacos(可集群)_深蓝格调_的博客-CSDN博客

2.服务的发现与消费

2.1注册发现

2.1.1添加依赖

springcloudalibaba使用时要注意各个依赖的版本对应,以下是版本对应表

(详见:版本说明 · alibaba/spring-cloud-alibaba Wiki · GitHub)

毕业版本依赖关系

Spring Cloud VersionSpring Cloud Alibaba VersionSpring Boot Version

Spring Cloud Hoxton.SR3

2.2.1.RELEASE

2.2.5.RELEASE

Spring Cloud Hoxton.RELEASE

2.2.0.RELEASE

2.2.X.RELEASE

Spring Cloud Greenwich

2.1.2.RELEASE

2.1.X.RELEASE

Spring Cloud Finchley

2.0.2.RELEASE

2.0.X.RELEASE

Spring Cloud Edgware

1.5.1.RELEASE(停止维护,建议升级)

1.5.X.RELEASE

因为是在原项目基础上添加注册中心的,所以这里以项目springboot2.0.4版本为例(如果觉得版本太低可以根据对照表更新版本)

pom依赖

    <properties>
        <spring-cloud.version>Finchley.RELEASE</spring-cloud.version>
        <spring-cloud-alibaba.version>2.0.2.RELEASE</spring-cloud-alibaba.version>
    </properties>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>${spring-cloud-alibaba.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <dependencies>
        <!-- web开发相关的依赖 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!-- Nacos服务注册与发现 -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        <!-- 如果你项目的restful框架用的jersey,eureka或nacos会与它产生ws-rs的依赖冲突,在此需要排除依赖,如果用的是springmvc则可忽略此操作 -->
            <exclusions>
                <exclusion>
                    <groupId>javax.ws.rs</groupId>
                    <artifactId>jsr311-api</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>

2.1.2yml配置

server:
  port: 20001

spring:
  cloud:
    nacos:
      discovery:
        # 服务注册中心
        server-addr: 192.168.32.129:8848
  application:
    #服务名
    name: base-provider

2.1.3开启注解(如果springcloud版本在E之后即可省略此步骤)

在application启动类添加@EnableDiscoveryClient

启动项目后即可在nacos看到本服务

2.2服务消费

消费者和提供者的注册方式相同,只不过在此基础上添加了openfeign的服务调用功能

2.2.1依赖

    <properties>
        <java.version>1.8</java.version>
        <spring-cloud.version>Finchley.RELEASE</spring-cloud.version>
        <spring-cloud-alibaba.version>2.0.4.RELEASE</spring-cloud-alibaba.version>
    </properties>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>${spring-cloud-alibaba.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <dependencies>
        <!-- Nacos服务注册与发现 -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
        <!-- web开发相关的依赖 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!-- openfeign -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>
    </dependencies>

2.2.2yml配置

spring:
  application:
    # 服务名
    name: service-comsumer
  cloud:
    nacos:
      discovery:
        # 服务注册中心
        server-addr: 192.168.32.129:8848

server:
  # 服务端口
  port: 8070

management:
  # 端点检查(健康检查)
  endpoints:
    web:
      exposure:
        include: "*"

2.2.3开启注解(如果springcloud版本在E之后即可省略此步骤)

在application启动类添加@EnableDiscoveryClient

2.2.4openfeign的使用

使用openfeign仍采用常规的controller-service开发习惯,逻辑代码在service中实现(@Component:类交给spring管理;@FeignClient:标识扫描的远程调用接口,name为服务名;@GetMapping后为调用目标方法的路径名)

service

package com.example.demo.service;

import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;

/**
 * @ClassName TestService
 * @Description
 * @Author Administrator
 * @Date 2020/8/21 0021 9:46
 * @Version 1.0
 */
@Component
@FeignClient(name="base-provider")
public interface TestService {

    /**
     * 查询
     * @return
     */
    @GetMapping("/api/tradeinfo/weather")
    String getServiceInfo();

    /**
     * 查询
     * @param id
     * @return
     */
    @GetMapping("/api/tradeinfo/{id}")
    String selectById(@PathVariable("id") String id);

}

controller

package com.example.demo.controller;

import com.example.demo.service.TestService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/demo")
public class TestController {

    @Autowired
    TestService testService;

    @GetMapping("/test")
    public String Test(@RequestParam String id) {
        String s = testService.selectById(id);
        return s;
    }

    @GetMapping("/test1")
    public String Test1() {
        return testService.getServiceInfo();
    }

}


以下是调用consumer接口返回的数据

3.nacos作为配置中心

3.1 依赖

    <properties>
        <java.version>1.8</java.version>
        <spring-cloud.version>Finchley.RELEASE</spring-cloud.version>
        <spring-cloud-alibaba.version>2.0.4.RELEASE</spring-cloud-alibaba.version>
    </properties>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>${spring-cloud-alibaba.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <dependencies>
        <!-- Nacos服务注册与发现 -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
        <!-- Nacos作为配置中心 -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>
        <!-- web开发相关的依赖 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!-- openfeign -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>
    </dependencies>

3.2 更名原有的application.yml为bootstrap.yml(由于application的加载优先级较低的缘故,不更名会报无法读取配置中心数据的错误)

3.3 添加配置文件内容

spring:
  application:
    # 服务名
    name: service-comsumer
  cloud:
    nacos:
      discovery:
        # 服务注册中心
        server-addr: 127.0.0.1:8848
      config:
        # 配置中心地址
        server-addr: 127.0.0.1:8848
        # 读取配置文件格式(根据nacos配置中心自定义配置文件而定,默认properties)
        file-extension: yaml
  profiles:
    active: dev

server:
  # 服务端口
  port: 8070

management:
  # 端点检查(健康检查)
  endpoints:
    web:
      exposure:
        include: "*"

3.4 添加注解@RefreshScope(此注解可以使更新配置中心内容时同步刷新项目)

 

3.5 nacos添加配置

示例:(此处data id严格按照此格式:服务名+(-扩展名)+“.配置文件类型”)


  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值