欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

ElasticSearch源码分析——入口类Elasticsearch

程序员文章站 2022-03-31 15:29:22
...

 

 

Java DNS缓存策略

DNS(Domain Name System,域名系统)服务器管理域名和IP的对应关系。

一次域名查询是非常耗时的操作,可能经过多台DNS服务器才能查找到指定的域名。

Java 内置提供了DNS缓存服务,重用已有的查询结果。默认将永久保留访问过的域名。

 

 

通过调用“Security.setProperty”设置缓存策略相关的配置属性。

配置属性 默认值 说明
networkaddress.cache.ttl -1 域名查找成功时,缓存时间。为-1时,缓存永不过期。单位:秒
networkaddress.cache.negative.ttl 10 域名查找失败时,缓存时间。

 

 以上两个属性不能在命令行使用“-Dk=v”的方式设置。因此,ES中通过添加前缀“es.”的方式设置。

 

private static void overrideDnsCachePolicyProperties() {
    for (final String property : new String[] {"networkaddress.cache.ttl", "networkaddress.cache.negative.ttl" }) {
        final String overrideProperty = "es." + property;
        final String overrideValue = System.getProperty(overrideProperty);
        if (overrideValue != null) {
            try {
                // round-trip the property to an integer and back to a string to ensure that it parses properly
                Security.setProperty(property, Integer.toString(Integer.valueOf(overrideValue)));
            } catch (final NumberFormatException e) {
                throw new IllegalArgumentException(
                        "failed to parse [" + overrideProperty + "] with value [" + overrideValue + "]", e);
            }
        }
    }
}

 

提问1:为什么不通过配置文件中设置? 

不一致问题,即配置文件在程序运行过程中可能被修改,但是程序中使用的还是原来的值。

 

Java SecurityManager

安全管理器用来检查操作是否有权执行。

一个Java常驻进程,如果限制IO读写、执行外部命令。被攻破时,将产生很大的安全隐患。

 

 

 

 

 

 

相关标签: ElasticSearch DNS