All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.alibaba.nacos.naming.misc.SwitchDomain Maven / Gradle / Ivy

The newest version!
/*
 * Copyright 1999-2018 Alibaba Group Holding Ltd.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.alibaba.nacos.naming.misc;

import com.alibaba.fastjson.JSON;
import com.alibaba.nacos.naming.pojo.Record;
import org.springframework.stereotype.Component;

import java.util.*;
import java.util.concurrent.TimeUnit;

/**
 * @author nacos
 */
@Component
public class SwitchDomain implements Record, Cloneable {

    private List masters;

    private Map adWeightMap = new HashMap<>();

    private long defaultPushCacheMillis = TimeUnit.SECONDS.toMillis(10);

    private long clientBeatInterval = TimeUnit.SECONDS.toMillis(5);

    private long defaultCacheMillis = TimeUnit.SECONDS.toMillis(3);

    private float distroThreshold = 0.7F;

    private boolean healthCheckEnabled = true;

    private boolean distroEnabled = true;

    private boolean enableStandalone = true;

    private boolean pushEnabled = true;

    private int checkTimes = 3;

    private HttpHealthParams httpHealthParams = new HttpHealthParams();

    private TcpHealthParams tcpHealthParams = new TcpHealthParams();

    private MysqlHealthParams mysqlHealthParams = new MysqlHealthParams();

    private List incrementalList = new ArrayList<>();

    private long serverStatusSynchronizationPeriodMillis = TimeUnit.SECONDS.toMillis(2);

    private long serviceStatusSynchronizationPeriodMillis = TimeUnit.SECONDS.toMillis(5);

    private boolean disableAddIP = false;

    private boolean sendBeatOnly = false;

    private Map limitedUrlMap = new HashMap<>();

    /**
     * The server is regarded as expired if its two reporting interval is lagger than this variable.
     */
    private long distroServerExpiredMillis = TimeUnit.SECONDS.toMillis(10);

    /**
     * since which version, push can be enabled
     */
    private String pushGoVersion = "0.1.0";
    private String pushJavaVersion = "0.1.0";
    private String pushPythonVersion = "0.4.3";
    private String pushCVersion = "1.0.12";

    private boolean enableAuthentication = false;

    private String overriddenServerStatus = null;

    private boolean defaultInstanceEphemeral = true;

    public boolean isEnableAuthentication() {
        return enableAuthentication;
    }

    public void setEnableAuthentication(boolean enableAuthentication) {
        this.enableAuthentication = enableAuthentication;
    }

    public Set getHealthCheckWhiteList() {
        return healthCheckWhiteList;
    }

    public void setHealthCheckWhiteList(Set healthCheckWhiteList) {
        this.healthCheckWhiteList = healthCheckWhiteList;
    }

    private Set healthCheckWhiteList = new HashSet<>();

    public long getClientBeatInterval() {
        return clientBeatInterval;
    }

    public void setClientBeatInterval(long clientBeatInterval) {
        this.clientBeatInterval = clientBeatInterval;
    }

    public boolean isEnableStandalone() {
        return enableStandalone;
    }

    public void setEnableStandalone(boolean enableStandalone) {
        this.enableStandalone = enableStandalone;
    }

    public SwitchDomain() {
    }

    public boolean isSendBeatOnly() {
        return sendBeatOnly;
    }

    public void setSendBeatOnly(boolean sendBeatOnly) {
        this.sendBeatOnly = sendBeatOnly;
    }

    // the followings are not implemented

    public String getName() {
        return UtilsAndCommons.SWITCH_DOMAIN_NAME;
    }

    public void update(SwitchDomain domain) {

    }

    public List getIncrementalList() {
        return incrementalList;
    }

    public void setIncrementalList(List incrementalList) {
        this.incrementalList = incrementalList;
    }

    public List getMasters() {
        return masters;
    }

    public void setMasters(List masters) {
        this.masters = masters;
    }

    public Map getAdWeightMap() {
        return adWeightMap;
    }

    public void setAdWeightMap(Map adWeightMap) {
        this.adWeightMap = adWeightMap;
    }

    public Integer getAdWeight(String key) {
        return getAdWeightMap().get(key);
    }

    public long getDefaultPushCacheMillis() {
        return defaultPushCacheMillis;
    }

    public void setDefaultPushCacheMillis(long defaultPushCacheMillis) {
        this.defaultPushCacheMillis = defaultPushCacheMillis;
    }

    public long getDefaultCacheMillis() {
        return defaultCacheMillis;
    }

    public void setDefaultCacheMillis(long defaultCacheMillis) {
        this.defaultCacheMillis = defaultCacheMillis;
    }

    public float getDistroThreshold() {
        return distroThreshold;
    }

    public void setDistroThreshold(float distroThreshold) {
        this.distroThreshold = distroThreshold;
    }

    public long getPushCacheMillis(String serviceName) {
        return defaultPushCacheMillis;
    }

    public boolean isHealthCheckEnabled() {
        return healthCheckEnabled;
    }

    public void setHealthCheckEnabled(boolean healthCheckEnabled) {
        this.healthCheckEnabled = healthCheckEnabled;
    }

    public boolean isHealthCheckEnabled(String serviceName) {
        return healthCheckEnabled || getHealthCheckWhiteList().contains(serviceName);
    }

    public boolean isDistroEnabled() {
        return distroEnabled;
    }

    public void setDistroEnabled(boolean distroEnabled) {
        this.distroEnabled = distroEnabled;
    }

    public boolean isPushEnabled() {
        return pushEnabled;
    }

    public void setPushEnabled(boolean pushEnabled) {
        this.pushEnabled = pushEnabled;
    }

    public int getCheckTimes() {
        return checkTimes;
    }

    public void setCheckTimes(int checkTimes) {
        this.checkTimes = checkTimes;
    }

    public HttpHealthParams getHttpHealthParams() {
        return httpHealthParams;
    }

    public void setHttpHealthParams(HttpHealthParams httpHealthParams) {
        this.httpHealthParams = httpHealthParams;
    }

    public TcpHealthParams getTcpHealthParams() {
        return tcpHealthParams;
    }

    public void setTcpHealthParams(TcpHealthParams tcpHealthParams) {
        this.tcpHealthParams = tcpHealthParams;
    }

    public MysqlHealthParams getMysqlHealthParams() {
        return mysqlHealthParams;
    }

    public void setMysqlHealthParams(MysqlHealthParams mysqlHealthParams) {
        this.mysqlHealthParams = mysqlHealthParams;
    }

    public long getServerStatusSynchronizationPeriodMillis() {
        return serverStatusSynchronizationPeriodMillis;
    }

    public void setServerStatusSynchronizationPeriodMillis(long serverStatusSynchronizationPeriodMillis) {
        this.serverStatusSynchronizationPeriodMillis = serverStatusSynchronizationPeriodMillis;
    }

    public long getServiceStatusSynchronizationPeriodMillis() {
        return serviceStatusSynchronizationPeriodMillis;
    }

    public void setServiceStatusSynchronizationPeriodMillis(long serviceStatusSynchronizationPeriodMillis) {
        this.serviceStatusSynchronizationPeriodMillis = serviceStatusSynchronizationPeriodMillis;
    }

    public boolean isDisableAddIP() {
        return disableAddIP;
    }

    public void setDisableAddIP(boolean disableAddIP) {
        this.disableAddIP = disableAddIP;
    }

    public Map getLimitedUrlMap() {
        return limitedUrlMap;
    }

    public void setLimitedUrlMap(Map limitedUrlMap) {
        this.limitedUrlMap = limitedUrlMap;
    }

    public long getDistroServerExpiredMillis() {
        return distroServerExpiredMillis;
    }

    public void setDistroServerExpiredMillis(long distroServerExpiredMillis) {
        this.distroServerExpiredMillis = distroServerExpiredMillis;
    }

    public String getPushGoVersion() {
        return pushGoVersion;
    }

    public void setPushGoVersion(String pushGoVersion) {
        this.pushGoVersion = pushGoVersion;
    }

    public String getPushJavaVersion() {
        return pushJavaVersion;
    }

    public void setPushJavaVersion(String pushJavaVersion) {
        this.pushJavaVersion = pushJavaVersion;
    }

    public String getPushPythonVersion() {
        return pushPythonVersion;
    }

    public void setPushPythonVersion(String pushPythonVersion) {
        this.pushPythonVersion = pushPythonVersion;
    }

    public String getPushCVersion() {
        return pushCVersion;
    }

    public void setPushCVersion(String pushCVersion) {
        this.pushCVersion = pushCVersion;
    }

    public String getOverriddenServerStatus() {
        return overriddenServerStatus;
    }

    public void setOverriddenServerStatus(String overriddenServerStatus) {
        this.overriddenServerStatus = overriddenServerStatus;
    }

    public boolean isDefaultInstanceEphemeral() {
        return defaultInstanceEphemeral;
    }

    public void setDefaultInstanceEphemeral(boolean defaultInstanceEphemeral) {
        this.defaultInstanceEphemeral = defaultInstanceEphemeral;
    }

    @Override
    public String toString() {
        return JSON.toJSONString(this);
    }

    @Override
    protected SwitchDomain clone() throws CloneNotSupportedException {
        return (SwitchDomain) super.clone();
    }

    @Override
    public String getChecksum() {
        return null;
    }

    public interface HealthParams {
        /**
         * Maximum RT
         *
         * @return Max RT
         */
        int getMax();

        /**
         * Minimum RT
         *
         * @return Minimum RT
         */
        int getMin();

        /**
         * Get Factor to reevaluate RT
         *
         * @return reevaluate factor
         */
        float getFactor();
    }

    public static class HttpHealthParams implements HealthParams {

        public static final int MIN_MAX = 3000;
        public static final int MIN_MIN = 500;

        private int max = 5000;
        private int min = 500;
        private float factor = 0.85F;

        @Override
        public int getMax() {
            return max;
        }

        @Override
        public int getMin() {
            return min;
        }

        @Override
        public float getFactor() {
            return factor;
        }

        public void setFactor(float factor) {
            this.factor = factor;
        }

        public void setMax(int max) {
            this.max = max;
        }

        public void setMin(int min) {
            this.min = min;
        }
    }

    public static class MysqlHealthParams implements HealthParams {
        private int max = 3000;
        private int min = 2000;
        private float factor = 0.65F;

        @Override
        public int getMax() {
            return max;
        }

        @Override
        public int getMin() {
            return min;
        }

        @Override
        public float getFactor() {
            return factor;
        }

        public void setFactor(float factor) {
            this.factor = factor;
        }

        public void setMax(int max) {
            this.max = max;
        }

        public void setMin(int min) {
            this.min = min;
        }
    }

    public static class TcpHealthParams implements HealthParams {
        private int max = 5000;
        private int min = 1000;
        private float factor = 0.75F;

        @Override
        public int getMax() {
            return max;
        }

        @Override
        public int getMin() {
            return min;
        }

        @Override
        public float getFactor() {
            return factor;
        }

        public void setFactor(float factor) {
            this.factor = factor;
        }

        public void setMax(int max) {
            this.max = max;
        }

        public void setMin(int min) {
            this.min = min;
        }
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy