简介

   zookeeper的基本概念和作用这里不做介绍,现在很多的公司都在使用它,说起它的作用,可能最先想到的是配置中心,可以将配置项作为一个node存储在zookeeper中,其他应用可以“关注”这个节点,当配置的值发生变化的时候,其他应用可以很快的被通知到。
   这里有一个细节,就是通知的次数,我在初次认识zookeeper的时候,以为“关注”了某个节点后,之后这个节点的值发生变化都可以通知到,但是实际情况是客户端在“关注”了某个节点后,这个节点的首次变化会被通知到,之后的变化都不会再通知,如果想得到之前的变化,需要在首次变更通知到后,再次“关注”这个节点,也就是说,zoookeeper中的“关注”通知是一次性的,类似于Web中Request/Response。
    基于这种情况,zookeeper的Java客户端Curator做了一定的优化,但是.Net还没有,基于此,我写了一个zookeeper Watch的帮助类,可以实现“一次关注,多次通知”。

ZookeeperWatchHelp

  ZookeeperWatchHelp的核心很简单,就是在"关注"了某个节点后,当节点发生变更,通知到应用程序后,立刻再次"关注",之后才执行变更的处理程序。 
  目前代码已经开源,地址是:https://github.com/zhaoyb/ZookeeperWatcherHelp
 

配置中心zookeeper版本

   之前的配置中心是基于心跳的,当配置发生变化,并不能立刻通知到客户端,对于某些应用场景可能不适用,所以升级为zookeeper版本。
   zookeeper版本的核心思想: 将应用Id(AppId)作为一个node存入到zookeeper中,node的data是应用的版本号,修改配置的时候,除了修改应用的版本号,还要修改zookeeper中对用node的data。 客户端在启动的使用,注册对指定节点数据变更的关注,当节点的值发生变化,会通知到客户端,客户端请求服务端拉取最新的配置。 
 

zookeeper版配置中心-服务端

在启动的时候,主动创建一个节点,作为配置中心的根节点。
在配置发生变化的时候,处理更新版本号,还要更新zookeeper中对应节点的data。节点的名称就是应用的名称。
 

zookeeper版配置中心-客户端

客户端的启动方式和之前类似
在启动的时候,首先会实例化zookeeper对象,需要zookeeper服务器的host和port,这些其实也是配置,所以会到服务端指定的应用下面获取配置(这些配置需要事先配置好),在拉取到zookeeper的配置后,实例化zookeeper配置,并注册关注。
 
 
zookeeper的客户端本身具有重连机制,所以当某个服务器宕机,会自动重连到另外的机器,这些对上层应用来说是透明的,但是为了保证高可用,还是做了一个降级处理,就是会每隔20秒钟(这个时间可以更长)主动到服务端校验一次版本号。 

.Net配置中心-Zookeper版的更多相关文章

  1. [转]springcloud(九):配置中心和消息总线(配置中心终结版)

    https://www.cnblogs.com/ityouknow/p/6931958.html springcloud(九):配置中心和消息总线(配置中心终结版) 我们在springcloud(七) ...

  2. springcloud(九):配置中心和消息总线(配置中心终结版)

    我们在springcloud(七):配置中心svn示例和refresh中讲到,如果需要客户端获取到最新的配置信息需要执行refresh,我们可以利用webhook的机制每次提交代码发送请求来刷新客户端 ...

  3. spring cloud深入学习(十)-----配置中心和消息总线(配置中心终结版)

    如果需要客户端获取到最新的配置信息需要执行refresh,我们可以利用webhook的机制每次提交代码发送请求来刷新客户端,当客户端越来越多的时候,需要每个客户端都执行一遍,这种方案就不太适合了.使用 ...

  4. Spring Cloud(九):配置中心(消息总线)【Finchley 版】

    Spring Cloud(九):配置中心(消息总线)[Finchley 版]  发表于 2018-04-19 |  更新于 2018-05-07 |  我们在 Spring Cloud(七):配置中心 ...

  5. SpringCloud学习系列之五-----配置中心(Config)和消息总线(Bus)完美使用版

    前言 在上篇中介绍了SpringCloud Config的使用,本篇则介绍基于SpringCloud(基于SpringBoot2.x,.SpringCloud Finchley版)中的分布式配置中心( ...

  6. Spring Cloud(八):配置中心(服务化与高可用)【Finchley 版】

    Spring Cloud(八):配置中心(服务化与高可用)[Finchley 版]  发表于 2018-04-19 |  更新于 2018-04-26 |  本文接之前的<Spring Clou ...

  7. Spring Cloud(七):配置中心(Git 版与动态刷新)【Finchley 版】

    Spring Cloud(七):配置中心(Git 版与动态刷新)[Finchley 版]  发表于 2018-04-19 |  更新于 2018-04-24 |  Spring Cloud Confi ...

  8. 【Alpaca】.Net版开源配置中心 - 技术选型 Vue 3.0

    是否可以用 Vue 3.0 现有的Vue 2.* 不推荐,坐等Vue 3.0出迁移工具吧,手动改的话工作量还是不小的 新项目 考虑下团队内对Vue + TS + VS Code的熟练程度.过程中你会遇 ...

  9. springcloud之config配置中心-Finchley.SR2版

    本篇和大家分享的是springcloud-config配置中心搭建,写到这里突然想起自己曾今开源过基于Redis发布订阅编写的一个配置中心,刚看了git星数有点少哈哈,这里顺势发个连接欢迎大侠们点赞: ...

随机推荐

  1. (有趣)chrome不同浏览器版本对display:flex和溢出隐藏显示省略符号的bug

    项目中碰到一个十分有趣的情形: 布局要求是这样:右边创建新订单是固定宽度80px,左侧是自适应宽度,溢出隐藏.如下图. 这里布局不用说肯定使用display:flex的.左侧flex:1;右侧widt ...

  2. Struts2(3) —— 数据处理

    Struts2框架框架使用OGNL语言和值栈技术实现数据的流转处理. 值栈就相当于一个容器,用来存放数据,而OGNL是一种快速查询数据的语言. 值栈:ValueStack一种数据结构,操作数据的方式为 ...

  3. 【转】Xcode进阶快捷键

    Xcode 快捷键和手势不仅节省了宝贵的工作时间,而且能让你在工作过程中感到更自信.能力变得更强,这样的工作方式也更合理.学习下列技巧你将成为 Xcode 资深用户. 此处提供一些通用的按键符以供参考 ...

  4. Android Support Library介绍

    v4 Support Library 这个库是为Android 1.6(API版本为4)及以上的版本设计的,它包含大部分高版本中有而低版本中没有的API,包括application component ...

  5. python之import子目录文件

    问题:   在pre_tab.py文件下: print("AA") from test.te import login1 login1() from test.te import ...

  6. SqlServer--模糊查询-通配符

    查询所有姓张的同学Select * from student where left(sName,1)='张'   看上去很美,如果改成查询名字中带亮的学生怎么做?换一种做法 like  Select  ...

  7. ORACLE字符集基础知识

    概念描叙    ORACLE数据库有国家字符集(national character set)与数据库字符集(database character set)之分.两者都是在创建数据库时需要设置的.国家 ...

  8. Linux system log avahi-daemon[3733]: Invalid query packet

    在检查Linux的日志文件时,发现大量 avahi-daemon[3733]: Invalid query packet错误(不同服务器对应的数字有所不同) Aug  3 07:00:01 hostn ...

  9. 聊下git merge --squash

    你经常会面临着将dev分支或者很多零散的分支merge到一个公共release分支里. 但是有一种情况是需要你处理的,就是在你的dev的分支里有很多commit记录.而这些commit是无需在rele ...

  10. 修改AndroidStudio中的Logcat中的默认设置

    按Ctrl+Alt+S打开Settings 在左上角的输入框中输入Locat 点右边的使用内部样式取消掉,好了,开始自定义吧.