SpringCloud Alibaba——Nacos服务发现(学习记录)

前几天学习了Nacos,记录一下
Nacos是一个服务发现组件,也是用来管理微服务的配置
SpringCloud Alibaba——Nacos服务发现(学习记录)_第1张图片

引入依赖

先将SpringBoot项目引入SpringCloud,在pom文件中引入


        
        
            
                org.springframework.cloud
                spring-cloud-dependencies
                Greenwich.SR1
                pom
                import
            
            
                org.springframework.cloud
                spring-cloud-alibaba-dependencies
                0.9.0.RELEASE
                pom
                import
            
        
    

SpringCloud Alibaba

引入Nacos依赖,这里不需要指定版本,因为在spring-cloud-alibaba-dependencies下已经指定了版本

        
            org.springframework.cloud
            spring-cloud-alibaba-nacos-discovery
        

Nacos

搭建Nacos Serve

下载对应版本的Nacos Server,跟spring-cloud-alibaba-dependencies版本保持一致,这也是为了生产环境下的稳定。
下载地址
下载好之后可以到Nacos查看文档。
Windows下cmd命令到nacos文件夹下的bin路径下,然后执行startup.cmd就可以启动Nacos了。
浏览器访问:http://localhost:8848/nacos,账号密码都是nacos
SpringCloud Alibaba——Nacos服务发现(学习记录)_第2张图片
在配置文件中进行配置:

spring:
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848
  application:
    name: user-center
server:
  port: 8081

启动项目之后就可以在控制台-服务列表查看注册上来的某个微服务了,这里必须要在spring的配置中配置:spring.application.name,不然的话项目是启动不起来的,控制台的服务名就是配置的名称
SpringCloud Alibaba——Nacos服务发现(学习记录)_第3张图片
再启动另一个端口的程序,点击详情就可以看到他集群下的微服务实例
SpringCloud Alibaba——Nacos服务发现(学习记录)_第4张图片

领域模型

SpringCloud Alibaba——Nacos服务发现(学习记录)_第5张图片
Namespace:实现隔离,默认是public
Group:不同服务可以分到一个组,默认DEFAULT_GROUP
Serbice:微服务
Cluster:集群,可以用于容灾
Instance:微服务实例

配置集群的名称,cluster-name: XXX,具体如下:

spring:
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848
        cluster-name: BJ
        metadata:
          haha: hehe
          csea: ccc
  application:
    name: user-center
server:
  port: 8081

这个时候,这个微服务就在BJ的这个集群下了
SpringCloud Alibaba——Nacos服务发现(学习记录)_第6张图片

命名空间

还可以在nacos的控制台创建新的空间
SpringCloud Alibaba——Nacos服务发现(学习记录)_第7张图片
创建之后就会有一个命名空间ID,拿这个ID在项目中进行配置,那个这个程序就会在这个空间下了

spring:
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848
        cluster-name: BJ
        namespace: 9b74b8d1-94ba-44ea-955b-2e174d42a14a
        metadata:
          haha: hehe
          csea: ccc
  application:
    name: user-center
server:
  port: 8081

其他空间下的微服务

一个服务能找到另一个服务

我这里已经准备好了2个集成了Nacos并且注册到Nacos Server的微服务,接下来测试一个微服务能获取到另一个微服务的所有实例的地址信息

@Autowired
    private DiscoveryClient discoveryClient;

    @GetMapping("test2")
    public List<ServiceInstance> getInstances() {
        // 查询指定服务的所有实例的信息
        return this.discoveryClient.getInstances("user-center");
    }

SpringCloud Alibaba——Nacos服务发现(学习记录)_第8张图片
如果将微服务停止,那是获取不到的
除了Nacos可以作为服务发现组件,还有consul/eureka/zookeeper

元数据

Nacos数据(如配置和服务)描述信息,如服务版本、权重、容灾策略、负载均衡策略、鉴权配置、各种自定义标签 (label),从作用范围来看,分为服务级别的元信息、集群的元信息及实例的元信息。
级别: 服务级别,集群级别,实例级别
作用:

  1. 描述微服务
  2. 微服务调用更灵活(如版本控制)
    比如V1版本的程序只能调用其他版本的V1程序,同理V2

元数据的配置,是以键值对的形式配置:

spring:
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848
        metadata:
          haha: hehe
          csea: ccc
  application:
    name: user-center
server:
  port: 8081

元数据配置
除了配置的方式,也可以在控制台设置
SpringCloud Alibaba——Nacos服务发现(学习记录)_第9张图片

你可能感兴趣的:(springcloud)