文档章节

[优化] Disconf 与 Dubbo client多网卡IP配置补丁

u91win
 u91win
发布于 2016/03/16 16:51
字数 369
阅读 185
收藏 0

问题场景:

Disconf集中统一化了各节点的配置文件,这个不错!但在某些复杂场景下,比如你上了dubbo而某些服务器是多网卡的(dubbo说 “遍历本地网卡,返回第一个合理的IP。”),集中统一又变得不适用了。


解决办法:

修改 com/baidu/disconf/web/web/config/controller/ConfigFetcherController.java,  File配置类型增加如下两个魔术变量:

${ClientIP} : 可获取client远程的ip ,替换为 192.168.2.100
${ClientID} : 可根据client远程IP,配置id 为 id_192_168_2_100

“实例列表”红色“出现错误”提示就是我们想要的差异配置结果。

贴码:

public HttpEntity<byte[]> getFile(HttpServletRequest request,ConfForm confForm) {

        boolean hasError = false;
        
        String ip = getRemoteAddress(request);
        String id ="id_"+ ip.replace(".", "_");
        //
        // 校验
        //
        ConfigFullModel configModel = null;
        try {
            configModel = configValidator4Fetch.verifyConfForm(confForm);
        } catch (Exception e) {
            LOG.error(e.toString());
            hasError = true;
        }

        if (hasError == false) {
            try {
                //
                Config config = configFetchMgr
                        .getConfByParameter(configModel.getApp().getId(), configModel.getEnv().getId(),
                                configModel.getVersion(), configModel.getKey(),
                                DisConfigTypeEnum.FILE);
                if (config == null) {
                    hasError = true;
                    throw new DocumentNotFoundException(configModel.getKey());
                }

                return downloadDspBill(configModel.getKey(), config.getValue().replace("${ClientIP}", ip).replace("${ClientID}", id));

            } catch (Exception e) {
                LOG.error(e.toString());
            }
        }

        if (confForm.getKey() != null) {
            throw new DocumentNotFoundException(confForm.getKey());
        } else {
            throw new DocumentNotFoundException("");
        }
    }



© 著作权归作者所有

u91win
粉丝 2
博文 5
码字总数 1377
作品 0
普陀
架构师
私信 提问
dubbo 双网卡或者VPN的时候,服务提供者的错误IP注册到中心

使用了VPN,启动了dubbo服务提供者应用,又连了正式环境的注册中心; 一旦dubbo获取的ip错误后(拨了vpn 本机IP就会有多个), 这种情况即使提供者服务停掉,目前dubbo没有能力清除这类错误的...

greki
2015/04/17
0
0
分布式配置管理平台--Disconf

Distributed Configuration Management Platform(分布式配置管理平台) 专注于各种 分布式系统配置管理 的通用组件/通用平台, 提供统一的配置管理服务。 包括 百度、滴滴打车、银联、网易、拉...

knightliao
2015/04/13
67.8K
19
Spring-Boot自定义Starter实践

此文已由作者王慎为授权网易云社区发布。 欢迎访问网易云社区,了解更多网易技术产品运营经验。 disconf-spring-boot-starter 使用方法: 引入maven依赖: com.netease.haitao.sc disconf-sp...

网易云
2018/10/17
0
0
dubbo提供者出现不明外网ip注册的问题

之前碰到过这样的问题,在dubbo admin里会看到有不明的外网IP,服务虽然是注册成功了,但是提供者确实来自不明的IP。 今天做新项目上线,又碰到了这种情况。灵机一动会不会是因为dubbo在获取...

bfleeee
2015/10/13
407
0
部署高可用的Lync Server 2013 Part 5 准备LYNC服务器

好,一切准备就绪,现在开始准备我们正式的lync服务器: 2台前端服务器 2台边缘服务器 2台中介服务器 2台持久聊天服务器 2台office web app服务器 2台控制器服务器 2台反向代理服务器,我们用...

kneight
2014/05/13
0
0

没有更多内容

加载失败,请刷新页面

加载更多

从濒临解散到浴火重生,OceanBase 这十年经历了什么?

阿里妹导读:谈及国产自研数据库,就不得不提 OceanBase。与很多人想象不同的是,OceanBase 并非衔着金钥匙出生的宠儿。相反,它曾无人看好、困难重重,整个团队甚至数度濒临解散。 从危在旦...

阿里云云栖社区
41分钟前
5
0
比特币第三方API大全

在开发比特币应用时,除了使用自己搭建的节点,也可以利用第三方提供的比特币api,来获取市场行情、进行交易支付、查询账户余额等。这些第三方api不一定遵循标准的比特币rpc接口规范,但往往...

汇智网教程
52分钟前
5
0
Dozer:Dozer异常java.lang.ClassCastException

这个问题是个很难发现的问题,因为代码本身没有错误,但就是无法找到报错原因 现记录下这个报错 java.lang.ClassCastException:com.XXX.ObjectA cannot be cast to com.XXX.ObjectA 代码中并...

琴兽
今天
2
0
Feign Retryer的默认重试策略测试

1、Feign配置 @Configurationpublic class FeignConfig { @Value("${coupon_service.url:http://localhost:8081}") private String couponServiceUrl; @Bean publ......

moon888
今天
2
0
关于不同域名下的session共享问题

如果登录,首页,分类,列表,产品都在不同的二级域名下,主域名不变,一定要保证里面的版本问题,不能为了更新而更新,这样哪个下面的session都访问不了。

dragon_tech
今天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部