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

2022-01-09  本文已影响0人  侧耳倾听y

服务注册

在顶层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>    

与服务注册中配置一样

    @Bean
    @LoadBalanced
    public WebClient.Builder register() {
        return WebClient.builder();
    }

@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:发起一个阻塞调用,在远程服务没有响应之前,当前线程处于阻塞状态。

上一篇下一篇

猜你喜欢

热点阅读