Commit bc38493a authored by 黎博's avatar 黎博

修改切换数据源时获取namespace的切换方式

parent e370702d
package cn.qg.qaplatform.config;
import cn.qg.qaplatform.utils.HttpClientUtils;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 启动时动态生成Namespace Map缓存
*/
@Slf4j
@Component
public class NamespaceCache {
public static Map<String, String> namespaceMap = new HashMap<>();
@PostConstruct
public void init() {
String url = "http://holmes-fe.liangkebang.net/k8s/namespace/list?env=all";
JSONObject response = HttpClientUtils.doGetReturnJson(url);
JSONArray nsJsonArray = (JSONArray) response.get("data");
List<Map> namespaceList = JSONArray.parseArray(nsJsonArray.toJSONString(), Map.class);
for (Map map: namespaceList) {
namespaceMap.put(map.get("name").toString(), map.get("mysqlHost") + ":" + map.get("mysqlPort"));
}
log.info("获取到Namespace列表:{}", JSON.toJSONString(namespaceMap));
}
/**
* 获取namespace定时任务
*/
@Scheduled(cron = "0 */30 * * * ?")
public void getNsTask() {
//每半个小时执行一次缓存
init();
}
}
package cn.qg.qaplatform.config; package cn.qg.qaplatform.config;
import cn.qg.qaplatform.enums.Namespace;
import com.alibaba.druid.pool.DruidDataSource; import com.alibaba.druid.pool.DruidDataSource;
import java.util.Map;
/** /**
* 切换数据源 * 切换数据源
...@@ -14,243 +15,15 @@ public class SwitchDataSource { ...@@ -14,243 +15,15 @@ public class SwitchDataSource {
public static void dataSourceSwitch(String namespace, String database) { public static void dataSourceSwitch(String namespace, String database) {
/** Map<String, String> nsMap = NamespaceCache.namespaceMap;
* dev1环境
*/
if (namespace.equals("dev1")) {
DruidDataSource druidDataSource = new DruidDataSource();
String url = Namespace.DEV1.getUrl() + database + SUFFIX;
String dbKey = Namespace.DEV1.getKey();
druidDataSource.setUrl(url);
druidDataSource.setUsername(Namespace.DEV1.getUsername());
druidDataSource.setPassword(Namespace.DEV1.getPassword());
DynamicDataSource.dataSourcesMap.put(dbKey, druidDataSource);
DynamicDataSource.setDataSource(dbKey);
}
/**
* pre 环境
*/
if (namespace.equals("ka1")) {
DruidDataSource druidDataSource = new DruidDataSource();
String url = Namespace.KA1.getUrl() + database + SUFFIX;
String dbKey = Namespace.KA1.getKey();
druidDataSource.setUrl(url);
druidDataSource.setUsername(Namespace.KA1.getUsername());
druidDataSource.setPassword(Namespace.KA1.getPassword());
DynamicDataSource.dataSourcesMap.put(dbKey, druidDataSource);
DynamicDataSource.setDataSource(dbKey);
}
/**
* qa 环境
*/
if (namespace.equals("qa")) {
DruidDataSource druidDataSource = new DruidDataSource();
String url = Namespace.QA.getUrl() + database + SUFFIX;
String dbKey = Namespace.QA.getKey();
druidDataSource.setUrl(url);
druidDataSource.setUsername(Namespace.QA.getUsername());
druidDataSource.setPassword(Namespace.QA.getPassword());
DynamicDataSource.dataSourcesMap.put(dbKey, druidDataSource);
DynamicDataSource.setDataSource(dbKey);
}
/**
* qa2 环境
*/
if (namespace.equals("qa2")) {
DruidDataSource druidDataSource = new DruidDataSource();
String url = Namespace.QA2.getUrl() + database + SUFFIX;
String dbKey = Namespace.QA2.getKey();
druidDataSource.setUrl(url);
druidDataSource.setUsername(Namespace.QA2.getUsername());
druidDataSource.setPassword(Namespace.QA2.getPassword());
DynamicDataSource.dataSourcesMap.put(dbKey, druidDataSource);
DynamicDataSource.setDataSource(dbKey);
}
/**
* qa3 环境
*/
if (namespace.equals("qa3")) {
DruidDataSource druidDataSource = new DruidDataSource();
String url = Namespace.QA3.getUrl() + database + SUFFIX;
String dbKey = Namespace.QA3.getKey();
druidDataSource.setUrl(url);
druidDataSource.setUsername(Namespace.QA3.getUsername());
druidDataSource.setPassword(Namespace.QA3.getPassword());
DynamicDataSource.dataSourcesMap.put(dbKey, druidDataSource);
DynamicDataSource.setDataSource(dbKey);
}
/**
* test1 环境
*/
if (namespace.equals("test1")) {
DruidDataSource druidDataSource = new DruidDataSource();
String url = Namespace.TEST1.getUrl() + database + SUFFIX;
String dbKey = Namespace.TEST1.getKey();
druidDataSource.setUrl(url);
druidDataSource.setUsername(Namespace.TEST1.getUsername());
druidDataSource.setPassword(Namespace.TEST1.getPassword());
DynamicDataSource.dataSourcesMap.put(dbKey, druidDataSource);
DynamicDataSource.setDataSource(dbKey);
}
/**
* test2 环境
*/
if (namespace.equals("test2")) {
DruidDataSource druidDataSource = new DruidDataSource();
String url = Namespace.TEST2.getUrl() + database + SUFFIX;
String dbKey = Namespace.TEST2.getKey();
druidDataSource.setUrl(url);
druidDataSource.setUsername(Namespace.TEST2.getUsername());
druidDataSource.setPassword(Namespace.TEST2.getPassword());
DynamicDataSource.dataSourcesMap.put(dbKey, druidDataSource);
DynamicDataSource.setDataSource(dbKey);
}
/**
* test4 环境
*/
if (namespace.equals("test4")) {
DruidDataSource druidDataSource = new DruidDataSource();
String url = Namespace.TEST4.getUrl() + database + SUFFIX;
String dbKey = Namespace.TEST4.getKey();
druidDataSource.setUrl(url);
druidDataSource.setUsername(Namespace.TEST4.getUsername());
druidDataSource.setPassword(Namespace.TEST4.getPassword());
DynamicDataSource.dataSourcesMap.put(dbKey, druidDataSource);
DynamicDataSource.setDataSource(dbKey);
}
/**
* test5 环境
*/
if (namespace.equals("test5")) {
DruidDataSource druidDataSource = new DruidDataSource();
String url = Namespace.TEST5.getUrl() + database + SUFFIX;
String dbKey = Namespace.TEST5.getKey();
druidDataSource.setUrl(url);
druidDataSource.setUsername(Namespace.TEST5.getUsername());
druidDataSource.setPassword(Namespace.TEST5.getPassword());
DynamicDataSource.dataSourcesMap.put(dbKey, druidDataSource);
DynamicDataSource.setDataSource(dbKey);
}
/**
* xjfq 环境
*/
if (namespace.equals("xjfq")) {
DruidDataSource druidDataSource = new DruidDataSource();
String url = Namespace.XJFQ.getUrl() + database + SUFFIX;
String dbKey = Namespace.XJFQ.getKey();
druidDataSource.setUrl(url);
druidDataSource.setUsername(Namespace.XJFQ.getUsername());
druidDataSource.setPassword(Namespace.XJFQ.getPassword());
DynamicDataSource.dataSourcesMap.put(dbKey, druidDataSource);
DynamicDataSource.setDataSource(dbKey);
}
/**
* xyqb 环境
*/
if (namespace.equals("xyqb")) {
DruidDataSource druidDataSource = new DruidDataSource();
String url = Namespace.XYQB.getUrl() + database + SUFFIX;
String dbKey = Namespace.XYQB.getKey();
druidDataSource.setUrl(url);
druidDataSource.setUsername(Namespace.XYQB.getUsername());
druidDataSource.setPassword(Namespace.XYQB.getPassword());
DynamicDataSource.dataSourcesMap.put(dbKey, druidDataSource);
DynamicDataSource.setDataSource(dbKey);
}
/**
* fe 环境
*/
if (namespace.equals("fe")) {
DruidDataSource druidDataSource = new DruidDataSource();
String url = Namespace.FE.getUrl() + database + SUFFIX;
String dbKey = Namespace.FE.getKey();
druidDataSource.setUrl(url);
druidDataSource.setUsername(Namespace.FE.getUsername());
druidDataSource.setPassword(Namespace.FE.getPassword());
DynamicDataSource.dataSourcesMap.put(dbKey, druidDataSource);
DynamicDataSource.setDataSource(dbKey);
}
/**
* vcc环境
*/
if (namespace.equals("vcc")) {
DruidDataSource druidDataSource = new DruidDataSource();
String url = Namespace.VCC.getUrl() + database + SUFFIX;
String dbKey = Namespace.VCC.getKey();
druidDataSource.setUrl(url);
druidDataSource.setUsername(Namespace.VCC.getUsername());
druidDataSource.setPassword(Namespace.VCC.getPassword());
DynamicDataSource.dataSourcesMap.put(dbKey, druidDataSource);
DynamicDataSource.setDataSource(dbKey);
}
/**
* vcc2环境
*/
if (namespace.equals("vcc2")) {
DruidDataSource druidDataSource = new DruidDataSource();
String url = Namespace.VCC2.getUrl() + database + SUFFIX;
String dbKey = Namespace.VCC2.getKey();
druidDataSource.setUrl(url);
druidDataSource.setUsername(Namespace.VCC2.getUsername());
druidDataSource.setPassword(Namespace.VCC2.getPassword());
DynamicDataSource.dataSourcesMap.put(dbKey, druidDataSource);
DynamicDataSource.setDataSource(dbKey);
}
/**
* vcc3环境
*/
if (namespace.equals("vcc3")) {
DruidDataSource druidDataSource = new DruidDataSource();
String url = Namespace.VCC3.getUrl() + database + SUFFIX;
String dbKey = Namespace.VCC3.getKey();
druidDataSource.setUrl(url);
druidDataSource.setUsername(Namespace.VCC3.getUsername());
druidDataSource.setPassword(Namespace.VCC3.getPassword());
DynamicDataSource.dataSourcesMap.put(dbKey, druidDataSource);
DynamicDataSource.setDataSource(dbKey);
}
/**
* TOB环境
*/
if (namespace.equals("tob")) {
DruidDataSource druidDataSource = new DruidDataSource();
String url = Namespace.TOB.getUrl() + database + SUFFIX;
String dbKey = Namespace.TOB.getKey();
druidDataSource.setUrl(url);
druidDataSource.setUsername(Namespace.TOB.getUsername());
druidDataSource.setPassword(Namespace.TOB.getPassword());
DynamicDataSource.dataSourcesMap.put(dbKey, druidDataSource);
DynamicDataSource.setDataSource(dbKey);
}
/** String dbUrl = nsMap.get(namespace);
* k8s 环境 DruidDataSource druidDataSource = new DruidDataSource();
*/ druidDataSource.setUrl("jdbc:mysql://" + dbUrl + "/" + database + SUFFIX);
if (namespace.equals("k8s")) { druidDataSource.setUsername("qa");
DruidDataSource druidDataSource = new DruidDataSource(); druidDataSource.setPassword("qatest");
String url = Namespace.K8S.getUrl() + database + SUFFIX; DynamicDataSource.dataSourcesMap.put(namespace, druidDataSource);
String dbKey = Namespace.K8S.getKey(); DynamicDataSource.setDataSource(namespace);
druidDataSource.setUrl(url);
druidDataSource.setUsername(Namespace.K8S.getUsername());
druidDataSource.setPassword(Namespace.K8S.getPassword());
DynamicDataSource.dataSourcesMap.put(dbKey, druidDataSource);
DynamicDataSource.setDataSource(dbKey);
}
} }
} }
package cn.qg.qaplatform.enums; package cn.qg.qaplatform.enums;
/**
* 废弃,改成动态获取
*/
public enum Namespace { public enum Namespace {
DEV1("dev1", "dev1", "jdbc:mysql://172.17.5.16:32661/", "qa", "qatest"), DEV1("dev1", "dev1", "jdbc:mysql://172.17.5.16:32661/", "qa", "qatest"),
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment