DISCONF

disconfig_2.6.36修复bug 立即下载

Disconf 的模块架构主要包括: Disconf-Tools 、 Disconf-Web、 Disconf-client 和  Disconf-Core。
其他博客:

https://
www.cnblogs.com
/duanxz/p/3568514.html

每个模块的简单介绍如下:

  • Disconf-core
    • 分布式通知模块:支持配置更新的实时化通知
    • 路径管理模块:统一管理内部配置路径URL
  • Disconf-client
    • 配置仓库容器模块:统一管理用户实例中本地配置文件和配置项的内存数据存储
    • 配置reload模块:监控本地配置文件的变动,并自动reload到指定bean
    • 扫描模块:支持扫描所有disconf注解的类和域
    • 下载模块:restful风格的下载配置文件和配置项
    • watch模块:监控远程配置文件和配置项的变化
    • 主备分配模块:主备竞争结束后,统一管理主备分配与主备监控控制
    • 主备竞争模块:支持分布式环境下的主备竞争
  • Disconf-web
    • 配置存储模块:管理所有配置的存储和读取
    • 配置管理模块:支持配置的上传、下载、更新
    • 通知模块:当配置更新后,实时通知使用这些配置的所有实例
    • 配置自检监控模块:自动定时校验实例本地配置与中心配置是否一致
    • 权限控制:web的简单权限控制
  • Disconf-tools
    • context共享模块:提供多实例间context的共享

disconf原理 “入坑”指南

转载ahilll 最后发布于2018-10-29 10:50:10 阅读数 2000  收藏

之前有了解过disconf,也知道它是基于zookeeper来做的,但是对于其运行原理不太了解,趁着周末,debug下源码,也算是不枉费周末大好时光哈 :) 。关于这篇文章,笔者主要是参考disconf源码和官方文档,若有不正确地方,感谢评论区指正交流~

disconf是一个分布式配置管理平台(Distributed Configuration Management Platform),专注于各种 分布式系统配置管理 的通用组件/通用平台, 提供统一的配置管理服务,是一套完整的基于zookeeper的分布式配置统一解决方案。disconf目前已经被多个公司在使用,包括百度、滴滴出行、银联、网易、拉勾网、苏宁易购、顺丰科技 等知名互联网公司。disconf源码地址 https://github.com/knightliao/disconf ,官方文档 https://disconf.readthedocs.io/zh_CN/latest/ 。

目前disconf包含了 客户端disconf-Client和 管理端disconf-Web两个模块,均由java实现。服务依赖组件包括Nginx、Tomcat、Mysql、ZooKeeper,nginx提供反向代理(disconf-web是前后端分离的),Tomcat是后端web容器,配置存储在mysql上,基于zookeeper的wartch模型,实时推送。注意,disconf优先读取本地文件,disconf只支持应用对配置的读操作,通过在disconf-web上更新配置,然后由zookeeper通知到服务实例,最后服务实例去disconf-web端获取最新配置并更新到本地。

 

disconf 功能特点:

  • 支持配置(配置项/配置文件)分布式管理
  • 配置发布统一化
    • 配置发布、更新统一化,同一个上线包 无须改动配置 即可在 多个环境中(RD/QA/PRODUCTION) 上线
    • 配置更新自动化:用户在平台更新配置,使用该配置的系统会自动发现该情况,并应用新配置。特殊地,如果用户为此配置定义了回调函数类,则此函数类会被自动调用
  • 上手简单,基于注解或者xml配置方式

功能特点描述图

 

disconf 架构图

 

分析disconf,最好是在本地搭建一个disconf-web环境,方便调试代码,具体步骤可参考官方文档,使用disconf-client,只需要在pom引入依赖即可:

<dependency>
    <groupId>com.baidu.disconf</groupId>
    <artifactId>disconf-client</artifactId>
    <version>2.6.36</version>
</dependency>

对于开发人员来说,最多接触的就是disconf-web配置和disconf-client了,disconf-web配置官方文档已经很详细了,这里就来不及解释了,抓紧上车,去分析disconf-client的实现,disconf-client最重要的内容就是disconf-client初始化流程和配置动态更新机制。disconf的功能是基于Spring的(初始化是在Spring的BeanDefinitionRegistryPostProcessor#postProcessBeanDefinitionRegistry开始的,配置动态更新也是要更新到Spring IoC中对应的bean),所以使用disconf,项目必须基于Spring。

 

1 disconf-client 初始化流程

关于disconf-client的初始化,联想到Spring IoC流程,我们先不看代码,可以猜想一下其大致流程,disconf-client首先需要从disconf服务端获取配置,然后等到IoC流程中创建好对应的bean之后,将对应的配置值设置到bean中,这样基本上就完成了初始化流程,其实disconf的初始化实现就是这样的。

 

disconf-client的初始化开始于BeanDefinitionRegistryPostProcessor#postProcessBeanDefinitionRegistry(Spring IoC初始化时,对于BeanDefinitionRegistryPostProcessor的实现类,会调用其postProcessBeanDefinitionRegistry方法),disconf的DisconfMgrBean类就是BeanDefinitionRegistryPostProcessor的实现类,DisconfMgrBean类的bean配置在哪里呢?其实就是disconf.xml中的配置,该配置是必须的,示例如下:

<!-- 使用disconf必须添加以下配置 -->
<bean id="disconfMgrBean" class="com.baidu.disconf.client.DisconfMgrBean"
      destroy-method="destroy">
    <property name="scanPackage" value="com.luo.demo"/>
</bean>
<bean id="disconfMgrBean2" class="com.baidu.disconf.client.DisconfMgrBeanSecond"
      init-method="init" destroy-method="destroy">
</bean>

 
DisconfMgrBean#postProcessBeanDefinitionRegistry方法主要做的3件事就是扫描(firstScan)、注册DisconfAspectJ 和 bean属性注入。

public void postProcessBeanDefinitionRegistry(BeanDefinitionRegistry registry) throws BeansException {
    // scanPackList包括disconf.xml中DisconfMgrBean.scanPackage
    List<String> scanPackList = StringUtil.parseStringToStringList(scanPackage, SCAN_SPLIT_TOKEN);

    // 1. 进行扫描
    DisconfMgr.getInstance().setApplicationContext(applicationContext);
    DisconfMgr.getInstance().firstScan(scanPackList);

    // 2. register java bean
    registerAspect(registry);
}

 

1.1 firstScan

firstScan操作主要是加载系统配置和用户配置(disconf.properties),进行包扫描并入库,然后获取获取数据/注入/Watch。

protected synchronized void firstScan(List<String> scanPackageList) {
    // 导入配置
    ConfigMgr.init();
    
    // registry
    Registry registry = RegistryFactory.getSpringRegistry(applicationContext);

    // 扫描器
    scanMgr = ScanFactory.getScanMgr(registry);

    // 第一次扫描并入库
    scanMgr.firstScan(scanPackageList);

    // 获取数据/注入/Watch
    disconfCoreMgr = DisconfCoreFactory.getDisconfCoreMgr(registry);
    disconfCoreMgr.process();
}

进行包扫描是使用Reflections来完成的,获取路径下(比如xxx/target/classes)某个包下符合条件(比如com.luo.demo)的资源(reflections),然后从reflections获取某些符合条件的资源列表,如下:

/**
 * 扫描基本信息
 */
private ScanStaticModel scanBasicInfo(List<String> packNameList) {
    ScanStaticModel scanModel = new ScanStaticModel();

    // 扫描对象
    Reflections reflections = getReflection(packNameList);
    scanModel.setReflections(reflections);

    // 获取DisconfFile class
    Set<Class<?>> classdata = reflections.getTypesAnnotatedWith(DisconfFile.class);
    scanModel.setDisconfFileClassSet(classdata);

    // 获取DisconfFileItem method
    Set<Method> af1 = reflections.getMethodsAnnotatedWith(DisconfFileItem.class);
    scanModel.setDisconfFileItemMethodSet(af1);

    // 获取DisconfItem method
    af1 = reflections.getMethodsAnnotatedWith(DisconfItem.class);
    scanModel.setDisconfItemMethodSet(af1);

    // 获取DisconfActiveBackupService
    classdata = reflections.getTypesAnnotatedWith(DisconfActiveBackupService.class);
    scanModel.setDisconfActiveBackupServiceClassSet(classdata);

    // 获取DisconfUpdateService
    classdata = reflections.getTypesAnnotatedWith(DisconfUpdateService.class);
    scanModel.setDisconfUpdateService(classdata);
    
    return scanModel;
}

View Code

获取到资源信息(比如DisconfFile 和DisconfFileItem )之后,读取DisConfFile类及其对应的DisconfFileItem信息,将它们放到disconfFileItemMap中,最后将这些信息存储到仓库DisconfCenterStore。这部分逻辑在ScanMgrImpl.firstScan方法中,整体逻辑还是比较清晰的,这里就不贴代码了。

 

扫描入库之后,就该获取数据/注入/Watch(DisconfCoreFactory.getDisconfCoreMgr()中逻辑)了。

public static DisconfCoreMgr getDisconfCoreMgr(Registry registry) throws Exception {
    FetcherMgr fetcherMgr = FetcherFactory.getFetcherMgr();
    
    // 不开启disconf,则不要watch了
    WatchMgr watchMgr = null;
    if (DisClientConfig.getInstance().ENABLE_DISCONF) {
        // Watch 模块
        watchMgr = WatchFactory.getWatchMgr(fetcherMgr);
    }
    return new DisconfCoreMgrImpl(watchMgr, fetcherMgr, registry);
}
public static WatchMgr getWatchMgr(FetcherMgr fetcherMgr) throws Exception {

    synchronized(hostsSync) {
        // 从disconf-web端获取 Zoo Hosts信息,及zookeeper host和zk prefix信息(默认 /disconf)
        hosts = fetcherMgr.getValueFromServer(DisconfWebPathMgr.getZooHostsUrl(DisClientSysConfig
                                                                                   .getInstance()
                                                                                   .CONF_SERVER_ZOO_ACTION));
        zooPrefix = fetcherMgr.getValueFromServer(DisconfWebPathMgr.getZooPrefixUrl(DisClientSysConfig
                                                                                        .getInstance
                                                                                             ()
                                                                                        .CONF_SERVER_ZOO_ACTION));

        /**
         * 初始化watchMgr,这里会与zookeeper建立连接,如果/disconf节点不存在会新建
         */
        WatchMgr watchMgr = new WatchMgrImpl();
        watchMgr.init(hosts, zooPrefix, DisClientConfig.getInstance().DEBUG);

        return watchMgr;
    }

    return null;
}

从disconf-web端获取zk host和 zk prefix之后,会建立与zk的连接,然后就该从disconf-web端下载配置和watcher了,也就是disconfCoreMgr.process()逻辑。下载配置时disconf-client从disconf-web端获取配置的全量数据(http连接),并存放到本地,然后解析数据,生成dataMap,dataMap是全量数据。然后将数据注入到仓库中(DisconfCenterStore.confFileMap,类型为Map<String, DisconfCenterFile>)。注意:这里还没有将配置的值设置到bean中,设置bean值是在Spring的finishBeanFactoryInitialization流程做的,准确来说是在初始化bean DisconfMgrBeanSecond(bean配置在disconf.xml中),调用其init方法中做的。

 

在将值设置到仓库之后,就该监听对应配置了,这样才能使用zk的watch机制,在zk上监听的url格式为 /disconf/boot-demo_1_0_0_0_rd/file/specific.properties ,如果该url对应的node不存在则新建,注意该node是persistent类型的。然后在该node下新建临时节点,节点名字是discon-client的签名,格式为host_port_uuid,节点data为针对该配置文件,disconf-client需要的配置项的json格式数据,比如"{"port":9998,"host":"192.168.1.104"}"。

 

1.2 注册DisconfAspectJ

 往Spring中注册一个aspect类DisconfAspectJ,该类会对@DisconfFileItem注解修饰的方法做切面,功能就是当获取bean属性值时,如果开启了DisClientConfig.getInstance().ENABLE_DISCONF,则返回disconf仓库中对应的属性值,否则返回bean实际值。注意:目前版本的disconf在更新仓库中属性值后会将bean的属性值也一同更改,所以,目前DisconfAspectJ类作用已不大,不必理会,关于该类的讨论可参考issue DisconfAspectJ 拦截的作用?

1.3 bean属性注入

bean属性注入是从DisconfMgr.secondScan开始的:

protected synchronized void secondScan() {
    // 扫描回调函数,也就是注解@DisconfUpdateService修饰的配置更新回调类,该类需实现IDisconfUpdate
    if (scanMgr != null) {
        scanMgr.secondScan();
    }

    // 注入数据至配置实体中
    if (disconfCoreMgr != null) {
        disconfCoreMgr.inject2DisconfInstance();
    }
}

 

bean属性注入通过获取仓库中对应的属性值,然后调用setMethod.invoke或者field.set方法来设置,bean对应的boject是通过Spring来获取的,也就是说,在获取后bean已经初始化完成,只不过对应的属性值还不是配置文件中配置的而已。如果程序中有2个类的@DisconfFile都是同一个配置文件,那么这个时候获取的bean是哪个类的bean呢?关于这个可以点击issue DisconfFile用法咨询,disconf目前只支持一个配置文件一个类的方式,不给两个class同时使用同一个 "resources.properties",否则第二个是不生效的。

 

2 配置动态更新机制

disconf的配置动态更新借助于zk的watch机制(watch机制是zk 3大重要内容之一,其余两个是zk协议和node存储模型)实现的,初始化流程会中会对配置文件注册watch,这样当配置文件更新时,会通知到discnof-client,然后disconf-client再从disconf-web中获取最新的配置并更新到本地,这样就完成了配置动态更新。

 

配置动态更新动作开始于DisconfFileCoreProcessorImpl.updateOneConfAndCallback()方法:

/**
 * 更新消息: 某个配置文件 + 回调
 */
@Override
public void updateOneConfAndCallback(String key) throws Exception {

    // 更新 配置
    updateOneConf(key);

    // 回调
    DisconfCoreProcessUtils.callOneConf(disconfStoreProcessor, key);
    callUpdatePipeline(key);
}

更新配置时,首先更新仓库中值,然后更新bean属性值,配置更新回调是用户自定义的回调方法,也就是@DisconfUpdateService修饰的类。配置更新时流程是:

开发人员在前端更新配置 -> disconf-web保存数据并更新zookeeper -> zookeeper通知disconf-client -> discnof-client 从 disconf-web下载对应配置 -> 更新仓库和bean属性 -> 调用回调 -> 更新配置完成。

 

小结

disconf 作为一个分布式的配置管理平台,文档详细,易于上手,动态配置更新,满足大多数场景的配置更新需求。美中不足的是,代码有的地方有点臃余,获取配置时还是全量获取方式,目前还不支持多个类共用同一个 "resources.properties",多余的DisconfAspectJ操作等。

 

使用disconf,最好的使用方式是基于它,将其改造成适合本公司或者项目组的工具,比如更方便的注解方式和回调方式等。

SCADA|用KingSCADA实现设备台账的查询功能 以上为用KingSCADA实现设备台账的查询功能,另外还有一些细节功能,比如当点击增加按钮时弹出的信息窗口内的信息希望是在选中的某行信息,只要找到差不多的设备,修改个别参数即可,避免增加时弹出空白页,所有信息都需要填写。以上为实现设备台账查询的最简单实现,实际项目中可能会更复杂,你做过哪些设备台账或相关的功能,有比较好的创意或高难度功能方法,欢迎在留言区评论,或在交流群探讨,互通有无,共同进步。首先完成界面的组态工作,主要是通过查询按钮,查询SQLServer数据库的设备台账数据,然后填充到报表内。 阅读详情

相关推荐

RTT(RT-Thread)串口设备(RTT保姆级教程)

本章主要介绍串口设备在RT-Thread操作系统中应用层如何使用。关于串口设备的使用,我们只需要在应用层找到串口设备,然后去初始化,初始化完成以后就可以读写串口设备了。操作的方法在应用层,驱动是不需要我们去完成的,驱动已经在操作系统中提供了。

qq_25218501的博客 1万+

Disconf介绍,源码下载,环境准备,安装,disconf-web使用和配置介绍,项目中进行配置,项目案例运行

1、disconf介绍Distributed Configuration Management Platform(分布式配置管理平台)专注于各种 分布式系统配置管理 的通用组件 / 通用平台,提供统一的配置管理服务。 主要目标: 部署极其简单:同一个上线包,无须改动配置,即可在 多个环境中(RD/QA/PRODUCTION) 上线。 部署动态化:更改配置,无需重新打包或重启,即可 实时生效

涂作权的博客 1945

攻克Windows平台3DGS复现:从环境配置到可视化实战全记录

本文详细记录了在Windows平台成功复现3D Gaussian Splatting(3DGS)的完整流程,涵盖从环境配置、依赖安装、数据准备到模型训练与可视化的全步骤。重点解决了Windows下CUDA版本匹配、Visual Studio编译及SIBR_viewers可视化工具部署等核心难题,为开发者提供了一份详实的避坑指南与实战手册。

weixin_28839699的博客 251

Disconf原理和实践

一.概述 1.什么是配置 应用程序在启动和运行的时候往往需要读取一些配置信息,配置基本上伴随着应用程序的整个生命周期,比如:数据库连接参数、启动参数等。 配置主要有以下几个特点: 配置是独立于程序的只读变量 配置首先是独立于程序的,同一份程序在不同的配置下会有不同的行为 其次,配置对于程序是只读的,程序通过读取配置来改变自己的行为,但是程序不应该去改变配置 配置伴随应用的整个生命周期 配置贯穿于应用的整个生命周期,应用在启动时通过读取配置来初

yfy的博客 6598

如何加载交易策略EA到MT4/MT5

1、打开MT4/MT5软件 2、首先,必须有一个EA,而且必须是mq4/ex4为扩展名。点击左上角“文件”—“打开数据文件夹”,找到安装路径 3、将EA的ex4或mq4文件放到MT4目录\MQL4\Experts里面(本文以名为Demo的EA为例) 4、如果有DLL库文件,复制到experts目录下的libraries子目录中 5、如果有tpl模板文件,复制到templates目录中 6、添加完成后重启MT4,点击允许EA运行图标 7、在导航中找到刚才安装的EA,拖拽到...

weixin_41364817的博客 7359

【DRAM存储器七】SDRAM介绍-芯片引脚与功能框图详解

详解初代SDRAM芯片引脚定义与芯片功能框图中的各个模块

highman110的博客 2205

disconf源码分析

Disconf源码分析从前端请求开始源码分析Disconf-client 更新客户端注册znode监听进入*DisconfCoreFactory*的getDisconfCoreMgr方法跟进znode事件更新数据 从前端请求开始 访问disconf server 页面,修改一个文件属性,选择提交,按F12打开开发工具窗口。 找到后端对应方法 源码分析 @ResponseBody @RequestMapping(value = “/filetext/{configId}”, method = Reque

weixin_43274506的博客 410

11.Labview实现用户界面切换的几种方式---通过VI间相互调用

本文介绍了界面切换的几种方式,分别是重入和引用①重入方式可以通过调用子VI的方式打开被调用的界面,往往应用于弹窗等的设置程序。②引用方式分两种,一种是打开引用,一种是静态引用。区别在于打开引用需要设置被打开VI的目标地址,静态引用仅需在引用时绑定VI的位置即可。③推荐使用静态引用的方式切换界面。④使用引用打开界面时,需通过属性节点和调用节点来设置程序的状态。更多内容欢迎大家补充和留言讨论~本文介绍了GUI界面设计相关的程序,更多相关文章后续持续更新,请关注作者不迷路~本期就到这里,再见~

关注我,更多技术问题欢迎私聊~ 9542

2 springboot项目集成使用disconf,基于docker环境

上一篇我们完成了disconf服务端的环境搭建,这一篇我们来看看客户端springboot如何继承disconf,最终在docker下运行。假定你已经在本机搭建好了disconf的web端环境,并已经能使用localhost访问到disconf的web界面。下面看客户端如何使用disconf。新建一个springboot项目,勾选web和aop。至于为什么要勾aop,后面用到disconf的回调时

tianyaleixiaowu的专栏 1万+

【小白深度教程 1.32】手把手教你从多视角图像进行 3D 重建(SfM 算法)

重建的目标是从一组照片中推导场景的几何结构,假设摄像机位置和内部参数是已知的或可以从图像集中猜测。 这是通过使用多个照片,在其中应用运动结构法(Structure from Motion,SfM)来解决像素级对应问题,部分地恢复3D信息来实现的。

2401_87064292的博客 2158

K8S搭建(centos)完整版

每个人都有惰性,但不断学习是好好生活的根本,共勉!

感谢阅读 4144

好文章集合

有价值的信息集锦

技术交流 516

【2024遥感应用组一等奖】基于风云四号卫星的小时级大气气溶胶和颗粒物监测

最后,比较AGRI观测反射率和查找表计算的反射率反演得到的1小时分辨率AOD数据。然后,使用广泛应用的MODIS DT和DB产品进行对比,图 5显示了它们逐像元尺度的对比,AGRI LaGA算法可以捕捉亚洲地区AOD高低值空间分布格局,比如南亚次大陆、中南半岛、塔克拉玛干沙漠和华北平原是AOD高值区域(平均AOD高于0.3),中国西北、中国南方、中国东北和韩国地区为AOD中值地区(平均AOD在0.2到0.3之间),北纬45度以上以及日本地区为AOD低值区域(平均AOD小于0.2),与全球平均AOD值接近。

JData_Engineer的博客 372

Disconf介绍

Disconf 可以为各种业务平台提供统一的配置管理服务。 支持配置(配置项+配置文件)的分布式化管理 配置发布统一化 极简的使用方式(注解式编程 或 XML代码无代码侵入模式) 低侵入性或无侵入性、强兼容性 需要Spring编程环境 重要功能特点 支持配置(配置项+配置文件)的分布式化管理 配置发布统一化

fayeyiwang的专栏 3664

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Disconf实践指南:安装篇

Disconf是百度开源出来的一款基于Zookeeper的分布式配置管理软件。目前很多公司都在使用,包括滴滴、百度、网易、顺丰等公司。通过简单的界面操作就可以动态修改配置属性,还是很方便的。使用Disconf后发现的一大好处是省却应用很多配置,而且配置可以自动load,实时生效。Disconf优点总结如下: 部署简单:同一个上线包,无须改动配置,即可在多个环境中上线 部署动态化:更改配

rhwayfun专栏 9729

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Disconf的disconf-web的管理端安装

最近刚接触大数据,在搞一个分布式配置平台——Disconf。由于是菜鸟级别的,也是在一边摸索一边自己搞,困难也是很大-主要以前没接触过什么Linux,服务器之类,看了好多的文章觉得不适合初学者去使用,而且其中也会出现种种问题无法解决。。。所以今天打算写个详细的过程,把自己所遇到的问题也罗列出来,供大家参考。 1. Linux上安装java,Maven,并且配置相关的环境。并且安装mysql,

老板的博客 5505

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Disconf源码解析(第一章)

一、Disconf两个核心bean配置 <bean id="disconfMgrBean" class="com.baidu.disconf.client.DisconfMgrBean" destroy-method="destroy"> <property name="scanPackage" value="com.example.disconf.dem...

lingbomanbu_lyl的博客 1022

disconf原理解析

之前有了解过disconf,也知道它是基于zookeeper来做的,特意写了文章记录下自己的见解。如有错误,欢迎指正。 1、disconf-web会在启动时,将自身的host和配置文件注册到zookeeper上。配置文件会在zk上生成node。 2、client 端启动时,会有一个BeanDefinitionRegistryPostProcessor的实现类DisconfMgrBean,该...

张斌的博客 2167

Windows安装disconf

参考文章链接 https://www.cnblogs.com/shuaiandjun/p/8412628.html 配置环境清单 Nginx-1.16.1 Apache-tomcat-7.0.96 Zookeeper-3.4.10 Redis-windows Mysql5.5 disconf-master源码 安装环境 - 下载安装disconf-master源码 Github下载地址 htt...

baidu_34324281的博客 630

Disconf原理解析

1. 介绍 Disconf是一套完整的基于zookeeper的分布式配置统一解决方案。它支持配置(配置项+配置文件)的分布式化管理。 2. 安装 依赖Mysql, Tomcat, Nginx, Zookeeeper, Redis。 路径配置: 将你的配置文件放到此地址目录下(以下地址可自行设定): [code="java"] /home/work/dsp/disc...

Passion, Interested 1796

Disconf实践指南:使用篇

在上一篇文章Disconf实践指南:安装篇介绍了如何在本地搭建Disconf环境,下面我们介绍如何在项目中使用Disconf。由于某些功能特性对源码做了修改,所以在官方文档并没有提及。 环境基于macOS Sirerra。Windows建议安装Linux虚拟机 首先打开disconf控制台:http://localhost:8091,第一步:创建应用,awesome-project(自定);第二

rhwayfun专栏 2万+

【disconf】环境搭建

费了九牛二虎之力,disconf环境终于搭建成功了,当成功登录界面之后,很高兴。搭建的一路遇到很多问题,磕磕绊绊,终于成功了!在此记录一下,总结一些自己的思路,想想自己哪里没有理解好,所以碰到了那么多的问题。  1.搭建disconf需要安装的配置。      安装Linux:CentOS7      安装Zookeeper:zookeeper-3.4.6      安装Redis:red

遇见未知的自己 2450

disconf

一、基础概念 disconf是一个分布式配置管理平台(Distributed Configuration Management Platform),专注于各种 分布式系统配置管理 的通用组件/通用平台, 提供统一的配置管理服务,是一套完整的基于zookeeper的分布式配置统一解决方案。 目前disconf包含了 客户端disconf-Client和 管理端disconf-Web两个模块,均由java实现。 1.1 功能特点 支持配置(配置项/配置文件)分布式管理 配置发布统一化 配置发布、更新

sinat_34814635的博客 1001

Disconf-2 项目使用disconf管理配置

一、基本使用 在项目中使用disconf来管理配置文件,需要下面的一些步骤: 在把配置信息存放在disconf服务器上 这一步我们可以在上一片安装的disconf管理界面进行操作,通过“新建”按钮创建自己的app,然后新建配置文件输入配置文本(也可以上传配置文件),我这里创建了一个disconf-helloworld应用,然后在rd环境下面创建了一个redis.properties文件,版本为1...

mail_liuxing的专栏 347

Disconf使用简单Demo

  上一篇博客完成了Disconf的搭建过程,搭建完成后就需要测试一下是否能真的投入使用,这篇博客就介绍一个小Demo,测试一下Disconf是否能连接上。   创建配置文件     在敲Demo之前,需要在Disconf上创建自己的APP,然后在APP的某个环境下创建配置文件,如下面截图中的流程,这里就简单创建了一个redis.properties,内容是redis的IP和端口号,Key...

Coder Yasmine 9882

disconf分布式配置中心

一、介绍 二、原理 三、使用 四、文章

weixin_40215624的博客 1373
上一篇: 分布式 - 分布式锁的场景与实现
下一篇: redis --eventLoop 网络IO模型
coding_crazy
博客等级 码龄10年 1粉丝 6原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值