![JAR search and dependency download from the Maven repository](/logo.png)
com.github.javaclub.configcenter.client.ConfigServer Maven / Gradle / Ivy
package com.github.javaclub.configcenter.client;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicInteger;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.alibaba.fastjson.JSONObject;
import com.github.javaclub.configcenter.client.util.DESCoder;
import com.github.javaclub.configcenter.client.util.HttpHelper;
import com.github.javaclub.configcenter.client.util.Utils;
public class ConfigServer {
private static final Logger logger = LoggerFactory.getLogger(ConfigServer.class);
private static ConfigServer instance = new ConfigServer();
private String endpoint; // 初始ip
private String appid;
private String appkey;
private volatile List serverList;
private AtomicBoolean inited = new AtomicBoolean(false);
private String env;
private AtomicInteger rid = new AtomicInteger();
public static final int CONFIG_SERVER_PORT = 7001; // 配置中心端口号
private ConfigServer(){
}
public static ConfigServer getInstance(){
return instance;
}
public String getOneServer() {
List tmp = serverList;
if (tmp != null && tmp.size() != 0) {
int index = rid.getAndIncrement();
if (index > Integer.MAX_VALUE - 1000) {
rid.set(0);
}
return tmp.get(index % tmp.size());
}
return endpoint;
}
public synchronized void init(){
if(!inited.get() && !"dev".equals(env)) {
if("online".equals(env)) {
serverList = new ArrayList();
serverList.add("10.117.45.53:7001");
serverList.add("10.171.241.33:7001");
}
Thread t = new Thread(new Runnable() {
@Override
public void run() {
while(true){
try{
Thread.sleep(5000L);
getServers();
}catch(Throwable t){
logger.error("", t);
}
}
}});
t.setDaemon(true);
t.setName("check-config-server");
t.start();
inited.set(true);
}
}
private void getServers() {
if(StringUtils.isBlank(appid)) {
return ;
}
StringBuilder sb = new StringBuilder();
sb.append("http://");
String ip = getOneServer();
sb.append(ip != null ? ip : endpoint);
sb.append("/configcenter/status/iplist/query?clientVer=")
.append(Utils.getConfigClientVer())
.append("&");
sb.append("appid=" + appid);
try {
String resp = HttpHelper.get(sb.toString());
if(StringUtils.isNotBlank(resp)) {
JSONObject result = JSONObject.parseObject(resp);
if(result.getShort("code") == 0) {
if(StringUtils.isNotBlank(result.getString("result"))) {
String v = DESCoder.decrpty(result.getString("result"), appkey);
@SuppressWarnings("unchecked")
List list = JSONObject.parseObject(v, List.class);
if(list != null){
serverList = list;
}
}
} else {
logger.error("failed to getServers:" + resp);
}
}
} catch (Exception e) {
logger.error("",e);
}
}
public void setEndPoint(String endpoint){
this.endpoint = endpoint;
}
public void setAppid(String appid) {
this.appid = appid;
}
public void setAppkey(String appkey) {
this.appkey = appkey;
}
public void setEnv(String env) {
this.env = env;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy