﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-paulwong-随笔分类-ZOOKEEPER</title><link>http://www.blogjava.net/paulwong/category/52733.html</link><description /><language>zh-cn</language><lastBuildDate>Sun, 16 Jan 2022 12:05:00 GMT</lastBuildDate><pubDate>Sun, 16 Jan 2022 12:05:00 GMT</pubDate><ttl>60</ttl><item><title>分布式配置管理平台Disconf</title><link>http://www.blogjava.net/paulwong/archive/2015/04/13/424366.html</link><dc:creator>paulwong</dc:creator><author>paulwong</author><pubDate>Mon, 13 Apr 2015 08:12:00 GMT</pubDate><guid>http://www.blogjava.net/paulwong/archive/2015/04/13/424366.html</guid><wfw:comment>http://www.blogjava.net/paulwong/comments/424366.html</wfw:comment><comments>http://www.blogjava.net/paulwong/archive/2015/04/13/424366.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/paulwong/comments/commentRss/424366.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/paulwong/services/trackbacks/424366.html</trackback:ping><description><![CDATA[<a href="http://www.oschina.net/p/disconf" target="_blank">http://www.oschina.net/p/disconf</a><br /><br /><p style="margin: 0px 0px 10px; padding: 0px; font-family: 微软雅黑, Verdana, sans-serif, 宋体; font-size: 13px; line-height: 21.3333320617676px; background-color: #ffffff;">Disconf 可以为各种业务平台提供统一的配置管理服务。</p><ul list-paddingleft-2"="" style="margin: 0.5em 0px 0.5em 1.5em; padding: 0px; list-style-position: inside; font-family: 微软雅黑, Verdana, sans-serif, 宋体; font-size: 13px; line-height: 21.3333320617676px; background-color: #ffffff;"><li style="margin: 0px; padding: 0px;"><p style="margin: 0px 0px 10px; padding: 0px; display: inline;">支持配置（配置项+配置文件）的分布式化管理</p></li><li style="margin: 0px; padding: 0px;"><p style="margin: 0px 0px 10px; padding: 0px; display: inline;">配置发布统一化</p></li><li style="margin: 0px; padding: 0px;"><p style="margin: 0px 0px 10px; padding: 0px; display: inline;">极简的使用方式（注解式编程 或 XML代码无代码侵入模式）</p></li><li style="margin: 0px; padding: 0px;"><p style="margin: 0px 0px 10px; padding: 0px; display: inline;">低侵入性或无侵入性、强兼容性</p></li><li style="margin: 0px; padding: 0px;"><p style="margin: 0px 0px 10px; padding: 0px; display: inline;">需要Spring编程环境</p></li></ul><p style="margin: 0px 0px 10px; padding: 0px; font-family: 微软雅黑, Verdana, sans-serif, 宋体; font-size: 13px; line-height: 21.3333320617676px; background-color: #ffffff;"><img src="https://camo.githubusercontent.com/d611dae3ab52d32afa5d98e8455fac17e399ee0c/687474703a2f2f7777332e73696e61696d672e636e2f626d6964646c652f3630633936323066677731656964617870716479336a32307072306a72676e6f2e6a7067" alt="" data-canonical-src="http://ww3.sinaimg.cn/bmiddle/60c9620fgw1eidaxpqdy3j20pr0jrgno.jpg" data-bd-imgshare-binded="1" style="margin: 0px; padding: 0px; border: 0px; max-width: 100%;" /></p><h3>重要功能特点</h3><ul list-paddingleft-2"="" style="margin: 0.5em 0px 0.5em 1.5em; padding: 0px; list-style-position: inside; font-family: 微软雅黑, Verdana, sans-serif, 宋体; font-size: 13px; line-height: 21.3333320617676px; background-color: #ffffff;"><li style="margin: 0px; padding: 0px;"><p style="margin: 0px 0px 10px; padding: 0px; display: inline;"><strong style="margin: 0px; padding: 0px;">支持配置（配置项+配置文件）的分布式化管理</strong></p></li><li style="margin: 0px; padding: 0px;"><p style="margin: 0px 0px 10px; padding: 0px; display: inline;"><strong style="margin: 0px; padding: 0px;">配置发布统一化</strong></p></li><ul list-paddingleft-2"="" style="margin: 0.5em 0px 0.5em 1.5em; padding: 0px; list-style-type: square; list-style-position: inside;"><li style="margin: 0px; padding: 0px;"><p style="margin: 0px 0px 10px; padding: 0px; display: inline;">配置发布、更新统一化（云端存储、发布）:配置存储在云端系统，用户统一在平台上进行发布、更新配置。</p></li><li style="margin: 0px; padding: 0px;"><p style="margin: 0px 0px 10px; padding: 0px; display: inline;">配置更新自动化：用户在平台更新配置，使用该配置的系统会自动发现该情况，并应用新配置。特殊地，如果用户为此配置定义了回调函数类，则此函数类会被自动调用。</p></li></ul><li style="margin: 0px; padding: 0px;"><p style="margin: 0px 0px 10px; padding: 0px; display: inline;"><strong style="margin: 0px; padding: 0px;">配置异构系统管理</strong></p></li><ul list-paddingleft-2"="" style="margin: 0.5em 0px 0.5em 1.5em; padding: 0px; list-style-type: square; list-style-position: inside;"><li style="margin: 0px; padding: 0px;"><p style="margin: 0px 0px 10px; padding: 0px; display: inline;">异构包部署统一化：这里的异构系统是指一个系统部署多个实例时，由于配置不同，从而需要多个部署包（jar或war）的情况（下同）。使用 Disconf后，异构系统的部署只需要一个部署包，不同实例的配置会自动分配。特别地，在业界大量使用部署虚拟化（如JPAAS系统，SAE，BAE） 的情况下，同一个系统使用同一个部署包的情景会越来越多，Disconf可以很自然地与他天然契合。</p></li><li style="margin: 0px; padding: 0px;"><p style="margin: 0px 0px 10px; padding: 0px; display: inline;">异构主备自动切换：如果一个异构系统存在主备机，主机发生挂机时，备机可以自动获取主机配置从而变成主机。</p></li><li style="margin: 0px; padding: 0px;"><p style="margin: 0px 0px 10px; padding: 0px; display: inline;">异构主备机Context共享工具：异构系统下，主备机切换时可能需要共享Context。可以使用Context共享工具来共享主备的Context。</p></li></ul><li style="margin: 0px; padding: 0px;"><p style="margin: 0px 0px 10px; padding: 0px; display: inline;"><strong style="margin: 0px; padding: 0px;">极简的使用方式（注解式编程 或 XML代码无代码侵入模式）</strong>：我们追求的是极简的、用户编程体验良好的编程方式。目前支持两种开发模式：基于XML配置或才基于注解，即可完成复杂的配置分布式化。</p></li><li style="margin: 0px; padding: 0px;"><p style="margin: 0px 0px 10px; padding: 0px; display: inline;"><strong style="margin: 0px; padding: 0px;">需要Spring编程环境</strong></p></li></ul><p style="margin: 0px 0px 10px; padding: 0px; font-family: 微软雅黑, Verdana, sans-serif, 宋体; font-size: 13px; line-height: 21.3333320617676px; background-color: #ffffff;">注：配置项是指某个类里的某个Field字段。</p><p style="margin: 0px 0px 10px; padding: 0px; font-family: 微软雅黑, Verdana, sans-serif, 宋体; font-size: 13px; line-height: 21.3333320617676px; background-color: #ffffff;"><strong style="margin: 0px; padding: 0px;">Disconf的功能特点描述图：</strong></p><p style="margin: 0px 0px 10px; padding: 0px; font-family: 微软雅黑, Verdana, sans-serif, 宋体; font-size: 13px; line-height: 21.3333320617676px; background-color: #ffffff;"><a href="https://camo.githubusercontent.com/ca29510843721567e6f8f09e0d9d252fa5331ed9/687474703a2f2f7777312e73696e61696d672e636e2f626d6964646c652f36306339363230666777316568693777776b64746f6a32306e7730667a3075682e6a7067" target="_blank" style="margin: 0px; padding: 0px; color: #3e62a6; outline: 0px;"><img src="https://camo.githubusercontent.com/ca29510843721567e6f8f09e0d9d252fa5331ed9/687474703a2f2f7777312e73696e61696d672e636e2f626d6964646c652f36306339363230666777316568693777776b64746f6a32306e7730667a3075682e6a7067" alt="" data-canonical-src="http://ww1.sinaimg.cn/bmiddle/60c9620fgw1ehi7wwkdtoj20nw0fz0uh.jpg" data-bd-imgshare-binded="1" style="margin: 0px; padding: 0px; border: 0px; max-width: 100%;" /></a></p><p style="margin: 0px 0px 10px; padding: 0px; font-family: 微软雅黑, Verdana, sans-serif, 宋体; font-size: 13px; line-height: 21.3333320617676px; background-color: #ffffff;"><a textvalue="查看大图" target="_blank" href="http://ww1.sinaimg.cn/mw1024/60c9620fgw1ehi7wwkdtoj20nw0fz0uh.jpg" style="margin: 0px; padding: 0px; color: #3e62a6; outline: 0px;">查看大图</a></p><h3>其它功能特点</h3><ul list-paddingleft-2"="" style="margin: 0.5em 0px 0.5em 1.5em; padding: 0px; list-style-position: inside; font-family: 微软雅黑, Verdana, sans-serif, 宋体; font-size: 13px; line-height: 21.3333320617676px; background-color: #ffffff;"><li style="margin: 0px; padding: 0px;"><p style="margin: 0px 0px 10px; padding: 0px; display: inline;"><strong style="margin: 0px; padding: 0px;">低侵入性或无侵入性、强兼容性</strong>：</p></li><ul list-paddingleft-2"="" style="margin: 0.5em 0px 0.5em 1.5em; padding: 0px; list-style-type: square; list-style-position: inside;"><li style="margin: 0px; padding: 0px;"><p style="margin: 0px 0px 10px; padding: 0px; display: inline;">低侵入性：通过极少的注解式代码撰写，即可实现分布式配置。</p></li><li style="margin: 0px; padding: 0px;"><p style="margin: 0px 0px 10px; padding: 0px; display: inline;">无侵入性：通过XML简单配置，即可实现分布式配置。</p></li><li style="margin: 0px; padding: 0px;"><p style="margin: 0px 0px 10px; padding: 0px; display: inline;">强兼容性：为程序添加了分布式配置注解后，开启Disconf则使用分布式配置；若关闭Disconf则使用本地配置；若开启Disconf后disconf-web不能正常Work，则Disconf使用本地配置。</p></li></ul><li style="margin: 0px; padding: 0px;"><p style="margin: 0px 0px 10px; padding: 0px; display: inline;"><strong style="margin: 0px; padding: 0px;">支持配置项多个项目共享，支持批量处理项目配置</strong>。</p></li><li style="margin: 0px; padding: 0px;"><p style="margin: 0px 0px 10px; padding: 0px; display: inline;"><strong style="margin: 0px; padding: 0px;">配置监控</strong>：平台提供自校验功能（进一步提高稳定性），可以定时校验应用系统的配置是否正确。</p></li></ul><h2></h2><h2>模块架构图</h2><p style="margin: 0px 0px 10px; padding: 0px; font-family: 微软雅黑, Verdana, sans-serif, 宋体; font-size: 13px; line-height: 21.3333320617676px; background-color: #ffffff;"><a href="https://camo.githubusercontent.com/e05c0e51eab78d18fbc7b61d35a59f71d60e835c/687474703a2f2f7777312e73696e61696d672e636e2f626d6964646c652f36306339363230666a773165716937636e686a70306a323065343039377766712e6a7067" target="_blank" style="margin: 0px; padding: 0px; color: #3e62a6; outline: 0px;"><img src="https://camo.githubusercontent.com/e05c0e51eab78d18fbc7b61d35a59f71d60e835c/687474703a2f2f7777312e73696e61696d672e636e2f626d6964646c652f36306339363230666a773165716937636e686a70306a323065343039377766712e6a7067" alt="" data-canonical-src="http://ww1.sinaimg.cn/bmiddle/60c9620fjw1eqi7cnhjp0j20e4097wfq.jpg" data-bd-imgshare-binded="1" style="margin: 0px; padding: 0px; border: 0px; max-width: 100%;" /></a></p><img src ="http://www.blogjava.net/paulwong/aggbug/424366.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/paulwong/" target="_blank">paulwong</a> 2015-04-13 16:12 <a href="http://www.blogjava.net/paulwong/archive/2015/04/13/424366.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>安装KAFKA</title><link>http://www.blogjava.net/paulwong/archive/2014/05/11/413506.html</link><dc:creator>paulwong</dc:creator><author>paulwong</author><pubDate>Sun, 11 May 2014 02:30:00 GMT</pubDate><guid>http://www.blogjava.net/paulwong/archive/2014/05/11/413506.html</guid><wfw:comment>http://www.blogjava.net/paulwong/comments/413506.html</wfw:comment><comments>http://www.blogjava.net/paulwong/archive/2014/05/11/413506.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/paulwong/comments/commentRss/413506.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/paulwong/services/trackbacks/413506.html</trackback:ping><description><![CDATA[<ol>
     <li>下载KAFKA<br />
     <div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br />
     <br />
     Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
     http://www.CodeHighlighter.com/<br />
     <br />
     -->wget&nbsp;http://apache.fayea.com/apache-mirror/kafka/<span style="color: #800000; ">0.8</span>.<span style="color: #800000; ">1.1</span>/kafka_2.<span style="color: #800000; ">9.2</span>-<span style="color: #800000; ">0.8</span>.<span style="color: #800000; ">1.1</span>.tgz</div>
     <br />
     </li>
     <li>解压<br />
     <div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br />
     <br />
     Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
     http://www.CodeHighlighter.com/<br />
     <br />
     -->tar&nbsp;-zxf&nbsp;kafka_2.<span style="color: #800000; ">9.2</span>-<span style="color: #800000; ">0.8</span>.<span style="color: #800000; ">1.1</span>.tgz</div>
     <br />
     </li>
     <li>0.7之前的版本这时就要安装相应的包之类的，0.8.1之后就不用了。把命令加进PATH中<br />
     <div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br />
     <br />
     Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
     http://www.CodeHighlighter.com/<br />
     <br />
     -->export&nbsp;KAFKA_HOME=/home/ubuntu/java/kafka_2.<span style="color: #800000; ">9.2</span>-<span style="color: #800000; ">0.8</span>.<span style="color: #800000; ">1.1</span><br />
     export&nbsp;PATH=<span style="color: #800080; ">$JAVA_HOME</span>/bin:<span style="color: #800080; ">$STORM_HOME</span>/bin:<span style="color: #800080; ">$KAFKA_HOME</span>/bin:<span style="color: #800080; ">$ZOOKEEPER_HOME</span>/bin:<span style="color: #800080; ">$BIN_HOME</span>/bin:<span style="color: #800080; ">$MAVEN_HOME</span>/bin:<span style="color: #800080; ">$PATH<br />
     </span></div>
     <br />
     </li>
     <li>SOURCE一下<br />
     <div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br />
     <br />
     Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
     http://www.CodeHighlighter.com/<br />
     <br />
     -->source&nbsp;/etc/profile</div>
     <br />
     </li>
     <li>制作启动命令，start-kafka.sh，并放于kafaka_hoem/bin下<br />
     <div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br />
     <br />
     Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
     http://www.CodeHighlighter.com/<br />
     <br />
     -->kafka-server-start.sh&nbsp;<span style="color: #800080; ">$KAFKA_HOME</span>/config/server.properties&nbsp;&amp;</div>
     <br />
     </li>
     <li>安装ZOOKEEPER<br />
     <div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br />
     <br />
     Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
     http://www.CodeHighlighter.com/<br />
     <br />
     -->wget&nbsp;http://mirrors.hust.edu.cn/apache/zookeeper/zookeeper-<span style="color: #800000; ">3.4</span>.<span style="color: #800000; ">6</span>/zookeeper-<span style="color: #800000; ">3.4</span>.<span style="color: #800000; ">6</span>.tar.gz<br />
     tar&nbsp;-zxf&nbsp;&nbsp;zookeeper-<span style="color: #800000; ">3.4</span>.<span style="color: #800000; ">6</span>.tar.gz<br />
     cd&nbsp;zookeeper-<span style="color: #800000; ">3.4</span>.<span style="color: #800000; ">6</span>.tar.gz/conf<br />
     cp&nbsp;zoo_sample.cfg&nbsp;zoo.cfg</div>
     <br />
     </li>
     <li>改zoo.cfg<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->dataDir=$ZOOKEEPER_HOME/data<br /><br /><span style="color: #008000; ">#</span><span style="color: #008000; ">方便查LOG</span><span style="color: #008000; "><br /></span>dataLogDir=$ZOOKEEPER_HOME/logs<br /><br /><span style="color: #008000; ">#</span><span style="color: #008000; ">控制客户的连接数，默认数为60，太少</span><span style="color: #008000; "><br /></span>maxClientCnxns=300<br /><br /><span style="color: #008000; ">#</span><span style="color: #008000; ">如果有多个ZOOKEEPER&nbsp;INSTANCE时</span><span style="color: #008000; "><br /></span>server.1=10.120.151.223:2888:3888<br />server.2=10.120.151.224:2888:3888</div>
     <br />
     </li>
     <li>启动ZOOKEEPER<br />
     <div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br />
     <br />
     Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
     http://www.CodeHighlighter.com/<br />
     <br />
     -->zkServer.sh&nbsp;start</div>
     <br />
     </li>
     <li>更改KAFKA的配置文件server.properties， 主要改几个地方<br />
     <div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br />
     <br />
     Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
     http://www.CodeHighlighter.com/<br />
     <br />
     --><span style="color: #008000; ">#</span><span style="color: #008000; ">这个是配置PRODUCER/CONSUMER连上来的时候使用的地址</span><span style="color: #008000; "><br />
     </span>advertised.host.name=<span style="color: #800000; ">54.72</span>.<span style="color: #800000; ">4.92</span><br />
     <span style="color: #008000; ">#</span><span style="color: #008000; ">设置KAFKA&nbsp;LOG路径</span><span style="color: #008000; "><br />
     </span><span style="color: #0000FF; ">log</span>.dirs=<span style="color: #800080; ">$KAFKA_HOME</span>/logs/kafka-logs<br />
     <span style="color: #008000; ">#</span><span style="color: #008000; ">设置ZOOKEEPER的连接地址</span><span style="color: #008000; "><br />
     </span>zookeeper.<span style="color: #0000FF; ">connect</span>=<span style="color: #800000; ">54.72</span>.<span style="color: #800000; ">4.92</span>:<span style="color: #800000; ">2181</span></div>
     <br />
     </li>
     <li>启动KAFKA<br />
     <div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br />
     <br />
     Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
     http://www.CodeHighlighter.com/<br />
     <br />
     -->start-kafka.sh</div>
     <br />
     </li>
     <li>新建一个TOPIC<br />
     <div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all;"><!--<br />
     <br />
     Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
     http://www.CodeHighlighter.com/<br />
     <br />
     --><span style="color: #008000; ">#</span><span style="color: #008000; ">KAFKA有几个，replication-factor就填几个</span><span style="color: #008000; "><br />
     </span>kafka-topics.sh&nbsp;--create&nbsp;--topic&nbsp;kafkatopic&nbsp;--replication-factor&nbsp;<span style="color: #800000; ">1</span>&nbsp;--partitions&nbsp;<span style="color: #800000; ">1</span>&nbsp;--zookeeper&nbsp;localhost:<span style="color: #800000; ">2181</span></div>
     <br />
     </li>
     <li>发送消息至KAFKA<br />
     <div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all;"><!--<br />
     <br />
     Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
     http://www.CodeHighlighter.com/<br />
     <br />
     -->kafka-console-producer.sh&nbsp;--broker-list&nbsp;localhost:<span style="color: #800000; ">9092</span>&nbsp;--sync&nbsp;--topic&nbsp;kafkatopic</div>
     <br />
     </li>
     <li>另开一个终端，显示消息的消费<br />
     <div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br />
     <br />
     Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
     http://www.CodeHighlighter.com/<br />
     <br />
     -->kafka-console-consumer.sh&nbsp;--zookeeper&nbsp;localhost:<span style="color: #800000; ">2181</span>&nbsp;--topic&nbsp;kafkatopic&nbsp;--from-beginning</div>
     <br />
     </li>
     <li>在发送消息的终端输入aaa，则可以在消费消息的终端显示</li>
</ol><img src ="http://www.blogjava.net/paulwong/aggbug/413506.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/paulwong/" target="_blank">paulwong</a> 2014-05-11 10:30 <a href="http://www.blogjava.net/paulwong/archive/2014/05/11/413506.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>zookeeper client使用笔记</title><link>http://www.blogjava.net/paulwong/archive/2013/08/23/403222.html</link><dc:creator>paulwong</dc:creator><author>paulwong</author><pubDate>Fri, 23 Aug 2013 02:47:00 GMT</pubDate><guid>http://www.blogjava.net/paulwong/archive/2013/08/23/403222.html</guid><wfw:comment>http://www.blogjava.net/paulwong/comments/403222.html</wfw:comment><comments>http://www.blogjava.net/paulwong/archive/2013/08/23/403222.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/paulwong/comments/commentRss/403222.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/paulwong/services/trackbacks/403222.html</trackback:ping><description><![CDATA[<h3>Zookeeper数据模型</h3><ol style="background-color: #ffffff; border: 0px; margin: 0px 0px 24px 1.5em; padding: 0px; vertical-align: baseline; list-style-position: initial; list-style-image: initial; color: #333333; font-family: Georgia, 'Bitstream Charter', serif; font-size: 16px; line-height: 24px;"><li style="background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline; background-position: initial initial; background-repeat: initial initial;">zk具有像文件系统一样的层状的命名空间。</li><li style="background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline; background-position: initial initial; background-repeat: initial initial;">命名空间中的每一个节点都可存储数据。</li><li style="background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline; background-position: initial initial; background-repeat: initial initial;">只有绝对路径，名字都是unicode字符。</li><li style="background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline; background-position: initial initial; background-repeat: initial initial;">每个节点都是ZNode类型（如同文件系统的stat）。</li><li style="background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline; background-position: initial initial; background-repeat: initial initial;">每个ZNode上可以设置Watch，znode改变会通知设置的watch的客户端，同时清除Watch</li><li style="background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline; background-position: initial initial; background-repeat: initial initial;">每次对znode的读写都是原子的，每次读写都是带要操作znode版本号的。</li><li style="background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline; background-position: initial initial; background-repeat: initial initial;">尽量保证单个znode在1MB一下。通常几K。</li><li style="background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline; background-position: initial initial; background-repeat: initial initial;">临时节点的概念：只存在于一个Session的有效期内的节点。临时节点不允许有子节点。</li><li style="background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline; background-position: initial initial; background-repeat: initial initial;">使用zxid来标示zk中的每个事件（导致zk状态改变的事件）。全局唯一。</li><li style="background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline; background-position: initial initial; background-repeat: initial initial;">对每个znode的改变触发当前znode versions的改变。每个znode维护三个version（version：对应每次znode data改变，cversion：对应每次子节点改变，aversion：对应每次acl改变）</li></ol><h3>Zookeeper状态转换</h3><p style="background-color: #ffffff; border: 0px; margin: 0px 0px 24px; padding: 0px; vertical-align: baseline; color: #333333; font-family: Georgia, 'Bitstream Charter', serif; font-size: 16px; line-height: 24px;"><a href="http://blog.ddup.us/wp-content/uploads/2012/08/state_dia1.png" style="background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline; color: #743399; background-position: initial initial; background-repeat: initial initial;"><img src="http://blog.ddup.us/wp-content/uploads/2012/08/state_dia1-1024x490.png" alt="" title="state_dia" width="640" height="306" size-large=""  wp-image-313"="" style="background-color: transparent; border: none; margin: 0px auto 12px; padding: 0px; vertical-align: baseline; clear: both; display: block; max-width: 100%; height: auto; background-position: initial initial; background-repeat: initial initial;" /></a></p><ol style="background-color: #ffffff; border: 0px; margin: 0px 0px 24px 1.5em; padding: 0px; vertical-align: baseline; list-style-position: initial; list-style-image: initial; color: #333333; font-family: Georgia, 'Bitstream Charter', serif; font-size: 16px; line-height: 24px;"><li style="background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline; background-position: initial initial; background-repeat: initial initial;">session timeout时间至少是ticket time（默认是2000ms）的2倍，同时最大不能超过20倍ticket time</li><li style="background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline; background-position: initial initial; background-repeat: initial initial;">一旦session 过期，不必手动重新连接。zk client会处理重连。</li><li style="background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline; background-position: initial initial; background-repeat: initial initial;">Session的过期与否是由server端决定的。在timeout时间之内，server没有收到来自<br />client的任何信息（心跳）时，则判定client session过期。同时会删掉属于这个session的临时节点（znode），同时通知watch这个节点的client。</li><li style="background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline; background-position: initial initial; background-repeat: initial initial;">一旦session过期的client重新连接上zk cluster，将会受到&#8220;session expired&#8221;通知。</li><li style="background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline; background-position: initial initial; background-repeat: initial initial;">在建立zk连接时，会设置一个默认的watcher，当client状态改变的时候，这个watcher会被调用。一般将这个watcher的初始状态设为disconnect。这样就可以处理后续的session 过期事件。</li></ol><h3>Zookeeper Watch</h3><ol style="background-color: #ffffff; border: 0px; margin: 0px 0px 24px 1.5em; padding: 0px; vertical-align: baseline; list-style-position: initial; list-style-image: initial; color: #333333; font-family: Georgia, 'Bitstream Charter', serif; font-size: 16px; line-height: 24px;"><li style="background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline; background-position: initial initial; background-repeat: initial initial;">每一次的读操作（getData(), getChildren(), exists()）都可以对操作的节点设置watcher。</li><li style="background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline; background-position: initial initial; background-repeat: initial initial;">watch是一次性的。一旦数据改变或是删除，则触发watcher，后续的改变则不会再触发。</li><li style="background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline; background-position: initial initial; background-repeat: initial initial;">因为watch是异步发送的，所以有可能在节点操作返回码返回之前先返回给client。zk只能保证client收到的watch事件是在他设置watch事件返回成功后收到。</li><li style="background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline; background-position: initial initial; background-repeat: initial initial;">watch的两种类型：data watch（由getData() 和 exists()设置），返回znode data 和 child watch（由getChildren()设置）， 返回children list。</li><li style="background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline; background-position: initial initial; background-repeat: initial initial;">导致watch事件丢失的一种情况：&#8220; a watch for the existance of a znode not yet created will be missed if the znode is created and deleted while disconnected.</li></ol><img src ="http://www.blogjava.net/paulwong/aggbug/403222.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/paulwong/" target="_blank">paulwong</a> 2013-08-23 10:47 <a href="http://www.blogjava.net/paulwong/archive/2013/08/23/403222.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>大数据平台架构设计资源</title><link>http://www.blogjava.net/paulwong/archive/2013/08/18/403001.html</link><dc:creator>paulwong</dc:creator><author>paulwong</author><pubDate>Sun, 18 Aug 2013 10:27:00 GMT</pubDate><guid>http://www.blogjava.net/paulwong/archive/2013/08/18/403001.html</guid><wfw:comment>http://www.blogjava.net/paulwong/comments/403001.html</wfw:comment><comments>http://www.blogjava.net/paulwong/archive/2013/08/18/403001.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/paulwong/comments/commentRss/403001.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/paulwong/services/trackbacks/403001.html</trackback:ping><description><![CDATA[!!!基于Hadoop的大数据平台实施记&#8212;&#8212;整体架构设计<br /><a href="http://blog.csdn.net/jacktan/article/details/9200979" target="_blank">http://blog.csdn.net/jacktan/article/details/9200979</a><br /><br /><br /><br /><br /><br /><br /><br /><img src ="http://www.blogjava.net/paulwong/aggbug/403001.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/paulwong/" target="_blank">paulwong</a> 2013-08-18 18:27 <a href="http://www.blogjava.net/paulwong/archive/2013/08/18/403001.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ZOOKEEPER资源</title><link>http://www.blogjava.net/paulwong/archive/2012/10/02/388941.html</link><dc:creator>paulwong</dc:creator><author>paulwong</author><pubDate>Tue, 02 Oct 2012 02:20:00 GMT</pubDate><guid>http://www.blogjava.net/paulwong/archive/2012/10/02/388941.html</guid><wfw:comment>http://www.blogjava.net/paulwong/comments/388941.html</wfw:comment><comments>http://www.blogjava.net/paulwong/archive/2012/10/02/388941.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/paulwong/comments/commentRss/388941.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/paulwong/services/trackbacks/388941.html</trackback:ping><description><![CDATA[ZooKeeper实际上是一个小型的分布式文件系统，外加通知功能。<br /><br /><br />ZooKeeper典型应用场景一览<br /><a href="http://www.coder4.com/archives/3856" target="_blank">http://www.coder4.com/archives/3856</a><br /><br /><br />!!!!!ZooKeeper伪分布式集群安装及使用<br /><a href="http://blog.fens.me/hadoop-zookeeper-intro/" target="_blank">http://blog.fens.me/hadoop-zookeeper-intro/</a><br /><br />!!!ZOOPKEEPER之配置管理、分布式队列、会话、缓存等管理<br /><a href="http://www.cnblogs.com/xguo/category/495322.html" target="_blank">http://www.cnblogs.com/xguo/category/495322.html</a><br /><br />ZooKeeper实现分布式队列Queue<br /><a href="http://blog.fens.me/zookeeper-queue/" target="_blank">http://blog.fens.me/zookeeper-queue/</a><br /><br /><br />ZooKeeper实现分布式FIFO队列<br /><a href="http://blog.fens.me/zookeeper-queue-fifo/" target="_blank">http://blog.fens.me/zookeeper-queue-fifo/</a><br /><br /><br /><br />!基于ZooKeeper的分布式Session实现<br /><a href="http://blog.csdn.net/jacktan/article/details/6112806" target="_blank">http://blog.csdn.net/jacktan/article/details/6112806</a>&nbsp;<br />
<br />
<br />ZOOPKEEPER和SPRING整合，作为PROPERTY数据的来源<br /><a href="https://github.com/james-wu-shanghai/spring-zookeeper" target="_blank">https://github.com/james-wu-shanghai/spring-zookeeper</a><br /><a href="http://stackoverflow.com/questions/9940476/zookeeper-for-java-spring-config" target="_blank">http://stackoverflow.com/questions/9940476/zookeeper-for-java-spring-config</a><br /><a href="https://github.com/ryantenney/zookeeper-spring" target="_blank">https://github.com/ryantenney/zookeeper-spring</a><br /><br /><br /><a href="http://rdc.taobao.com/team/jm/archives/tag/zookeeper" target="_blank">http://rdc.taobao.com/team/jm/archives/tag/zookeeper</a>&nbsp;<br /><div><br />
</div>
<div>分布式服务框架 Zookeeper -- 管理分布式环境中的数据</div>
<div><a href="http://www.ibm.com/developerworks/cn/opensource/os-cn-zookeeper/">http://www.ibm.com/developerworks/cn/opensource/os-cn-zookeeper/</a><br />
</div>
<div><br />
</div>
<div>zookeeper</div>
<div><a href="http://baike.baidu.com/view/3061646.htm" target="_blank">http://baike.baidu.com/view/3061646.htm</a><br />
</div>
<div><br />
</div>
<div>为什么要使用ZooKeeper</div>
<div><a href="http://blog.csdn.net/franklysun/article/details/6424213" target="_blank">http://blog.csdn.net/franklysun/article/details/6424213</a><br />
</div>
<div><br />
</div>
<div>使用zookeeper管理多个hbase集群</div>
<div><a href="http://koven2049.iteye.com/blog/1150484" target="_blank">http://koven2049.iteye.com/blog/1150484</a><br />
</div>
<div><br />
</div>
<div>Description of how HBase uses ZooKeeper</div>
<div><a href="http://wiki.apache.org/hadoop/ZooKeeper/HBaseUseCases" target="_blank">http://wiki.apache.org/hadoop/ZooKeeper/HBaseUseCases</a><br />
</div>
<div><br />
</div>
<div>hadoop+hbase+zookeeper集群安装方法<br /><a href="http://linuxjcq.blog.51cto.com/3042600/760634" target="_blank">http://linuxjcq.blog.51cto.com/3042600/760634</a><br />
</div>
<div><a href="http://marysee.blog.51cto.com/1000292/629405" target="_blank">http://marysee.blog.51cto.com/1000292/629405</a><br />
</div><img src ="http://www.blogjava.net/paulwong/aggbug/388941.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/paulwong/" target="_blank">paulwong</a> 2012-10-02 10:20 <a href="http://www.blogjava.net/paulwong/archive/2012/10/02/388941.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>