Nacos注册中心基本概念和使用


前言

Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。

Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。

官方文档

源码地址

文中所用地址

版本说明

配置相关

Nacos 主要特性

Nacos特性主要包含

  • 服务注册

    Nacos客户端会通过Rest请求将服务信息(包含但不限于ip,端口)发送到Nacos服务端存储到一个内存Map中

  • 服务发现

    服务消费者在调用服务提供者时候会发送一个Rest请求给Nacos服务端来获取服务提供者信息并将服务提供者缓存在Nacos客户端本地

  • 服务心跳

    服务注册之后,Nacos客户端会每隔5s的发送心跳到Nacos服务端,告诉Nacos服务端还存活着

  • 服务健康检查

    Nacos服务端会开启一个定时任务来检查各个服务的健康状态。发现又服务超过15s没有心跳,会将健康状态置为false,如果30s还没有心跳就直接剔除实例

注册中心基本架构

注册中心基本都是利用这种架构实现的,但每种都有一些去呗,比如Nacos并没有用数据库去存储注册表结构,Nacos是利用一个双Map内存数据结构存储的。

Nacos注册表结构

通过源码可分析出它的注册表结构大致是**Map<namespace, Map<group::serviceName, Service>>**

Service里面还包含一个集群Map

举例说明

Nacos资源隔离

  • namespace之间会进行资源隔离
  • 相同的namespace下的不同group之间相互隔离
  • 相同的namespace下的相同group下的不同服务可以调用
  • 相同的namespace下的相同group下的相同服务可以跨集群调用

spring cloud 整合Nacos

Nacos 服务端首先必须搭建好,在我的另一篇博客中会有搭建教程

需要关注版本说明,springboot、springcloud、springcloud alibba三者版本最好与官方提供一致

版本说明

引入依赖

父Pom

<properties>
    <spring-boot.version>2.3.2.RELEASE</spring-boot.version>
    <spring-cloud.version>Hoxton.SR8</spring-cloud.version>
    <spring-cloud-alibaba.version>2.2.4.RELEASE</spring-cloud-alibaba.version>
</properties>

<dependencyManagement>
    <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>
</dependencyManagement>

当前项目pom

<dependency>
 &nbsp;<groupId>com.alibaba.cloud</groupId>
 &nbsp;<artifactId>spring‐cloud‐starter‐alibaba‐nacos‐discovery</artifactId>
</dependency>

application.properties

配置相关

spring:
  application:
    name: user-service
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848

启动测试

String&nbsp;url&nbsp;=&nbsp;"http://service‐order/order/"+id;
List<Order>&nbsp;orderList&nbsp;=&nbsp;restTemplate.getForObject(url,&nbsp;List.class);

配置RestTemplate

@Bean
@LoadBalanced
    public&nbsp;RestTemplate&nbsp;restTemplate()&nbsp;{
    return&nbsp;new&nbsp;RestTemplate();
}


文章作者: dm
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 dm !
评论
  目录