此文章不论述dubbo,zookeeper 的作用,相关问题请谷歌或百度,都有详细回答。
一、首先是使用的开发环境,插件版本等:
系统:windows7
开发工具:Eclipse-4.5.0,此版本支持JDK1.7。最新版本的Eclipse已不支持1.7
其他管理工具等:Maven-3.1.1,dubbo-2.5.8,zookeeper-3.4.9
二、搭建步骤:
1)下载 zookeeper 解压包,conf目录下有如下文件,打开zoo.cfg,里头有
(1)【tickTime】 基本事件单元,以毫秒为单位。它用来控制心跳和超时,默认情况下最小的会话超时时间为两倍的。
(2)【initLimit】当已经超过10个心跳的时间(也就是 tickTime)长度后 Zookeeper服务器还没有收到客户端的返回信息,那么表明这个客户端连接失败。总的时间长度就是 10*2000=20 秒。
(3)【syncLimit】这个配置项标识 Leader 与 Follower 之间发送消息,请求和应答时间长度,最长不能超过多少个 tickTime 的时间长度,总的时间长度就是 5*2000=4 秒。
(4)【dataDir】存放内存数据库快照的位置。
(5)【clientPort】client连接的端口号。
2)下载dubbo管理工具,可以从Github下载:https://github.com/alibaba/dubbo
将他解压,里头有dubbo-admin,我们需要进行打war包。
进入cmd,dubbo-admin 根目录,执行 mvn package -Dmaven.skip.test=true
当出现以下界面时,证明已经成功打好包(如果打不成功,可以下载我的 进入下载dubbo-admin.war包)
可以发现,dubbo-admin根目录多出一个target文件,里头有个 dubbo-admin-2.5.8.war,将它拷出放到tomcat的webapps里,因为zookeeper默认使用的是8080,为避免冲突,tomcat的 conf\server.xml 文件,把启动端口改成8090(不会起冲突的端口都可以)。
紧接着运行tomcat,war包将自动解压,为避免覆盖。解压完毕时,停掉tomcat,把war包删掉,此时进入WEB-INF目录,dubbo.properties文件里配置信息:
dubbo.registry.address=zookeeper://127.0.0.1:2181 dubbo.admin.root.password=root dubbo.admin.guest.password=guest
回到zookeeper文件夹,找到bin目录下的zkServer,双击将它启动。启动完毕,再启动刚刚配置的tomcat。浏览器输入http://localhost:8090/dubbo-admin-2.5.8/,输入账号root,密码root。进入页面如下:
3)启动eclipse,既然使用到dubbo,那么我们来新建【消费者】,【提供者】以及中间接口jar。为何使用jar呢?项目之间统一代码版本是有利于维护的。
右键项目Export,选择JAR file --> Next,一般放在桌面就行了,待会要用。如果是企业使用的话,应该都在使用Nexus搭建似有库存了。附参考链接http://www.jianshu.com/p/9740778b154f
4)提供者和消费者,网上例子比较多。dubbo官网也有,便不提供太多了。dubbo官网提供的是以multicast 为注册中心的,改为zookeeper 即可。
xml的配置改成:<dubbo:registry address="zookeeper://127.0.0.1:2181" />,可能dubbo:registry 会出现报红的情况(把她搞红了
)。解决办法:
在你下载的dubbo管理中心里,有个dubbo.xsd
将它拷到项目里也可以,eclipse-->Window-->Preferences-->XML-->XML Catalog里配置下dubbo.xsd,workspace选好本地dubbo.xsd路径。
配置好,刷新下项目,右键xml配置文件,选中Validate,应该就不红了。
如果dubbo.xsd 里 <xsd:element ref="beans:property" minOccurs="0" maxOccurs="unbounded"/> 这句报错,就先注释了吧,暂时没发现出什么问题。
其余的,应该没什么难题,有难题一个个处理,终会解决的。
以下maven里的spring,dubbo,zookeeper 等jar包版本:
<properties> <org.springframework.version>4.3.7.RELEASE</org.springframework.version> </properties> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>dubbo</artifactId> <version>2.5.8</version> <exclusions> <exclusion> <artifactId>spring</artifactId> <groupId>org.springframework</groupId> </exclusion> </exclusions> </dependency> <dependency> <groupId>io.netty</groupId> <artifactId>netty</artifactId> <version>3.6.10.Final</version> </dependency> <dependency> <groupId>com.101tec</groupId> <artifactId>zkclient</artifactId> <version>0.10</version> </dependency> <dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> <version>3.4.9</version> <exclusions> <exclusion> <groupId>log4j</groupId> <artifactId>log4j</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.16</version> </dependency> <!-- spring start --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aop</artifactId> <version>${org.springframework.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aspects</artifactId> <version>${org.springframework.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>${org.springframework.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${org.springframework.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> <version>${org.springframework.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>${org.springframework.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-expression</artifactId> <version>${org.springframework.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-instrument</artifactId> <version>${org.springframework.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-instrument-tomcat</artifactId> <version>${org.springframework.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>${org.springframework.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jms</artifactId> <version>${org.springframework.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-messaging</artifactId> <version>${org.springframework.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-orm</artifactId> <version>${org.springframework.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-oxm</artifactId> <version>${org.springframework.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>${org.springframework.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-tx</artifactId> <version>${org.springframework.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>${org.springframework.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>${org.springframework.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc-portlet</artifactId> <version>${org.springframework.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-websocket</artifactId> <version>${org.springframework.version}</version> </dependency> <!-- spring end --> </dependencies> <build> <finalName>mavenTest</finalName> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>2.3.2</version> <configuration> <source>1.7</source> <target>1.7</target> </configuration> </plugin> </plugins> </build>