使用当当网的Config Toolkit集中管理分布式集群的配置数据_aitangyong的博客-CSDN博客


本站和网页 https://blog.csdn.net/aitangyong/article/details/52933063 的作者无关,不对其内容负责。快照谨为网络故障时之索引,不代表被搜索网站的即时页面。

使用当当网的Config Toolkit集中管理分布式集群的配置数据_aitangyong的博客-CSDN博客
使用当当网的Config Toolkit集中管理分布式集群的配置数据
aitangyong
于 2016-10-26 13:09:04 发布
4507
收藏
分类专栏:
分布式系统
文章标签:
config toolkit
管理分布式配置数据
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/aitangyong/article/details/52933063
版权
分布式系统
专栏收录该内容
18 篇文章
1 订阅
订阅专栏
在大型集群和分布式应用中,配置数据不宜分散到集群结点中,应该集中起来统一管理。本文主要介绍如何使用这个开源工具。
1、首先从github下载该项目源码:
git clone https://github.com/dangdangdotcom/config-toolkit.git
2、将config-zk-web这个maven工程打包,可以得到一个war,这就是配置管理界面后台。
3、将war部署到tomcat下,就可以通过http://127.0.0.1:8080/config-web/访问
4、启动zookeeper server,端口号使用默认的2181
6、创建项目需要的根节点,并对内容进行加密。比如我们的根节点是/atyroot,数据内容是123456。为了能在配置管理界面连接这个节点,需要对内容进行SHA1加密。
import com.google.common.hash.Hashing;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class SHA1 {
public static void main(String[] args) throws NoSuchAlgorithmException {
// 7c4a8d09ca3762af61e59520943dc26494f8941b
String password = SHA1("123456");
System.out.println(password);
// 7c4a8d09ca3762af61e59520943dc26494f8941b
String dest = Hashing.sha1().hashBytes("123456".getBytes()).toString();
System.out.println(dest);
public static String SHA1(String decript) throws NoSuchAlgorithmException {
MessageDigest digest = java.security.MessageDigest
.getInstance("SHA-1");
digest.update(decript.getBytes());
byte messageDigest[] = digest.digest();
StringBuffer hexString = new StringBuffer();
for (int i = 0; i < messageDigest.length; i++) {
String shaHex = Integer.toHexString(messageDigest[i] & 0xFF);
if (shaHex.length() < 2) {
hexString.append(0);
hexString.append(shaHex);
return hexString.toString();
7、使用zk客户端连接zookeeper,创建根节点
8、在控制管理界面,登陆/atyroot,密码是123456
9、创建版本和配置数据
10、通过java代码获取配置数据
<dependency>
<groupId>com.dangdang</groupId>
<artifactId>config-toolkit</artifactId>
<version>3.1.6-RELEASE</version>
</dependency>
import com.dangdang.config.service.GeneralConfigGroup;
import com.dangdang.config.service.zookeeper.ZookeeperConfigGroup;
import com.dangdang.config.service.zookeeper.ZookeeperConfigProfile;
public class DandangMain {
public static void main(String[] args) {
ZookeeperConfigProfile configProfile = new ZookeeperConfigProfile("127.0.0.1:2181", "/atyroot", "0.0");
GeneralConfigGroup group = new ZookeeperConfigGroup(configProfile, "jdbc");
System.out.println(group.get("url"));
11、与spring集成获取配置数据
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:c="http://www.springframework.org/schema/c"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="configProfile" class="com.dangdang.config.service.zookeeper.ZookeeperConfigProfile">
<constructor-arg name="connectStr" value="127.0.0.1:2181"/>
<constructor-arg name="rootNode" value="/atyroot"/>
<constructor-arg name="version" value="0.0"/>
</bean>
<!--代码中使用这个bean,可以实现配置数据热替换-->
<bean id="jdbcConfigGroup" class="com.dangdang.config.service.zookeeper.ZookeeperConfigGroup"
c:configProfile-ref="configProfile" c:node="jdbc"/>
<bean id="configGroupSources" class="com.dangdang.config.service.support.spring.ConfigGroupSourceFactory"
factory-method="create">
<constructor-arg name="configGroups">
<list>
<ref bean="jdbcConfigGroup"></ref>
</list>
</constructor-arg>
</bean>
<bean class="org.springframework.context.support.PropertySourcesPlaceholderConfigurer">
<property name="order" value="1"/>
<property name="ignoreUnresolvablePlaceholders" value="true"/>
<property name="propertySources" ref="configGroupSources"/>
</bean>
<!--spring容器只加载一次,所以不能热替换-->
<bean id="holder" class="net.aty.dangdang.ConfigInfoHolder">
<property name="detail" value="${url}"></property>
</bean>
</beans>
import com.dangdang.config.service.zookeeper.ZookeeperConfigGroup;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;
import java.io.IOException;
public class SpringDangDangMain {
public static void main(String[] args) {
ApplicationContext context = new FileSystemXmlApplicationContext(
"src/main/java/net/aty/dangdang/spring-dangdang.xml");// 加载 spring 配置文件
ConfigInfoHolder holder = (ConfigInfoHolder) context.getBean("holder");
ZookeeperConfigGroup group = (ZookeeperConfigGroup) context.getBean("jdbcConfigGroup");
System.out.println(holder.getDetail());
System.out.println(group.get("url"));
// 修改url配置数据后,在控制台回车,观察热替换效果
try {
System.in.read();
} catch (IOException e) {
System.out.println(holder.getDetail());
System.out.println(group.get("url"));
12、再谈管理界面的登录和注册
上面我们是通过自己对zookeeper创建节点并加密,然后可以用这个信息登录easyZK配置界面。那只不过是为了展示easyZK的实现原理,实际项目中使用是很容易的。输入节点名(/aty)和密码(123456)之后,直接sign in 和sign up就可以了,前者是登录,后者是注册。
aitangyong
关注
关注
点赞
收藏
打赏
评论
使用当当网的Config Toolkit集中管理分布式集群的配置数据
在大型集群和分布式应用中,配置数据不宜分散到集群结点中,应该集中起来统一管理。本文主要介绍如何使用config toolkit这个开源工具。
复制链接
扫一扫
专栏目录
当当config-toolkit配置中心源码
03-30
当当网config-toolkit配置中心,我当时使用版本的源码,在此保留一份。
博客地址:https://blog.csdn.net/qq_34021712/article/details/78679850
Zookeeper安装配置教程(Docker)
weixin_40288995的博客
11-19
637
有关使用Docker的便捷之处,此处就不详细介绍了。
Docker的安装教程:
Windows版:https://www.runoob.com/docker/windows-docker-install.html
Mac版:https://www.runoob.com/docker/macos-docker-install.html
安装好Docker后,可以打开dockerhub:https://hub.docker.com/,里面可以搜索很多官方或者个人上传的镜像资源,这里我们搜索所需的zookee
评论 2
您还未登录,请先
登录
后发表或查看评论
zookeeper启动报错Opening socket connection to server localhost/127.0.0.1:2181. Will not attempt..唯一好用
最新发布
u012154840的博客
01-16
1万+
按照网上教程安装完zookeeper后,启动报错。尝试了很多方法不好使,最后半猜半调,终于解决了问题:
本文报错的场景为JAVA Project 使用到了zk,所以需要单独安装,但是装完后,启动JAVA Project 一直疯狂打印连接不上zk,开始没有想到是zk的问题,于是多方查资料,定位到是zk没有启动成功导致。
那么该如何解决这个问题呢,如下
1.要做的是看你的host和port是否写错了,如 [ 127.0.0.1:8080 ]
2.要看你的server是否真正的运行起来了,比如serve
使用当当网的Config Toolkit集中管理配置数据
wxd_1024的博客
11-07
708
1、首先下载该项目源码
https://download.csdn.net/download/qq_34021712/10317654?utm_source=bbsseo
2、将config-zk-web这个maven工程打包,可以得到一个war,这就是配置管理界面后台。
cd config-toolkit/config-zk-web/
mvn clean package
3、启...
SpringBoot整合Dubbo+zookeeper(小白必看)
SHUIHAN_007的博客
10-30
393
这里写自定义目录标题
一、背景
以前用spring单独整合过Dubbo+zookeeper,因为用springboot已经好长时间,而且配置也方便,想着重新用springboot整合下Dubbo+zookeeper;各种心酸,因为一个注解的问题导致消费者无法注册到Dubbo中,心累!后面会提到的。
二、前期准备
1.zookeeper安装
下载地址:
链接:https://pan.baidu.com/s/10eqWES0LBR3YLKhrnJXUuw
提取码:dpvn
a)下载完了后,解压出来,到\apac
[Hadoop学习][Zookeeper学习]关于127.0.0.1/<unresolved>:2181的解决方法
weixin_43978037的博客
03-11
1444
hadoop+hbase+zookeeper 伪分部配置
zookeeper只用自行安装的版本
如题,与大多数报错不同的是,127.0.0.1后面多了一个,一直找不出问题。
zookeeper日志也无报错
直到找到这位大佬https://blog.csdn.net/richie696/article/details/112910751
是因为Hadoop自带的zookeeper与自行安装的版本不一致导致的。资源库里显示Hadoop自带版本仅为3.4 而我安装的版本则为3.6 因此只需移除hadoop的低版本
zookeeper启动报错Opening socket connection to server localhost/127.0.0.1:2181. Will not attempt to.....
热门推荐
弗兰-随风小欢的博客
06-25
10万+
今天在学习zookeeper的时候,在linux上搭建单机版伪分布式集群zookeeper,启动一个zookeeper的时候是成功的,但是连上客户端的时候报了如下图的错误:
Opening socket connection to server localhost/127.0.0.1:2181. Will not attempt to authenticate using SASL (un...
本地配置_zookeeper本地集群节点配置
weixin_39882870的博客
01-12
168
欢迎大家关注我,我会不定期分享一些自己觉得比较好的文章给大家。1.下载zookeeperIndex of /apache/zookeeper2.直接解压3.配置本地集群文件分别在zookeeper的data目录下新建三个文件夹z1、z2、z3代表zookeeper三个节点:每个z1、z2、z3文件夹下新建对应的zX.cfg配置文件,内容如下:tickTime = 2000dataDir = /Us...
dubbo集成zipkin问题二【Caused by: java.lang.IllegalStateException: zookeeper not connected】
madman
05-11
1万+
dubbo集成zipkin官网博客地址
在 Dubbo 中使用 Zipkin
遇到的问题
运行官网的demo报错zookeeper not connected,链接不上zookeeper,开始以为是zookeeper的版本和项目依赖的版本不一致,改了几个版本之后还是不行,然后在本机启动了一个zookeeper,使用127.0.0.1:2181来链接,发现可以链接成功(demo和zookeeper运行在一起的时候链接挺快的,没啥问题),检查了zookeeper的地址确实没错。
Caused by: org.s
zookeeper在windows系统中的集群配置
未的博客
02-21
492
什么是zookeeper?
1、Zookeeper 是 Google 的 Chubby一个开源的实现 ,是 Hadoop 的分布式协调服务
2、为分布式应用程序提供同步服务,配置维护和命名服务等
zookeeper能帮我们做什么?
1、Hadoop,使用Zookeeper的事件处理确保整个集群只 有一个NameNode,存储配置信息等.
2、HBase,使用Zookeeper的事件处理确保整个集群...
本地zookeeper当当网config toolkit 管理配置
yll198825的博客
04-04
900
在大型集群和分布式应用中,配置数据不宜分散到集群结点中,应该集中起来统一管理。本文主要介绍如何使用这个开源工具。1、首先从github下载该项目源码:[plain] view plain copygit clone https://github.com/dangdangdotcom/config-toolkit.git 2、将config-zk-web这个maven工程打包,可以得到一个war,...
zk配置中心---Config Toolkit配置与使用
yz2015的博客
06-11
3315
Config Toolkit 简介:用于分布式系统中的资源配置中心,替代传统properties文件,优点:立即修改配置立即生效,不需要新重新打包部署项目。
下载地址:https://github.com/dangdangdotcom/config-toolkit
配置zk,生产环境一般配置5台,创建配置节点时会同步,这里使用默认配置,启动zkServer。
启动项目(将config-f...
(十三)SpringBoot整合当当网config toolkit管理配置信息
这个名字想了很久
11-30
2909
使用configtoolkit的原因在大型分布式集群应用中,配置不应该分散在每个集群节点。应该统一配置中心,有两个好处:(1)配置全局管理,一处修改,则重启程序时不用每次都修改配置文件。(2)配置文件配置热更新,程序中应用到的配置,可以集中修改,然后每个节点立刻生效。官网地址https://github.com/dangdangdotcom/config-toolkithttps://github...
zookeep报错:Socket error occurred: localhost/127.0.0.1:2181: 拒绝连接
mk33092250的博客
06-18
3万+
使用
./zkCli.sh
查看zookeeper时服务报错,如下:
拒绝链接。首先怀疑是2181端口被占用了,
于是查看:
sudo netstat -anp | grep 2181
发现端口并未被占用,尝试重启zkServer
sh zkServer.sh start
报错已经有进程在运行了。
进一步定位:
检查conf/zoo.cfg中的配置文件,发现多了一个pid,该文件为上次暴力关闭电脑,未关闭zk导致的。
结论:服务未正常退出,删除该zookeepe.
dubbo-admin管理平台搭建
小宝鸽
12-24
8万+
一、前言dubbo的使用,其实只需要有注册中心,消费者,提供者这三个就可以使用了,但是并不能看到有哪些消费者和提供者,为了更好的调试,发现问题,解决问题,因此引入dubbo-admin。通过dubbo-admin可以对消费者和提供者进行管理。二、下载与配置打包dubbo-admin的下载,可自行到官网下载:https://github.com/alibaba/dubbo
当然,这里小宝鸽也上传到了
成功解决(Socket error occurred: localhost/127.0.0.1:2181: Connection refused)连接zkServer被拒绝的问题
weixin_44410358的博客
11-05
4万+
成功解决zookeeper启动后立即退出的问题、客户端连接zookeeper拒绝的问题(Socket error occurred: localhost/127.0.0.1:2181: Connection refused)
遇到的问题:
我在本地的虚拟机起了三个zookeeper(伪集群),启动的时候zkServer还没启动一会就停止服务了,用kafka连接、zkClient连接都被拒绝。
2020-11-05 20:21:37,259 [myid:localhost:2181] - INFO [ma
dubbo和zookeeper的使用
停住了过去,却停不住时间
08-22
4781
网上下载zookeeper
下载链接http://download.csdn.net/detail/u013286716/7167881
下载完成后解压到D盘或其他地方
打开
把文件名改成图上所示,
进入bin文件夹
运行zkServer.cmd
启动成功后,修改dubbo配置文件
xml version="1.0" encoding="UTF-8"?>
“相关推荐”对你有帮助么?
非常没帮助
没帮助
一般
有帮助
非常有帮助
提交
©️2022 CSDN
皮肤主题:大白
设计师:CSDN官方博客
返回首页
aitangyong
CSDN认证博客专家
CSDN认证企业博客
码龄13年
暂无认证
336
原创
7万+
周排名
140万+
总排名
271万+
访问
等级
2万+
积分
544
粉丝
735
获赞
376
评论
1114
收藏
私信
关注
热门文章
JDK8新特性:函数式接口@FunctionalInterface的使用说明
115125
JDK8新特性:使用Optional避免null导致的NullPointerException
106248
(十四)ng-if与ng-show、ng-hide指令的区别和注意事项
74917
pom配置之:<distributionManagement>snapshot快照库和release发布库
70096
CSS让2个DIV在同一行显示的解决方法
69787
分类专栏
java
34篇
java并发编程
27篇
Socket&IO
3篇
java高级话题
18篇
java性能
3篇
算法/数据结构
2篇
架构/设计/模式
10篇
代码质量/重构
5篇
http和web
5篇
jsp/servlet
3篇
struts2
1篇
hibernate
16篇
spring
17篇
单元测试&日志
6篇
数据库
6篇
ehcache
1篇
JMS
3篇
restful
3篇
AOP
1篇
linux
2篇
项目构建
10篇
HTML/CSS/JS
47篇
AngularJS
21篇
requireJS&AMD
8篇
seajs&CMD
7篇
underscore
3篇
jquery
27篇
amplifyjs
1篇
prototypejs
2篇
杂谈
1篇
hybrid app
3篇
nodejs
2篇
ECMAScript5
1篇
HTML5
10篇
推送
6篇
ionic
8篇
aspectj
1篇
git
5篇
web安全
4篇
redis
7篇
分布式系统
18篇
最新评论
java静态代码检查工具:JavaNCSS的使用
山不让尘,川不辞盈。:
这个下载路径不行啊
java主线程结束和子线程结束之间的关系
落难映秋:
你可以自己调用isDaemon()看看。
CSS让2个DIV在同一行显示的解决方法
不想加班呀:
[code=html]
<div style="background-color:green;width:180px;height:70px;display: inline-table">首页</div>
<div style="background-color:green;width:180px;height:70px;display: inline-table">文章</div>
<div style="background-color:green;width:180px;height:70px;display: inline-table">相册</div>
[/code]
在写作业,发现这个方法也可以
CSS让2个DIV在同一行显示的解决方法
希君生羽翼766:
谢谢
通过JAXB看XML外部实体注入(XML External Entity)
weixin_42541836:
我复制下了你的代码 没办法重现:可以明显地看到XXE攻击,读取了c:/demo.txt的内容。不知道什么原因报了一个错,也就是自动禁止了
[org.xml.sax.SAXParseException; lineNumber: 5; columnNumber: 28; 外部实体: 无法读取外部文档 'demo.txt', 因为 accessExternalDTD 属性设置的限制导致不允许 'file' 访问。]
您愿意向朋友推荐“博客详情页”吗?
强烈不推荐
不推荐
一般般
推荐
强烈推荐
提交
最新文章
【招聘】欢迎热衷于微服务框架、中间件、云原生方向的同志!
maven资源过滤导致打包后文件变大
java泛型的一些常见用法
2021年1篇
2017年16篇
2016年79篇
2015年115篇
2014年126篇
2013年3篇
目录
目录
分类专栏
java
34篇
java并发编程
27篇
Socket&IO
3篇
java高级话题
18篇
java性能
3篇
算法/数据结构
2篇
架构/设计/模式
10篇
代码质量/重构
5篇
http和web
5篇
jsp/servlet
3篇
struts2
1篇
hibernate
16篇
spring
17篇
单元测试&日志
6篇
数据库
6篇
ehcache
1篇
JMS
3篇
restful
3篇
AOP
1篇
linux
2篇
项目构建
10篇
HTML/CSS/JS
47篇
AngularJS
21篇
requireJS&AMD
8篇
seajs&CMD
7篇
underscore
3篇
jquery
27篇
amplifyjs
1篇
prototypejs
2篇
杂谈
1篇
hybrid app
3篇
nodejs
2篇
ECMAScript5
1篇
HTML5
10篇
推送
6篇
ionic
8篇
aspectj
1篇
git
5篇
web安全
4篇
redis
7篇
分布式系统
18篇
目录
评论 2
被折叠的 条评论
为什么被折叠?
到【灌水乐园】发言
查看更多评论
打赏作者
aitangyong
你的鼓励将是我创作的最大动力
¥2
¥4
¥6
¥10
¥20
输入1-500的整数
余额支付
(余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付
您的余额不足,请更换扫码支付或充值
打赏作者
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额
抵扣说明:
1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。 2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。
余额充值