当前位置: 首页 > news >正文

大白话讲Zookeeper能做什么?(一):命名服务与配置管理

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

一、命名服务

在日常开发中,我们会遇到这样的场景:服务A(开发者:小李)需要访问服务B(开发者:小王),但是服务B还在开发过程中(未完成),那么服务A(此时已完成)就不知道如何获取服务B的访问路径了(假设我们使用http服务),小李还有其他工作要做,该怎么办呢?使用zookeeper的服务就可以简单解决:小李和小王约定好:服务B部署成功后,先到zookeeper注册服务(即在zookeeper添加节点/service/B和节点数据)。服务A开发结束后,部署到服务器,然后服务A监控zookeeper服务节点/service/B,如果发现节点数据了,那么服务A就可以访问服务B了。

在服务A中添加代码,用于观察节点/service/B是否存在以及节点数据的变化。

		CuratorFramework client = CuratorFrameworkFactory
				.builder()
				.connectString("192.168.1.123:2181")
				.sessionTimeoutMs(5000)
				.connectionTimeoutMs(5000)
				.retryPolicy(retryPolicy)
				.build();
		
		client.start();

        Stat stat = new Stat();
        byte[] data = client.getData().storingStatIn(stat).forPath("/jike");
		if (data != null) {
            System.out.println("B'Node data:"+new String(data));
            //TODO 执行服务A调用服务B的代码
        }

二、配置管理

目前很多公司开发或者使用的程序都是分布式的,而程序总会或多或少的存在一些额外配置,且分散部署在多台机器上。某一条要修改配置,要逐个去修改配置就变得有些困难,特别是应用部署的点数特别大的时候,就成了不可能完成的事情了。一种方式就是把相关配置写到数据库中,每个应用去读取数据库的配置,这种方式优点就是把配置集中管理,缺点也很明显,就是不能及时获得配置的变革,要及时获得变更后的配置,就要不停的去扫描数据库,而这又会造成数据库的压力巨大。

我要说的这种方式就是利用zookeeper的这种发布订阅、watch来实现。即,把相关的配置数据写到zookeeper的某个指定的节点下。应用服务监听这个节点的数据变化,一旦节点数据(配置信息)发生了变化,应用服务就会收到zookeeper的通知,然后应用服务就可以从zookeeper获得新的配置信息。

(该配图从网络下载)

 

(完)

转载于:https://my.oschina.net/OHC1U9jZt/blog/1524613

相关文章:

  • 大数据拼精准 可否触动电商个性营销神经
  • 二进制安装MySQL5.5.57
  • Ubuntu 安装和使用 Supervisor(进程管理)
  • 本地虚拟化开发环境 vagrant+virtualbox
  • centos下为php添加gd/curl/zip扩展
  • Simple2D-20(重构)
  • 中国好同事!帮程序猿跟姑娘表白,他们组了一支乐队
  • 洛谷—— P2812 校园网络
  • 客观看待社保系统管理漏洞
  • ssh 免密码登录
  • 积极推动中国金融资产市场化流动
  • 互联网时代 数据中心如何满足未来需求
  • 吴晓军:加强保险业大数据能力的建设
  • 向亲戚朋友解释系列之什么是IP,端口和域名
  • IDF2013:大数据带来医疗行业转折点
  • python3.6+scrapy+mysql 爬虫实战
  • [LeetCode] Wiggle Sort
  • [Vue CLI 3] 配置解析之 css.extract
  • Angular js 常用指令ng-if、ng-class、ng-option、ng-value、ng-click是如何使用的?
  • Babel配置的不完全指南
  • CSS 三角实现
  • CSS盒模型深入
  • CSS进阶篇--用CSS开启硬件加速来提高网站性能
  • C学习-枚举(九)
  • ECMAScript 6 学习之路 ( 四 ) String 字符串扩展
  • github从入门到放弃(1)
  • Java 内存分配及垃圾回收机制初探
  • jdbc就是这么简单
  • node-glob通配符
  • PHP 的 SAPI 是个什么东西
  • Spring Boot快速入门(一):Hello Spring Boot
  • Transformer-XL: Unleashing the Potential of Attention Models
  • vue-loader 源码解析系列之 selector
  • XML已死 ?
  • 工作中总结前端开发流程--vue项目
  • 好的网址,关于.net 4.0 ,vs 2010
  • 基于遗传算法的优化问题求解
  • 简析gRPC client 连接管理
  • 精益 React 学习指南 (Lean React)- 1.5 React 与 DOM
  • 如何学习JavaEE,项目又该如何做?
  • 十年未变!安全,谁之责?(下)
  • 一起来学SpringBoot | 第十篇:使用Spring Cache集成Redis
  • 云栖大讲堂Java基础入门(三)- 阿里巴巴Java开发手册介绍
  • raise 与 raise ... from 的区别
  • Spark2.4.0源码分析之WorldCount 默认shuffling并行度为200(九) ...
  • ​比特币大跌的 2 个原因
  • # 安徽锐锋科技IDMS系统简介
  • #我与Java虚拟机的故事#连载17:我的Java技术水平有了一个本质的提升
  • (1)(1.8) MSP(MultiWii 串行协议)(4.1 版)
  • (1/2)敏捷实践指南 Agile Practice Guide ([美] Project Management institute 著)
  • (Matlab)基于蝙蝠算法实现电力系统经济调度
  • (NO.00004)iOS实现打砖块游戏(九):游戏中小球与反弹棒的碰撞
  • (Oracle)SQL优化技巧(一):分页查询
  • (第8天)保姆级 PL/SQL Developer 安装与配置
  • (附源码)计算机毕业设计ssm基于Internet快递柜管理系统