内容简介:每日一博 | Dubbo 与 Zookeeper、SpringMVC 整合和使用
介绍就不过多的说明。可以参考http://blog.csdn.net/congcong68/article/details/41113239博客里面写的相关介绍。
项目码云GIT地址:http://git.oschina.net/xshuai/dubbo
| 开发工具 | MyEclipse 10.7 |
| JDK | 1.7 |
| 容器 | Tomcat 8(运行dubbo) |
| zookeeper版本 | zookeeper-3.4.6 |
| dubbo | dubbo-admin-2.5.3 |
dubbo-admin-2.5.3下载地址:http://pan.baidu.com/s/1bozCMzP
zookeeper下载地址:http://www-eu.apache.org/dist/zookeeper/zookeeper-3.4.6/
-
Dubbo+Zookeeper 的下载安装配置启动
1.dubbo-admin-2.5.3下载完成后。放在webapps文件夹下面。先把默认的tomcat的ROOT项目备份后移除。将dubbo-admin-2.5.3.war改成ROOT.war 备用
2.zookeeper下载后解压安装即可。windows安装完成后如下图
进入到conf里面,会看到zoo_sample.cfg文件。复制一个修改为zoo.cfg,修改相关配置内容
# The number of milliseconds of each tick tickTime=2000 # The number of ticks that the initial # synchronization phase can take initLimit=10 # The number of ticks that can pass between # sending a request and getting an acknowledgement syncLimit=5 # the directory where the snapshot is stored. # do not use /tmp for storage, /tmp here is just # example sakes. dataDir=/tmp/zookeeper # the port at which the clients will connect #这块是设置zookeeper的端口。默认2181 clientPort=2181 # the maximum number of client connections. # increase this if you need to handle more clients #maxClientCnxns=60 # # Be sure to read the maintenance section of the # administrator guide before turning on autopurge. # # http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance # # The number of snapshots to retain in dataDir #autopurge.snapRetainCount=3 # Purge task interval in hours # Set to "0" to disable auto purge feature #autopurge.purgeInterval=1
到bin文件夹下面。启动zookeeper,windows 点击zkServer.cmd即可,启动成功如下图
3.可以启动tomcat了。这样直接访问 就能看到dubbo的页面。要不然dubbo启动会报错。第一次入门的话建议就用默认的端口配置即可。默认用户 root 密码 root
登录成功以后看到如下页面
以上就是dubbo+zookeeper的配置和启动。下面开始 Java 代码的编写
-
整合Dubbo+Zookeeper+SpringMVC
1.创建myDubbo项目为主项目,结构图如下 myC P S后续才创建,刚开始是没有的。
POM.XML配置如下
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com</groupId>
<artifactId>mydubbo</artifactId>
注意这里。打包为POM,分布式系统的第一步
<packaging>pom</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>mydubbo</name>
<url>http://maven.apache.org</url>
<properties>
<spring.version>3.2.4.RELEASE</spring.version>
</properties>
<dependencies>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>2.5.3</version>
<exclusions>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring</artifactId>
</exclusion>
</exclusions>
</dependency>
<!--dubbo注册中心-->
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.4.6</version>
</dependency>
<!--zookeeper客户端-->
<dependency>
<groupId>com.github.sgroschupf</groupId>
<artifactId>zkclient</artifactId>
<version>0.1</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
</dependencies>
<build>
<finalName>mydubbo</finalName>
</build>
创建子项目后自动会加载。刚开始是没有的
<modules>
<module>myService</module>
<module>myProvider</module>
<module>myConsumer</module>
</modules>
</project>
2.创建服务提供商子项目,MyEclipse操作如下图示意 对mydubbo项目鼠标右键new或者maven插件直接创建maven module项目,填写子项目名称。有的如果不选种Create a simple project 自定义创建会报错。选择则不会。根据实际情况来确定是否选择
3.创建3个子项目分别为 myService(服务商(接口),模块提供方) myProvider(供应者,给dubbo zookeeper注册暴露接口) myConsumer
-
myService 项目相关配置
-
pom配置
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <artifactId>mydubbo</artifactId> <groupId>com</groupId> <version>0.0.1-SNAPSHOT</version> </parent> <name>myService</name> <artifactId>myService</artifactId> <packaging>jar</packaging> </project> -
新建一个接口类
package com.xiaoshuai; public interface HelloService { public String speakHello(String name); } -
以上工作完成后,进行maven install
-
myProvider项目相关配置
-
pom配置
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <artifactId>mydubbo</artifactId> <groupId>com</groupId> <version>0.0.1-SNAPSHOT</version> </parent> <artifactId>myProvider</artifactId> 引用接口服务项目 子项目maven install 为jar <dependencies> <dependency> <groupId>com</groupId> <artifactId>myService</artifactId> <version>0.0.1-SNAPSHOT</version> </dependency> </dependencies> </project> -
实现接口服务者
package com.xiaoshuai.impl; import com.xiaoshuai.HelloService; public class HelloServiceImpl implements HelloService{ public String speakHello(String name) { return "你好:"+name+"欢迎查阅小帅丶博客"; } } -
将实现类接口类暴露给dubbo+zookeeper 在myProvider创建provider.xml 内容如下
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd"> <!-- 提供方应用信息,用于计算依赖关系 --> <dubbo:application name="hello-provider" /> <!-- 使用multicast广播注册中心暴露服务地址 --> <dubbo:registry address="zookeeper://127.0.0.1:2181" /> <!-- 用dubbo协议在20880端口暴露服务 --> <dubbo:protocol name="dubbo" port="20880" /> <!-- 声明需要暴露的服务接口 --> <dubbo:service interface="com.xiaoshuai.HelloService" ref="helloService" /> <!-- 和本地bean一样实现服务 --> <bean id="helloService" class="com.xiaoshuai.impl.HelloServiceImpl" /> </beans> -
需要创建一个Java类写个方法 去 加载provider.xml 注册到dubbo + zookeeper
package com.xiaoshuai.impl; import org.springframework.context.support.ClassPathXmlApplicationContext; public class ProviderServer { public static void main(String[] args){ try { ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("provider.xml"); context.start(); System.in.read(); } catch (Exception e) { e.printStackTrace(); } } } -
可以运行。启动该提供者服务,编写消费者。
-
可以看到dubbo 提供者服务已经注册
-
myConsumer 项目相关配置
-
pom配置
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <artifactId>mydubbo</artifactId> <groupId>com</groupId> <version>0.0.1-SNAPSHOT</version> </parent> <artifactId>myConsumer</artifactId> <dependencies> <dependency> <groupId>com</groupId> <artifactId>myService</artifactId> <version>0.0.1-SNAPSHOT</version> </dependency> </dependencies> </project> -
消费者进行订阅provider的服务,也就是需要去zookeeper读取加载服务,那就需要创建一个consumer.xml去加载zookeeper
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd"> <!-- 消费方应用名,用于计算依赖关系,不是匹配条件,不要与提供方一样 --> <dubbo:application name="hello-consumer" /> <!-- 使用multicast广播注册中心暴露发现服务地址 --> <dubbo:registry address="zookeeper://127.0.0.1:2181" /> <!-- 生成远程服务代理,可以和本地bean一样使用demoService --> <dubbo:reference id="helloService" interface="com.xiaoshuai.HelloService" /> </beans> -
创建一个消费者方法,进行调用ConsumerClient
package com.xiaoshuai; import org.springframework.context.support.ClassPathXmlApplicationContext; public class ConsumerClient { public static void main(String[] args) { ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("consumer.xml"); HelloService helloService = (HelloService) context.getBean("helloService"); String result = helloService.speakHello("xiaoshuai"); System.out.println(result); } } -
运行该方法输出一下内容
-
接下来看dubbo中心有什么内容。
-
看看消费者里面显示些什么内容
-
详细消费者信息如图所示
-
以上一个简单的分布式的Demo就已经完结
-
新手入门。有问题的地方可以一起交流哦。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Spring Into HTML and CSS
Molly E. Holzschlag / Addison-Wesley Professional / 2005-5-2 / USD 34.99
The fastest route to true HTML/CSS mastery! Need to build a web site? Or update one? Or just create some effective new web content? Maybe you just need to update your skills, do the job better. Welco......一起来看看 《Spring Into HTML and CSS》 这本书的介绍吧!