柔情似水 发表于 2015-1-18 11:23:42

JAVA网页设计Zookeeper与paxos算法仓酷云

关于第二点:俺问问你,如果是企业级项目的话,诸如RMI,EJB,等一些关键技术,这些难道都不需要学么?如果光是使用jsp,servlet,javabean的话。1、zookeeper是甚么
官方说辞:Zookeeper散布式服务框架是ApacheHadoop的一个子项目,它次要是用来办理散布式使用中常常碰到的一些数据办理成绩,如:一致定名服务、形态同步服务、集群办理、散布式使用设置项的办理等。
好笼统,我们改动一下体例,先看看它都供应了哪些功效,然后再看看利用它的这些功效能做点甚么。
2、zookeeper供应了甚么
复杂的说,zookeeper=文件体系+关照机制。
1、文件体系
Zookeeper保护一个相似文件体系的数据布局:

<br>
每一个子目次项如NameService都被称作为znode,和文件体系一样,我们可以自在的增添、删除znode,在一个znode下增添、删除子znode,独一的分歧在于znode是能够存储数据的。
有四品种型的znode:
1、PERSISTENT-耐久化目次节点
客户端与zookeeper断开毗连后,该节点仍旧存在
2、PERSISTENT_SEQUENTIAL-耐久化按次编号目次节点
客户端与zookeeper断开毗连后,该节点仍旧存在,只是Zookeeper给该节点称号举行按次编号
3、EPHEMERAL-一时目次节点
客户端与zookeeper断开毗连后,该节点被删除
4、EPHEMERAL_SEQUENTIAL-一时按次编号目次节点
客户端与zookeeper断开毗连后,该节点被删除,只是Zookeeper给该节点称号举行按次编号
2、关照机制
客户端注册监听它体贴的目次节点,当目次节点产生变更(数据改动、被删除、子目次节点增添删除)时,zookeeper会关照客户端。
就这么复杂,上面我们看看能做点甚么呢?
3、我们能用zookeeper做甚么
1、定名服务
这个仿佛最复杂,在zookeeper的文件体系里创立一个目次,即有独一的path。在我们利用tborg没法断定下游程序的部署呆板时便可与下流程序商定好path,经由过程path即能相互探究发明,不见不散了。
2、设置办理
程序老是必要设置的,假如程序分离部署在多台呆板上,要逐一改动设置就变得坚苦。好吧,如今把这些设置全体放到zookeeper上往,保留在Zookeeper的某个目次节点中,然后一切相干使用程序对这个目次节点举行监听,一旦设置信息产生变更,每一个使用程序就会收到Zookeeper的关照,然后从Zookeeper猎取新的设置信息使用到体系中就好。

<br>
3、集群办理
所谓集群办理无在意两点:是不是无机器加入和到场、推举master。
关于第一点,一切呆板商定在父目次GroupMembers下创立一时目次节点,然后监听父目次节点的子节点变更动静。一旦无机器挂失落,该呆板与zookeeper的毗连断开,其所创立的一时目次节点被删除,一切其他呆板都收到关照:某个兄弟目次被删除,因而,一切人都晓得:它上船了。新呆板到场也是相似,一切呆板收到关照:新兄弟目次到场,highcount又有了。
关于第二点,我们略微改动一下,一切呆板创立一时按次编号目次节点,每次拔取编号最小的呆板作为master就好。

<br>
4、散布式锁
有了zookeeper的分歧性文件体系,锁的成绩变得简单。锁服务能够分为两类,一个是坚持独有,另外一个是把持时序。
关于第一类,我们将zookeeper上的一个znode看做是一把锁,经由过程createznode的体例来完成。一切客户端都往创立/distribute_lock节点,终极乐成创立的谁人客户端也即具有了这把锁。茅厕有言:来也冲冲,往也冲冲,用完删撤除本人创立的distribute_lock节点就开释出锁。
关于第二类,/distribute_lock已事后存在,一切客户端在它上面创立一时按次编号目次节点,和选master一样,编号最小的取得锁,用完删除,顺次便利。
5、行列办理
两品种型的行列:
1、同队伍列,当一个行列的成员都聚齐时,这个行列才可用,不然一向守候一切成员抵达。
2、行列依照FIFO体例举行进队和出队操纵。
第一类,在商定目次下创立一时目次节点,监听节点数量是不是是我们请求的数量。
第二类,和散布式锁服务中的把持时序场景基础道理分歧,出列有编号,出列按编号。
终究懂得完我们能用zookeeper做甚么了,但是作为一个程序员,我们老是想狂热懂得zookeeper是怎样做到这一点的,单点保护一个文件体系没有甚么难度,但是假如是一个集群保护一个文件体系坚持数据的分歧性就十分坚苦了。
4、散布式与数据复制
Zookeeper作为一个集群供应分歧的数据服务,天然,它要在一切呆板间做数据复制。数据复制的优点:
1、容错
一个节点堕落,不致于让全部体系中断事情,其余节点能够接受它的事情;
2、进步体系的扩大才能
把负载散布到多个节点上,大概增添节点来进步体系的负载才能;
3、进步功能
让客户端当地会见就近的节点,进步用户会见速率。
从客户端读写会见的通明度来看,数据复制集群体系分上面两种:
1、写主(WriteMaster)
对数据的修正提交给指定的节点。读无此限定,能够读取任何一个节点。这类情形下客户端必要对读与写举行区分,俗称读写分别;
2、写恣意(WriteAny)
对数据的修正可提交给恣意的节点,跟读一样。这类情形下,客户端对集群节点的脚色与变更通明。
对zookeeper来讲,它接纳的体例是写恣意。经由过程增添呆板,它的读吞吐才能和呼应才能扩大性十分好,而写,跟着呆板的增加吞吐才能一定下落(这也是它创建observer的缘故原由),而呼应才能则取决于详细完成体例,是提早复制坚持终极分歧性,仍是当即复制疾速呼应。
我们存眷的重点仍是在怎样包管数据在集群一切呆板的分歧性,这就触及到paxos算法。
5、数据分歧性与paxos算法
听说Paxos算法的难了解与算法的出名度一样使人仰慕,以是我们先看怎样坚持数据的分歧性,这里有个准绳就是:
在一个散布式数据库体系中,假如各节点的初始形态分歧,每一个节点都实行不异的操纵序列,那末他们最初能失掉一个分歧的形态。
Paxos算法办理的甚么成绩呢,办理的就是包管每一个节点实行不异的操纵序列。好吧,这还不复杂,master保护一个全局写行列,一切写操纵都必需放进这个行列编号,那末不管我们写几个节点,只需写操纵是按编号来的,就可以包管分歧性。没错,就是如许,但是假如master挂了呢。

一旦你有了思想,那你编的程序就有了灵魂,不管是什么语言到了你的手里都会是你的工具而已,他们的价值是能尽快帮助你实现你想要的目标。但是如果你没有了思想,那就像是海里的帆船失去了船帆,是很难到打海的另一边的。

愤怒的大鸟 发表于 2015-1-20 23:48:24

自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。

第二个灵魂 发表于 2015-1-22 12:55:18

如果要向java web方向发展也要吧看看《Java web从入门到精通》学完再到《Struts2.0入门到精通》这样你差不多就把代码给学完了。有兴趣可以看一些设计模块和框架的包等等。

老尸 发表于 2015-1-25 18:06:09

Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。

因胸联盟 发表于 2015-2-3 12:33:08

其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。

只想知道 发表于 2015-2-4 02:09:13

你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。

山那边是海 发表于 2015-2-9 10:53:25

另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。

蒙在股里 发表于 2015-2-21 20:10:09

不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。

飘灵儿 发表于 2015-2-26 08:40:28

任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言

小女巫 发表于 2015-3-4 01:06:17

Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了“一次编译、到处执行”的跨平台特性。

金色的骷髅 发表于 2015-3-11 12:43:41

Jive的资料在很多网站上都有,大家可以找来研究一下。相信你读完代码后,会有脱胎换骨的感觉。遗憾的是Jive从2.5以后就不再无条件的开放源代码,同时有licence限制。不过幸好还有中国一流的Java程序员关注它,外国人不开源了,中国人就不能开源吗?这里向大家推荐一个汉化的Jive版本—J道。Jive(J道版)是由中国Java界大名 鼎鼎的banq在Jive 2.1版本基础上改编而成, 全中文,增加了一些实用功能,如贴图,用户头像和用户资料查询等,而且有一个开发团队在不断升级。你可以访问banq的网站

深爱那片海 发表于 2015-3-18 11:31:54

Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。

分手快乐 发表于 2015-3-25 19:22:15

Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。
页: [1]
查看完整版本: JAVA网页设计Zookeeper与paxos算法仓酷云