简介

   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. .NET 各种框架

    基于.NET平台常用的框架整理 分布式缓存框架: Microsoft Velocity:微软自家分布式缓存服务框架. Memcahed:一套分布式的高速缓存系统,目前被许多网站使用以提升网站的访问速度 ...

  2. SharePoint 2013 工作流之年假审批Designer配置篇

    本文介绍SharePoint 2013 使用Designer工具,设计年假审批工作流,由于流程所用的条件和操作都比较简单,所以演示为主,最后附流程图和流程的文本图,有兴趣的可以参照实验.如果对于Des ...

  3. 数据结构->冒泡排序

    数据结构->冒泡排序 实现效果 从小到大排序 算法原理 重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.走访数列的工作是重复地进行直到不再需要交换,也就是说该数列 ...

  4. Android性能优化之内存优化练习

    练习题目地址:https://github.com/lzyzsd/MemoryBugs 分析及优化过程如下: 问题1 静态变量引用activity 使用神器LeakCanary检查内存泄露问题 从图中 ...

  5. 关于watir-webdriver中文乱码问题

    require 'watir-webdriver' require 'iconv' cov = Iconv.new( 'gbk', 'utf-8') b = Watir::Browser.new b. ...

  6. 转载文档:Storm实战常见问题及解决方案

    该文档为实实在在的原创文档,转载请注明: http://blog.sina.com.cn/s/blog_8c243ea30101k0k1.html 类型 详细 备注 该文档是群里几个朋友在storm实 ...

  7. Hadoop学习

    Hadoop: 大数据里面的公认的解决方案标准 链接推荐:http://www.powerxing.com/install-hadoop/ 第一天 Hadoop的基本概念 伪分布式集群安装 hdfs ...

  8. TCP流量控制与拥塞控制

    为了更好地对传输层进行拥塞控制,因特网建议标准定义了以下四种算法:慢启动.拥塞避免.快重传和快恢复. 1 接收窗口rwnd与拥塞窗口cwnd 发送方在确定发送报文段的速率时,既要根据接收方的接收能力, ...

  9. [转]HDFS中JAVA API的使用

    HDFS是一个分布式文件系统,既然是文件系统,就可以对其文件进行操作,比如说新建文件.删除文件.读取文件内容等操作.下面记录一下使用JAVA API对HDFS中的文件进行操作的过程. 对分HDFS中的 ...

  10. Orchard中如何配置远端发布

    Orchard中默认安装是有Blog功能的.下面介绍如何配置Remote Blog Publishing功能,使用Windows Live Writer客户端发布博客. 一,开启Remote Blog ...