javahost(JVM虚拟DNS)解决hosts程序中hosts配置问题

最近做HBase项目,需要配置hosts,在本地运行很方便,自己直接配置本地文件hosts就可以。但是项目要上线发布,其他团队成员要使用等等,我是否都要告诉他们怎么配置hosts问题,这样太麻烦,因此我试着寻求另一种解决方案。
如果在不同的运行环境访问不同的数据源服务器,为了方便切换是否使用域名替代IP?如果使用域名的话,在开发环境就需要配置hosts文件。我希望可以不用修改hosts文件就可直接运行程序。通过我的努力,终于找到了javahost(JVM虚拟DNS)来帮我解决这些烦恼。
1、配置maven依赖
在pom.xml加入

<dependency>
   <groupId>io.leopard</groupId>
    <artifactId>javahost</artifactId>
    <version>0.9.6</version>
</dependency>

如果是非maven用户,可以通过以下链接下载jar包.
io.leopard:javahost:0.9.6
2、编写hosts.propertie(src/main/resources/hosts.propertie)或者在类中定义
(1)hosts.propertie

user.mysql.guides.leopard.io=127.0.0.1
spark-01 10.10.xxx.xxx
spark-02 10.10.xxx.xxx

(2)HBaseHosts

public class HBaseHosts {

    private static Properties props = new Properties();
    static {
        props.put("spark-01", "10.10.xxx.xxx");
        props.put("spark-02", "10.10.xxx.xxx");
        props.put("spark-03", "10.10.xxx.xxx");
        props.put("spark-04", "10.10.xxx.xxx");    
    }

    public static void getJavaHost(){
        JavaHost.updateVirtualDns(props);
    }
}

3、设置虚拟DNS
(1)

public class HostsTest {

    private static void loadDns() throws IOException {
        Resource resource = new ClassPathResource("/hosts.properties");
        Properties props = PropertiesLoaderUtils.loadProperties(resource);
        JavaHost.updateVirtualDns(props);
    }

    public static void main(String[] args) throws Exception {
        loadDns();
        JavaHost.printAllVirtualDns();// 打印所有虚拟DNS记录
        System.out.println("IP:" + InetAddress.getByName("user.mysql.guides.leopard.io").getHostAddress());// 验证一下解析是否正确
        JettyServer.start();// 启动Jetty服务器
    }
}

(2)

public class HBaseUtil {

    private static Configuration conf;
    static {
        System.setProperty("hadoop.home.dir", Thread.currentThread().getContextClassLoader().getResource("hadoop-common-220-bin-master").getPath());

        HBaseHosts.getJavaHost();

        conf = HBaseConfiguration.create();
        conf.set("hbase.zookeeper.quorum", "");
        conf.set("hbase.zookeeper.property.clientPort", "2181");
        conf.set("zookeeper.znode.parent", "/hbase");

        conf.set("hbase.client.retries.number", "1");//default 35
        conf.set("hbase.rpc.timeout", "3000");//default 60s
        conf.set("hbase.rpc.shortoperation.timeout", "3000");
    }

    public static Configuration getHbaseConnection() {
        return conf;
    }
 }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值