下面是一个集群模式下启动Zookeeper服务的例子
这里假定我们运行Zookeeper集群的三台机器名分别为fanbinx1,fanbinx2,fanbinx3
首先是zoocfg配置文件
[plain] view plain copy print
tickTime=2000
dataDir=/tmp/zookeeper/data
clientPort=2181
initLimit=10
syncLimit=5
server1=fanbinx1:2888:3888
server2=fanbinx2:2888:3888
server3=fanbinx3:2888:3888
启动Zookeeper集群服务的类,如下
这个类同时使用同一个zoocfg配置文件来启动Zookeeper服务。
在每台机器上启动Zookeeper服务的时候判断当前机器是不是定义在zoocfg文件里,如果是获取其中的ID号,然后生成myid文件并将ID写入其中。
最后启动Zookeeper服务。
[java] view plain copy print
package myzookeeperstudyserver;
import orgapachecommonsioFileUtils;
import orgapachezookeeperserverServerConfig;
import orgapachezookeeperserverZooKeeperServerMain;
import orgapachezookeeperserverquorumQuorumPeerConfig;
import javaioFile;
import javaioInputStream;
import javanetInetAddress;
import javautilProperties;
import javautilregexMatcher;
import javautilregexPattern;
public class ClusteredZKServer {
public static void main(String[] args) throws Exception {
InputStream is = ClusteredZKServerclassgetResourceAsStream("/my/zookeeperstudy/server/zoocfg");
Properties props = new Properties();
try {
propsload(is);
} finally {
isclose();
}
for (String key : propsstringPropertyNames()) {
Pattern pKey = Patterncompile("^server\\(\\d)");
Pattern pValue = Patterncompile("([\\w|]):\\d:\\d");
Matcher mKey = pKeymatcher(key);
Matcher mValue = pValuematcher(propsgetProperty(key));
if (mKeyfind() && mValuefind()) {
String id = mKeygroup(1);
String host = mValuegroup(1);
String thisHostName = InetAddressgetLocalHost()getHostName();
String thisHostAddress = InetAddressgetLocalHost()getHostAddress();
if (hostequals(thisHostName) || hostequals(thisHostAddress)) {
//Systemoutprintln(new File(propsgetProperty("dataDir"), "myid")getAbsolutePath());
FileUtilswrite(new File(propsgetProperty("dataDir"), "myid"), id);
QuorumPeerConfig quorumConfig = new QuorumPeerConfig();
quorumConfigparseProperties(props);
final ZooKeeperServerMain zkServer = new ZooKeeperServerMain();
final ServerConfig config = new ServerConfig();
configreadFrom(quorumConfig);
zkServerrunFromConfig(config);
}
}
}
}
}
客户端测试代码如下,这里可以修改hostname为集群中的任意一台机器
[java] view plain copy print
package myzookeeperstudyserver;
import orgapachezookeeper;
import javautilList;
public class Client {
public static void main(String[] args) throws Exception {
ZooKeeper zk = new ZooKeeper("fanbinx1:2181,fanbinx2:2181,fanbinx3:2181", 10000,
new Watcher() {
public void process(WatchedEvent event) {
Systemoutprintln("event: " + eventgetType());
}
});
Systemoutprintln(zkgetState());
zkcreate("/myApps", "myAppsData"getBytes(), ZooDefsIdsOPEN_ACL_UNSAFE, CreateModePERSISTENT);
zkcreate("/myApps/App1", "App1Data"getBytes(), ZooDefsIdsOPEN_ACL_UNSAFE, CreateModePERSISTENT);
zkcreate("/myApps/App2", "App2Data"getBytes(), ZooDefsIdsOPEN_ACL_UNSAFE, CreateModePERSISTENT);
zkcreate("/myApps/App3", ""getBytes(), ZooDefsIdsOPEN_ACL_UNSAFE, CreateModePERSISTENT);
zksetData("/myApps/App3","App3Data"getBytes(), -1);
Systemoutprintln(zkexists("/myApps", true));
Systemoutprintln(new String(zkgetData("/myApps", true, null)));
List<String> children = zkgetChildren("/myApps", true);
for (String child : children) {
Systemoutprintln(new String(zkgetData("/myApps/" + child, true, null)));
zkdelete("/myApps/" + child,-1);
}
zkdelete("/myApps",-1);
zkclose();
}
}
测试
在集群中的各个机器上分别运行ClusteredZKServer类来启动Zookeeper服务。
然后在任意一台机器上运行Client类来连接Zookeeper并 *** 作数据。
张小喜告别996 实现高效编程 减少开发压力 开启Java高效编程之门(完整版高清视频)百度网盘
aizj 复制这段内容后打开百度网盘手机App, *** 作更方便哦
若资源有问题欢迎追问~
并发量和很多都有关系,比如代码质量,硬件资源,数据库等。一般提升并发量可以从下面几个方面入手
多应用服务器-集群部署
F5、负载均衡
缓存/数据库:读写分离,切片
等
PHP:
PHP(外文名:PHP:Hypertext,中文名:“超文本预处理器”)是一种通用开源脚本语言。语法吸收了C语言、Java和Perl的特点,利于学习,使用广泛,
主要适用于Web开发领域。PHP独特的语法混合了C、Java、Perl以及PHP自创的语法。它可以比CGI或者Perl更快速地执行动态网页。用PHP做出的动态页面与其他的编程语言相比,
PHP是将程序嵌入到HTML(标准通用标记语言下的一个应用)文档中去执行,执行效率比完全生成HTML标记的CGI要高许多;PHP还可以执行编译后代码,编译可以达到加密和优化代码运行,使代码运行更快。
PHP的特性:
1、PHP独特的语法混合了C、Java、Perl以及PHP自创新的语法。
2、PHP可以比CGI或者Perl更快速的执行动态网页——动态页面方面,与其他的编程语言相比。
PHP是将程序嵌入到HTML文档中去执行,执行效率比完全生成htmL标记的CGI要高许多;
PHP具有非常强大的功能,所有的CGI的功能PHP都能实现。
3、PHP支持几乎所有流行的数据库以及 *** 作系统。
4、最重要的是PHP可以用C、C进行程序的扩展!
ThinkPHP是一个免费开源的,快速、简单的面向对象的轻量级PHP开发框架,创立于2006年初,遵循Apache2开源协议发布,是为了敏捷WEB应用开发和简化企业应用开发而诞生的。ThinkPHP从诞生以来一直秉承简洁实用的设计原则,
在保持出色的性能和至简的代码的同时,也注重易用性。并且拥有众多的原创功能和特性,在社区团队的积极参与下,在易用性、扩展性和性能方面不断优化和改进,已经成长为国内最领先和最具影响力的WEB应用开发框架,众多的典型案例确保可以稳定用于商业以及门户级的开发。
PHP安全:
PHP其实不过是Web服务器的一个模块功能,所以首先要保证Web服务器的安全。当然Web服务器要安全又必须是先保证系统安全,这样就扯远了,无穷无尽。常见的web安全漏洞有:注入攻击,跨站攻击,服务器自身漏洞等。
PHP的优点学习过程和方法:
PHP的语法类似于C,Perl,ASP或者JSP。对于那些对上述之一的语言较熟悉的人来说,PHP太简单了。相反的,如果你对PHP了解较多,那么你对于其他几种语言的学习都很简单了。你只需要很短的时间内将PHP的核心语言特点全部掌握,你可能已经非常了解HTML,
甚至你已经知道怎样用编辑设计软件或者手工来制作好看的WEB站点。由于PHP代码能够无障碍的添加进你的站点,在你设计和维护站点的同时,你可以很轻松的加入PHP使得你的站点更加具有动态特性。
JSP:
JSP全名为JavaServerPages,中文名叫java服务器页面,其根本是一个简化的Servlet设计,它[1]是由Sun公司倡导、许多公司参与一起建立的一种动态网页技术标准。JSP技术有点类似ASP技术,
它是在传统的网页HTML(标准通用标记语言的子集)文件(htm,html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件,后缀名为(jsp)。用JSP开发的Web应用是跨平台的,既能在Linux下运行,
也能在其他 *** 作系统上运行。它实现了Html语法中的java扩展(以形式)。JSP与Servlet一样,是在服务器端执行的。通常返回给客户端的就是一个HTML文本,因此客户端只要有浏览器就能浏览。
JSP技术使用Java编程语言编写类XML的tags和scriptlets,来封装产生动态网页的处理逻辑。网页还能通过tags和scriptlets访问存在于服务端的资源的应用逻辑。JSP将网页逻辑与网页设计的显示分离,
支持可重用的基于组件的设计,使基于Web的应用程序的开发变得迅速和容易。JSP(JavaServerPages)是一种动态页面技术,它的主要目的是将表示逻辑从Servlet中分离出来。
JavaServlet是JSP的技术基础,而且大型的Web应用程序的开发需要JavaServlet和JSP配合才能完成。JSP具备了Java技术的简单易用,完全的面向对象,具有平台无关性且安全可靠,主要面向因特网的所有特点。
JSP将内容的生成和显示进行分离:
用JSP技术,Web页面开发人员可以使用HTML或者XML标识来设计和格式化最终页面,并使用JSP标识或者小脚本来生成页面上的动态内容(内容是根据请求变化的,例如请求账户信息或者特定的一瓶酒的价格等)。
生成内容的逻辑被封装在标识和JavaBeans组件中,并且捆绑在脚本中,所有的脚本在服务器端运行。由于核心逻辑被封装在标识和JavaBeans中,所以Web管理人员和页面设计者,能够编辑和使用JSP页面,而不影响内容的生成。
在服务器端,JSP引擎解释JSP标识和脚本,生成所请求的内容(例如,通过访问JavaBeans组件,使用JDBC技术访问数据库或者包含文件),并且将结果以HTML(或者XML)页面的形式发送回浏览器。这既有助于作者保护自己的代码,又能保证任何基于HTML的Web浏览器的完全可用性。
几乎所有平台都支持Java,JSPJavaBeans几乎可以在所有平台下通行无阻。从一个平台移植到另外一个平台,JSP和JavaBeans甚至不用重新编译,因为Java字节码都是标准的与平台无关的。
JSP语音特点:
优点:
1、一次编写,到处运行。除了系统之外,代码不用做任何更改。
2、系统的多平台支持。基本上可以在所有平台上的任意环境中开发,在任意环境中进行系统部署,在任意环境中扩展。相比ASP的局限性JSP的优势是显而易见的。
3、强大的可伸缩性。从只有一个小的Jar文件就可以运行Servlet/JSP,到由多台服务器进行集群和负载均衡,到多台Application进行事务处理,消息处理,一台服务器到无数台服务器,Java显示了一个巨大的生命力。
4、多样化和功能强大的开发工具支持。这一点与ASP很像,Java已经有了许多非常优秀的开发工具,而且许多可以免费得到,并且其中许多已经可以顺利的运行于多种平台之下。
5、支持服务器端组件。web应用需要强大的服务器端组件来支持,开发人员需要利用其他工具设计实现复杂功能的组件供web页面调用,以增强系统性能。JSP可以使用成熟的JAVABEANS组件来实现复杂商务功能。
缺点:
1、与ASP也一样,Java的一些优势正是它致命的问题所在。正是由于为了跨平台的功能,为了极度的伸缩能力,所以极大的增加了产品的复杂性。
2、Java的运行速度是用class常驻内存来完成的,所以它在一些情况下所使用的内存比起用户数量来说确实是“最低性能价格比”了。
扩展资料:
PHP认证级别:
PHP课程由初级(IFE)、中级(IPE)和高级(IAE)三个部分。
1、IFE即IndexFront-endEngineer的缩写,指数前端工程师的意思。
2、IPE即IndexPHPEngineer的缩写,意思是指数PHP工程师。
3、IAE即Index/advancedengineer的缩写,意思是:指数高级/架构工程师。
Java是IT领域的常青树做为一门编程语言,Java的应用场景广泛,决定了其在实际当中有着很多的应用。而且,涉及的到各类IT项目的开发,注定少不了Java相关的开发人员。目前,因为Java行业的从业者过多,竞争十分激烈,且Java开发在3/4线城市就业薪资并不高,一二线城市的就业薪资也在不断的降低,当然,企业对于Java从业者的要求也在不断的提高。大数据行业人才稀缺作为一个新兴的行业,大数据领域内的人才非常的稀缺,据相关数据显示,未来几年内大数据人才的需求量将达到200万左右,这就决定了未来大数据的人才必定非常的抢手。大数据行业的薪资水平大数据行业的薪资如今已经开始向IT领域的Top1进军,整个行业的平均薪资已经达到了17k左右,而且,随着大数据应用场景的不断增多,未来大数据创造的价值将会越来越大,与之对应的大数据人才的薪资水平将会再次登上一个新的台阶。大数据行业的未来大数据作为一个新兴的大数据行业,其发展前景非常的巨大,而且,其不仅仅是在与AI、云计算对接的很紧密,与其他工业、农业、商业,甚至是第三产业、智慧城市的规划等都有着深刻的对接,而这,就必将会给从业者带来更多的就业机会。
大数据和Java的区别:1架构层面:
javaee:三层架构 表现层(web)业务层(service)持久层(dao)
大数据:围绕数据 数据采集 --数据存储–数据计算(分析)–数据展示
2技术层面:
javaee:成熟 解决方案多 技术点集中
大数据:相对年轻 迭代更新快 解决方案相对少 技术相当繁琐 杂 /碎
3开发层面:
javaee:代码量很大 偏向业务 运维等任务较少 固定搭配 习惯用法较多
大数据:代码量很少,偏向技术(原理和知识) 运维任务略多(集群服务器等)sql 数据分析 类sql hql
4市场层面:
javaee:很成熟 有自己的行业规范 如日中天
大数据:市场起步阶段 规范有待健全 朝阳产业(结合人工智能和机器学习等)以Tomcat6 jre6 Ubuntu为例
第一、集群中所有的服务器要时间同步
不同组内服务器的时间差不但影响session过期判断,时间差过大时,根本就无法建立集群。Linux下同步时间通常采用ntp协议。可以在每个服务器上增加自动运行脚本文件,每天时间服务器自动同步,如/etc/crondaily下增加脚本,内容为
Sh代码
/usr/sbin/ntpdate -s timenistgov
第二、修改需要同步的应用web应用的配置文件webxml,增加应用的分步标识,即在web-app结点下增加:
Xml代码
<distributable/>
第三、为实现会话自动在组内服务器迁移,所有放在session里的对象都要实现javaioSerializable接口
第四、打开tomcat下serverxml的注释,这是一种最简单的集群配置方式,适合组内服务器数量不多的情况(少于10台)
Xml代码
<Cluster className="orgapachecatalinahatcpSimpleTcpCluster"/>
第五、各台服务器上,通过javanetInetAddressgetLocalHost()getHostAddress()一定能够获得非127001的ip地址,用来收听集群消息。
可用以下代码进行测试
Java代码
public class test {
public static void main(String[] args) throws Exception {
Systemoutprintln("ip:"+javanetInetAddressgetLocalHost()getHostAddress());
}
}
将上面的代码保存成testjava
在相应的机器上执行
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)