[Nacos] Nacos Server主要类和接口 (五)

这篇具有很好参考价值的文章主要介绍了[Nacos] Nacos Server主要类和接口 (五)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

InstanceController: 处理器, 处理服务实例的心跳和注册等请求。

core/Service: 在Nacos客户端的一个微服务名称定义的微服务, 在Nacos服务端是以Service实例的形式出现的。类似于ServiceInfo, ServiceInfo为客户端服务, Service为服务端服务。

RecordListener: Service类实现了RecordListener接口, 这个接口为数据监听接口, 所以Service本身是一个监听器, 可以监听指定数据的变化和删除。

Record: RecordListener接口的泛型为指定了该监听器所要监听的实体类型, 这个类型是一个Record的子接口, Record是Nacos集群传输和存储的记录。

Cluster: 提供某一服务的Instance集群, 和Service为n: 1的状态, Service为1。

Instance: 注册到Nacos中的具体服务实例。

ServiceManager: Nacos中所有service的核心管理者。其中serviceMap属性为Nacos中的服务注册表。

Synchronizer: 同步器。当前Nacos主动发起同步操作。包含两个方法, 一个是当前Nacos主动发送自己的Message给指定Nacos和主动向指定的Nacos获取指定key的Message。

1.InstanceController

处理服务实例的心跳和注册等请求。

[Nacos] Nacos Server主要类和接口 (五)

[Nacos] Nacos Server主要类和接口 (五)

2.core/Service

[Nacos] Nacos Server主要类和接口 (五)

继承pojo/Service, 实现Record和RecordListener接口。

Service类中有一个属性protectThreshold, 为阈值。

与Eureka中的保护阈值对比:

  • 相同点: 0-1, 表示健康实例占所有实例的比例
  • 保护方式不同:
    • Eureka: 一旦健康实例数量小于阈值, 则不再从注册表中清除不健康的实例
    • Nacos: 如果健康实例数量大于阈值, 则消费者调用到的都是健康实例。一旦健康实例数量小于阈值, 则消费者会从所有实例中进行选择调用, 有可能会调用到不健康实例。这样可以保护健康的实例不会被压崩溃。
  • 范围不同:
    • Eureka: 这个阈值针对的是所有服务中的实例
    • Nacos: 这个阈值针对的是当前Service中的服务实例
    private int finalizeCount = 0;

    private String token;

    private List<String> owners = new ArrayList<>();

    private Boolean resetWeight = false;

    private Boolean enabled = true;

    private Selector selector = new NoneSelector();

    private String namespaceId;

    /**
     * IP will be deleted if it has not send beat for some time, default timeout is 30 seconds.
     */
    private long ipDeleteTimeout = 30 * 1000;

    private volatile long lastModifiedMillis = 0L;

    // 校验和,是当前Service的所有SCI信息的字符串拼接
    private volatile String checksum;

    /**
     * TODO set customized push expire time.
     */
    private long pushCacheMillis = 0L;
    // 重要集合
    // key为clusterName
    // value为Cluster实例
    private Map<String, Cluster> clusterMap = new HashMap<>();

3.RecordListener接口和Record接口

RecordListener是数据监听接口

// 泛型指定了当前监听器正在监听的数据类型
public interface RecordListener<T extends Record> {

    /**
     * Determine if the listener was registered with this key.
     * 判断当前监听器是否监听着指定key的数据
     *
     * @param key candidate key
     * @return true if the listener was registered with this key
     */
    boolean interests(String key);

    /**
     * Determine if the listener is to be removed by matching the 'key'.
     * 判断当前监听器是否已经不再监听当前指定key的数据
     *
     * @param key key to match
     * @return true if match success
     */
    boolean matchUnlistenKey(String key);

    /**
     * Action to do if data of target key has changed.
     * 若指定key的数据发生了变更,则触发该方法的执行
     *
     * @param key   target key
     * @param value data of the key
     * @throws Exception exception
     */
    void onChange(String key, T value) throws Exception;

    /**
     * Action to do if data of target key has been removed.
     * 若指定key的数据被删除,则触发该方法的执行
     *
     * @param key target key
     * @throws Exception exception
     */
    void onDelete(String key) throws Exception;
}

Record是Nacos集群传输和存储的记录。

public interface Record {

    /**
     * get the checksum of this record, usually for record comparison.
     *
     * @return checksum of record
     */
    String getChecksum();
}

4.Cluster类和Instance类

Cluster类: 提供某一服务的Instance集群, 即隶属于某一Service的Instance集群。

[Nacos] Nacos Server主要类和接口 (五)

Instance: 注册到Nacos中的具体服务实例。

[Nacos] Nacos Server主要类和接口 (五)

5.ServiceManager类

ServiceManager: Nacos中所有service的核心管理者。其中serviceMap属性为Nacos Server端的服务注册表。

[Nacos] Nacos Server主要类和接口 (五)

serviceMap为Naocs Server端的服务注册表。serviceInfoMap为Nacos Client端的服务注册表

6.Synchronizer

service状态同步器

public interface Synchronizer {

    /**
     * Send message to server.
     * 将msg发送给指定的server
     *
     * @param serverIP target server address
     * @param msg      message to send
     */
    void send(String serverIP, Message msg);

    /**
     * Get message from server using message key.
     *
     * @param serverIP source server address
     * @param key      message key
     * @return message
     */
    Message get(String serverIP, String key);
}

send方法为将msg发送给指定的server, get方法为得到指定server的msg。

[Nacos] Nacos Server主要类和接口 (五)文章来源地址https://www.toymoban.com/news/detail-456490.html

到了这里,关于[Nacos] Nacos Server主要类和接口 (五)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 联想ThinkServer服务器主要硬件Windows Server驱动下载

      联想ThinkServer服务器主要硬件Windows Server驱动下载 操作步骤:   快速导航  RS160  RS260  TS460  TS560  RD350  RD450  RD550  RD650  RQ750  TS150  TS250  TD350  TS450  TS550  RS140  RS240  RD340  RD440  RD540  RD640  RQ940  TS140  TS240  TD340  TS440  TS540  RD330  RD430  RD530  RD630  TS130  TS230  TS43

    2024年02月05日
    浏览(83)
  • JavaSE:抽象类和接口

    目录 一、前言 二、抽象类 (一)抽象类概念 (二)使用抽象类的注意事项 (三)抽象类的作用 三、接口 (一)接口概念 (二)接口语法规则 (三)接口的使用  (四)接口特性 (五)实现多个接口 (六)接口间的继承  (七)使用接口给对象数组排序  (八)Clonabl

    2024年04月13日
    浏览(44)
  • JAVASE---抽象类和接口

    在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。 在Java中,一个类如果被 abstract 修饰称为抽象类,抽象类中被 abstract 修饰的方法称为

    2024年02月09日
    浏览(43)
  • JAVA-抽象类和接口

    文章目录 前言 1.1抽象类的概念 1. 2抽象类的语法 1.3抽象类的特性 1.3.1抽象类不能直接实例化对象 1.3.2抽象方法不能被private,final和static修饰 1.3.3 抽象类的子类要么也是抽象类,要么重写所有抽象方法 1.4抽象类的作用 2.1 接口的概念 2.2 语法规则 2.3 接口的使用  2.4 接口的特性

    2024年02月05日
    浏览(52)
  • 抽象类和接口的区别

    Java是单继承和多实现 参数 抽象类 接口 声明 用abstract声明 用interface声明 实现 子类使用extends来继承抽象类,如果子类不是抽象类的话,它需要提供抽象类中所有声明方法的实现 子类使用implements来实现接口,它需要提供接口中所有声明方法的实现

    2024年02月06日
    浏览(46)
  • Java 抽象类和接口

    登神长阶 第三阶 抽象类和接口 🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀 目录 🐕‍🦺 一.抽象类 🐱1.定义及其作用 🦌2.语法 🦙3.特性 🦏4.意义 🦛二.接口  🐀1.定义及其作用 🦦2.语法 🦘3.具体使用 🐰4.特性 🫏5.多个接口的实现 🐻‍❄️6.接

    2024年03月18日
    浏览(51)
  • 【Java】抽象类和接口

    在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的, 如果一个类中没有包含足够的信息来描绘一个具体的对象,那么这样的类就是抽象类 在Java中,一个类如果被 abstract 修饰称为抽象类,抽象类中被 abstract 修饰的方法

    2024年02月05日
    浏览(46)
  • Java——抽象类和接口

    目录 1.抽象类 1.概念: 2.语法  3.特性  2.接口   1.概念 2.语法  3.特性  在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是 抽象类 。 在这我们

    2024年04月12日
    浏览(50)
  • 什么是API接口?主要作用是什么?

    API英文全称为:Application Programming Interface,中文意思是应用程序编程接口,它是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力。 主要作用: API之主要目的是提供应用程序与开发人员以访问一组例程的能力,而又无需访问源

    2024年02月13日
    浏览(37)
  • [Nacos] Nacos Server处理订阅请求 (九)

    1.InstanceController#list() Nacos Server处理订阅请求 主要还是从请求中获取参数, 比如namespceId、serviceName、agent(指定提交请求的客户端是哪种类型)、clusters、clusterIP、udpPort(后续UDP通信会使用)、app、tenant, 最后调用方法对参数进行处理 2.InstanceController#doSrvIpxt() 对请求进行详细处理 不

    2024年02月06日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包