zoukankan      html  css  js  c++  java
  • es

    public interface ConfigContants {
    String ENV_ES_DATA = "ES_DATA";
    String DEFAULT_ES_DATA_PATH = "/srv/elasticsearch";

    String LOG_ENV_ES_DATA = "LOG_ES_DATA";
    String LOG_MGR_ES_DATA_PATH = "./";

    }

    public interface EsConfManager {
    boolean initConfOk();
    }

    @Component
    public class EsConfManagerImpl implements EsConfManager {

    private final AtomicBoolean esConfInitOk = new AtomicBoolean(false);

    private static Properties envPro;
    @Override
    public boolean initConfOk() {
    if (!esConfInitOk.get()) {
    System.out.println("es not ok");
    }
    return esConfInitOk.get();
    }

    @PostConstruct
    public void start() {
    esConfInitOk.set(false);
    envPro = System.getProperties();
    ThreadUtils.submitAndReturnFuture("es-init", () -> {
    initEsEnv();
    try {
    initEsDataDir();
    } catch (IOException e) {
    e.printStackTrace();
    }
    esConfInitOk.set(true);
    });
    }

    private void initEsEnv() {
    // export env
    if (!envPro.contains(ConfigContants.ENV_ES_DATA)) {
    System.setProperty(ConfigContants.ENV_ES_DATA, ConfigContants.DEFAULT_ES_DATA_PATH);
    }
    if (!envPro.getProperty(ConfigContants.DEFAULT_ES_DATA_PATH).equals(ConfigContants.LOG_ENV_ES_DATA)) {
    System.setProperty(ConfigContants.LOG_ENV_ES_DATA, envPro.getProperty(ConfigContants.ENV_ES_DATA));
    }
    }

    private void initEsDataDir() throws IOException {
    File esDir = new File(ConfigContants.LOG_ENV_ES_DATA + File.separator + "data");
    if (!esDir.exists()) {
    boolean isk = esDir.mkdir();
    Files.setPosixFilePermissions(esDir.toPath(), PosixFilePermissions.fromString("550"));
    }
    }
    }

    @Component
    public class EsMonitorAdatpter {
    private final AtomicBoolean esSummaryConfig = new AtomicBoolean(false);
    private final AtomicBoolean esStatus = new AtomicBoolean(false);

    @Autowired
    private LogMgrDm logMgrDm;

    @Autowired
    private EsProcessAdatper esProcessAdatper;

    @Autowired
    private EsConfManager esConfManager;

    @Autowired
    private LogMgrManager logMgrManager;

    public synchronized boolean esSummaryIsOn() {
    if (!esSummaryConfig.get()) {
    System.out.println("monitor off");
    }
    return esSummaryConfig.get();
    }

    @PostConstruct
    public void init() throws InterruptedException {
    while (!logMgrManager.logMgrConfOk() || !esConfManager.initConfOk()) {
    Thread.sleep(2000);
    }
    ThreadUtils.scheduleWithFixedDelay(() -> {
    if ("ok".equals(logMgrDm.getConfig())) {
    esSummaryConfig.set(true);
    } else {
    esSummaryConfig.set(false);
    }
    controlEs();
    }, 10L, 30L, TimeUnit.SECONDS);

    }


    private void controlEs() {
    //do sth
    int result = monitorEsProcess();
    if (result == 0 && !esSummaryConfig.get()) {
    esProcessAdatper.stopEs();
    }
    if (result == 1 && esSummaryConfig.get()) {
    esProcessAdatper.startEs();
    }
    }

    private int monitorEsProcess() {
    String cmd = "ps -ef|grep el";
    return 2;

    }



    public synchronized void startEs() {
    System.out.println("start es");
    }

    public boolean esIsRun() {
    if (!esStatus.get()) {
    System.out.println("not run");
    }
    return esStatus.get();
    }
    }

    public class EsProcessAdatper {

    public void startEs() {
    //start es
    }

    public void stopEs() {
    //stop es
    }
    }

    public interface LogMgrManager {

    boolean logMgrConfOk();

    boolean isLogMgrPrepared();
    }


    public class LogMgrManagerImpl implements LogMgrManager {

    private final AtomicBoolean logMgrConf = new AtomicBoolean(false);

    private final AtomicBoolean logMgrPrepared = new AtomicBoolean(false);


    @Override
    public boolean logMgrConfOk() {
    if (!logMgrConf.get()) {
    System.out.println("not ok");
    }
    return logMgrConf.get();
    }

    @Override
    public boolean isLogMgrPrepared() {
    if (!logMgrPrepared.get()) {
    System.out.println("no prepared");
    }
    return logMgrPrepared.get();
    }

    @PostConstruct
    public void init() {
    logMgrConf.set(false);
    logMgrPrepared.set(false);
    ThreadUtils.submitAndReturnFuture("init LogMgr", () -> {
    updateDbConf();
    logMgrConf.set(true);

    // waiting latest conf is ok
    while (!downLoadConf()) {
    try {
    Thread.sleep(3000);
    } catch (InterruptedException e) {
    e.printStackTrace();
    }
    }

    // latest conf is ok,update db again.
    updateDbConf();
    });

    }

    private boolean downLoadConf() {
    // waiting config update from configmgr .

    logMgrPrepared.set(true);
    return true;
    }

    private void updateDbConf() {
    // create db config or default
    System.out.println("update db conf");
    }
    }
    逆风的方向最适合飞翔,我不怕千万人阻挡,只怕自己投降。
  • 相关阅读:
    ASP.NET中的Eval与DataBinder.Eval()方法
    数据库三范式
    某一公司的面试题目
    Gridview样式
    截取字符串代码
    C#文件IO操作
    随机生成验证码
    HTTP 错误 401.2 Unauthorized 由于身份验证头无效,您无权查看此页。 IIS7.0解决办法
    危险字符过滤的类
    asp.net面试题新手必备
  • 原文地址:https://www.cnblogs.com/daemon-czk/p/13620569.html
Copyright © 2011-2022 走看看