美文网首页
微服务注册中心-Nacos的简单使用

微服务注册中心-Nacos的简单使用

作者: 侧耳倾听y | 来源:发表于2022-01-09 01:16 被阅读0次

    服务注册

    • 添加Nacos依赖

    在顶层pom文件先定义所要使用的 Spring Cloud 和 Spring Cloud Alibaba 的版本。

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

    在子模块加入Nacos依赖

    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    </dependency>
    

    添加完依赖项之后,就可以通过配置项开启 Nacos 的服务治理功能了。Nacos 通过自动装配流程(auto configuration)加载配置项并开启服务注册。

    • 添加配置
    
    spring:
      cloud:
        nacos:
          discovery:
            # Nacos的服务注册地址,可以配置多个,逗号分隔
            server-addr: localhost:8848
            # 服务注册到Nacos上的名称,一般不用配置
            service: coupon-customer-serv
            # nacos客户端向服务端发送心跳的时间间隔,时间单位其实是ms
            heart-beat-interval: 5000
            # 服务端没有接受到客户端心跳请求就将其设为不健康的时间间隔,默认为15s
            # 注:推荐值该值为15s即可,如果有的业务线希望服务下线或者出故障时希望尽快被发现,可以适当减少该值
            heart-beat-timeout: 20000
            # 元数据部分 - 可以自己随便定制
            metadata:
              mydata: abc
            # 客户端在启动时是否读取本地配置项(一个文件)来获取服务列表
            # 注:推荐该值为false,若改成true。则客户端会在本地的一个
            # 文件中保存服务信息,当下次宕机启动时,会优先读取本地的配置对外提供服务。
            naming-load-cache-at-start: false
            # 命名空间ID,Nacos通过不同的命名空间来区分不同的环境,进行数据隔离,
            namespace: dev
            # 创建不同的集群
            cluster-name: Cluster-A
            # [注意]两个服务如果存在上下游调用关系,必须配置相同的group才能发起访问
            group: myGroup
            # 向注册中心注册服务,默认为true
            # 如果只消费服务,不作为服务提供方,倒是可以设置成false,减少开销
            register-enabled: true
    
    • 验证

    启动服务,登录nacos,查看服务列表

    服务发现

    • 添加依赖
    
    <!-- Nacos服务发现组件 -->
    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    </dependency>
    
    <!-- 负载均衡组件 -->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-loadbalancer</artifactId>
    </dependency>
    
    <!-- webflux服务调用 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-webflux</artifactId>
    </dependency>    
    
    • 添加配置

    与服务注册中配置一样

    • 添加 WebClient 对象
        @Bean
        @LoadBalanced
        public WebClient.Builder register() {
            return WebClient.builder();
        }
    
    • 使用 WebClient 发起远程方法调用
    
    @Autowired
    private WebClient.Builder webClientBuilder;
    
    
    T t = webClientBuilder.build()
            .get()
            .uri("url?param=" + param)
            .retrieve()
            .bodyToMono(T.class)
            .block();
    

    get:指明了 Http Method 是 GET,如果是其他请求类型则使用对应的 post、put、patch、delete 等方法;
    uri:指定了访问的请求地址;
    retrieve + bodyToMono:指定了 Response 的返回格式;
    block:发起一个阻塞调用,在远程服务没有响应之前,当前线程处于阻塞状态。

    相关文章

      网友评论

          本文标题:微服务注册中心-Nacos的简单使用

          本文链接:https://www.haomeiwen.com/subject/eeaycrtx.html