nacos-服务发现组件(注册中心)

问题:
如果服务提供者的地址发生改变,怎么办?如何能让服务消费者感知服务提供者的改变呢?这就是需要服务发现机制,同时需要一个组件,就是注册中心。

每一个服务都会在一定时间向注册中心发送一次心跳,来保证服务的正常使用。

nacos下载地址
nacos官方文档

nacos是一个服务组件,可以作为服务注册中心使用,还可以管理配置使用。

搭建nacos服务

我们搭建的nacos-server需要与nacos-client兼容,我们这里有一个技巧来查看我们应该使用哪个版本的nacos-server。
首先在配置文件中找到spring-cloud-alibaba-dependencies,按住Ctrl点击进去之后,搜索nacos,就会找到一个<nacos.client.version>1.1.1</nacos.client.version>,我们的nacos-server版本和这个版本保持一致就可以了。

接下来我们就可以启动nacos服务了【参考官网】,然后访问http://127.0.0.1:8848/nacos/index.html,将ip换成实际情况的就可以了。然后会跳出来一个登陆页面,账号和密码都输入nacos就可以登录了。

登录页面

登录成功页

这样我们的nacos-server就搭建完成了。。。

整合nacos

第一步:添加依赖
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            <version>0.9.0.RELEASE</version>
        </dependency>
第二步:添加注解

在启动类上面添加@EnableDiscoveryClient
因为新版本做了相应的改造,所以这个注解可以不加

第三步:添加配置
spring:
  cloud:
    nacos:
      discovery:
        #指定nacos服务地址,前面不需要加http://
        server-addr: 127.0.0.1:8848
  application:
    #服务名称。这里不要用_或者特殊字符,用中划线-
    name: user-center

如果这一步在注解里面不添加服务名称,在注册中心是找不到的。。。

最后启动项目,打开nacos客户端,就可以看见服务注册到注册中心了。结果如下图:

注册成功结果

这里扩展一下,Spring Cloud 提供了一个服务接口DiscoveryClient,里面有两个方法比较实用,一个是查询指定服务的所有实例信息的getInstances接口,另一个是查询该注册中心有多少个服务getServices()接口,直接写到自己的测试代码里就可以查看该注册中心上面的信息了。代码如下:

 @Autowired
 private DiscoveryClient discoveryClient;

@GetMapping("getInstances")
    public List<ServiceInstance> getInstances(){
        //查询指定服务的所有实例信息
        //无论使用什么做注册中心都可以使用consul、eureka、zookeeper
        return discoveryClient.getInstances("user-center");
    }

    @GetMapping("getServices")
    public List<String> getServices(){
        //查询该注册中心有多少个服务
        return discoveryClient.getServices();
    }

服务发现的领域模型

image.png

image.png

Namespace:实现隔离,在不同的Namespace下面的微服务之间是访问不通的。可以用于区分环境使用。比如开发、测试、生产各一套环境。
Service:指的是nacos服务,可以将服务注册到上面的一个注册中心
Cluster:指定集群名称。可以将同一个微服务部署多个集群,例如南京集群、北京集群等
Instance:每个微服务实例


元数据

什么是元数据?

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

在控制台设置元数据的方法如下图:

image.png
元数据的作用

1、提供描述信息
2、让微服务调用更加灵活(例如:微服务版本控制)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容