重新定义SpringCloud-SpringCloud Eureka笔记- Eureka的核心类(二)

Eureka的核心类.

InstanceInfo

<instance>
<instanceId>CHEND-PC.sen5.sz:sw-user:8006</instanceId>
<hostName>192.168.150.24</hostName>
<app>SW-USER</app>
<ipAddr>192.168.150.24</ipAddr>
<status>UP</status>
<overriddenstatus>UNKNOWN</overriddenstatus>
<port enabled="true">8006</port>
<securePort enabled="false">443</securePort>
<countryId>1</countryId>
<dataCenterInfo class="com.netflix.appinfo.InstanceInfo$DefaultDataCenterInfo">
<name>MyOwn</name>
</dataCenterInfo>
<leaseInfo>
<renewalIntervalInSecs>30</renewalIntervalInSecs>
<durationInSecs>90</durationInSecs>
<registrationTimestamp>1554119366405</registrationTimestamp>
<lastRenewalTimestamp>1554164316452</lastRenewalTimestamp>
<evictionTimestamp>0</evictionTimestamp>
<serviceUpTimestamp>1554119366406</serviceUpTimestamp>
</leaseInfo>
<metadata>
<management.port>8006</management.port>
<jmx.port>51543</jmx.port>
</metadata>
<homePageUrl>http://192.168.150.24:8006/</homePageUrl>
<statusPageUrl>http://192.168.150.24:8006/actuator/info</statusPageUrl>
<healthCheckUrl>http://192.168.150.24:8006/actuator/health</healthCheckUrl>
<vipAddress>sw-user</vipAddress>
<secureVipAddress>sw-user</secureVipAddress>
<isCoordinatingDiscoveryServer>false</isCoordinatingDiscoveryServer>
<lastUpdatedTimestamp>1554119366406</lastUpdatedTimestamp>
<lastDirtyTimestamp>1554119366397</lastDirtyTimestamp>
<actionType>ADDED</actionType>
</instance>
复制代码

字段含义

  • InstanceId:实例id
  • hostName:主机名字
  • app:应用名称
  • ipAddr:ip地址
  • status:实例的状态,例如UP,DOWN,STARTING,OUT_OF_SERVICE,UNKNOWN
  • overriddenstatus:外界需要强制副高的状态值,默认的使用UNKNOWN
  • port:端口号
  • securePort:https的端口号
  • countryId:国家ID(被废弃)
  • dataCenterInfo:数据中心的信息,Netflix或者Amazon或者MyOwn
  • leaseInfo
    • renewalIntervalInSecs:client端续约的间隔周期
    • durationInSecs:client段需要设定的租约的有效时长
    • registrationTimestamp:server端设置的该租约的第一次注册时间
    • lastRenewalTimestamp:server端设置的该租约的最后一次续约时间
    • evictionTimestamp:server端设置的该租约被剔除的时间
    • serviceUpTimestamp:server端设置的该服务实例标记的为UP的时
  • homePageUrl:应用实例的首页的url
  • statusPageUrl:应用实例的状态页url
  • healthCheckUrl:应用实例健康检查的url
  • secureVipAddress:https的虚拟ip地址
  • isCoordinatingDiscoveryServer:首先标志该discoveryServer是否是响应你请求的实例
  • lastUpdatedTimestamp:状态信息最后更新时间
  • lastDirtyTimestamp:实例信息最新的国企时间,在client端用于表示该实例信息是否与Eureka Server一致,在Server端则用于多个Eureka Server之间的信息同步
  • actionType:表示Eureka Server对该实例执行的操作,包括ADDED,MODIFIED,DELETED这三类

ServiceInstance

ServiceInstance是SpringCloud對service discovery的实例信息的抽象接口,约定了服务发现实例应用有哪些通用的信息,由于SpringCloud适配了Zookeeper,Consul,Netflix Eureka注册中心的,需要更加的抽象。 EurekaRegistration就是ServiceInstance接口的实现类。

public interface ServiceInstance {
    default String getInstanceId() {
        return null;
    }

    String getServiceId();

    String getHost();

    int getPort();

    boolean isSecure();

    URI getUri();

    Map<String, String> getMetadata();

    default String getScheme() {
        return null;
    }
}
复制代码

InstanceStatus

InstanceStatus用于表示服务实例的状态

public static enum InstanceStatus {
    UP,
    DOWN,
    STARTING,
    OUT_OF_SERVICE,
    UNKNOWN;

    private InstanceStatus() {
    }

    public static InstanceInfo.InstanceStatus toEnum(String s) {
        if (s != null) {
            try {
                return valueOf(s.toUpperCase());
            } catch (IllegalArgumentException var2) {
                InstanceInfo.logger.debug("illegal argument supplied to InstanceStatus.valueOf: {}, defaulting to {}", s, UNKNOWN);
            }
        }

        return UNKNOWN;
    }
}
复制代码

该类主要包括了 UP,DOWN,STARTING, OUT_OF_SERVICE,UNKNOWN几种状态,OUT_OF_SERVICE即停止接受请求,处于该服务状态的实例不会被路由到,经常用于升级部署服务的场景。

LeaseManager

接口定义了应用服务实例在服务中心的几个基本操作

public interface LeaseManager<T> {
    //用于注册服务实例信息
    void register(T var1, int var2, boolean var3);
    //用于删除实例信息
    boolean cancel(String var1, String var2, boolean var3);
    //用于与EurekaServer进行心跳操作,维持租约
    boolean renew(String var1, String var2, boolean var3);
    //server端的一个方法,用于剔除租约过期的服务实例信息
    void evict();
}
复制代码

LookupService

该接口定义了Eureka Client从服务中心获取服务实例的查询方法。这个接口主要Client端使用,其定义了获取所有应用信息,根据应用id获取所有服务实例,以及根据visualHostname使用round-robin方式获取下一个服务实例的方法。

public interface LookupService<T> {
    Application getApplication(String var1);

    Applications getApplications();

    List<InstanceInfo> getInstancesById(String var1);

    InstanceInfo getNextServerFromEureka(String var1, boolean var2);
}
复制代码

转载于:https://juejin.im/post/5c6cf6da5188256219176e6c

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值