第一步:搭建zookeeper服务器
1.官网下载链接:zookeeper下载
2.选择要下载的版本【3.4.6】并解压
2.1:启动、停止Zookeeper
![](https://img.haomeiwen.com/i2890166/167c852d4b037d6b.png)
![](https://img.haomeiwen.com/i2890166/6415a9bb4818dcb2.png)
2.查看zkEnv.cmd
![](https://img.haomeiwen.com/i2890166/8ad1829949fdd159.png)
3、增加zoo.cfg文件,如下
![](https://img.haomeiwen.com/i2890166/97372332a43c907f.png)
4.zoo.cfg配置文件介绍
修改dataDir属性值,在上级目录下增加data目录
![](https://img.haomeiwen.com/i2890166/7433b53ce01309e9.png)
![](https://img.haomeiwen.com/i2890166/4296e24243d3b052.png)
5.双击zkServer.com启动
![](https://img.haomeiwen.com/i2890166/21ad7ac578704804.png)
第二步:创建maven项目dubbodemo
1、新建module项目dubbodemo_provider
1.1:配置pom.xml
<packaging>war</packaging>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<spring.version>5.0.5.RELEASE</spring.version>
</properties>
<dependencies>
<!-- Spring -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jms</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>${spring.version}</version>
</dependency>
<!-- dubbo相关 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>2.6.0</version>
</dependency>
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.4.7</version>
</dependency>
<dependency>
<groupId>com.github.sgroschupf</groupId>
<artifactId>zkclient</artifactId>
<version>0.1</version>
</dependency>
<dependency>
<groupId>javassist</groupId>
<artifactId>javassist</artifactId>
<version>3.12.1.GA</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.47</version>
</dependency>
</dependencies>
<build>
<plugins>
<!-- java编译插件 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.2</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<configuration>
<port>8011</port>
<path>/</path>
</configuration>
</plugin>
</plugins>
</build>
1.2:配置web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5">
<context-param>
<!-- 如果不记得contextConfigLocation配置项的名称,可以到DispatcherServlet的父类FrameworkServlet中查找 -->
<param-name>contextConfigLocation</param-name>
<!-- 使用classpath:说明这个路径从类路径的根目录开始才查找 -->
<param-value>classpath:applicationContext-service.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
</web-app>
1.3:配置applicationContext-service.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:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
xmlns:dobbo="http://code.alibabatech.com/schema/dubbo"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
https://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/mvc
https://www.springframework.org/schema/mvc/spring-mvc.xsd
http://code.alibabatech.com/schema/dubbo
http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
<!-- 声明应用的名称。用于注册中心对我们的项目识别 -->
<dubbo:application name="dubbodemo_provider" />
<!-- 连接注册中心 zookeeper ip 为 zookeeper 所在服务器的ip地址 -->
<dubbo:registry address="zookeeper://localhost:2181" />
<!-- 注册 协议和port 端口默认是20880 -->
<dobbo:protocol name="dubbo" port="20881"/>
<!-- 扫描指定包,加入@Service注解,它是用来发布服务。 -->
<dubbo:annotation package="com.baiddu.service"/>
</beans>
1.4:新建一个接口跟实现类
![](https://img.haomeiwen.com/i2890166/492c6cbd0dfaa991.png)
1.5:建好的目录结构
![](https://img.haomeiwen.com/i2890166/14adfd7b93287560.png)
2、新建module项目dubbodemo_consumer
2.1:配置pom.xml,导入的包一样,就配置的tomcat端口号要区分开
<build>
<plugins>
<!-- java编译插件 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.2</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<configuration>
<!-- 请求端口 -->
<port>8012</port>
<!-- 请求路径 -->
<path>/</path>
</configuration>
</plugin>
</plugins>
</build>
2.2:配置web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5">
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- 指定加载的配置文件,通过参数contextConfigLocation加载 -->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext-web.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
2.3:配置applicationContext-web.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:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd
http://code.alibabatech.com/schema/dubbo
http://code.alibabatech.com/schema/dubbo/dubbo.xsd
http://www.springframework.org/schema/context
https://www.springframework.org/schema/context/spring-context.xsd">
<!-- 声明应用的名称。用于注册中心对我们的项目识别 -->
<dubbo:application name="dubbodemo_consumer" />
<!-- 连接注册中心 zookeeper ip 为 zookeeper 所在服务器的ip地址 -->
<dubbo:registry address="zookeeper://localhost:2181" />
<!-- 扫描的方式暴露接口 -->
<dubbo:annotation package="com.baidu.controller"/>
<!-- 运行dubbo不检查提供者是否提前开启 建议在开发阶段将check值设置为false,在生产环境下改为true -->
<dubbo:consumer check="false"/>
</beans>
2.4:新建一个接口跟controller
![](https://img.haomeiwen.com/i2890166/0131011ef43892ea.png)
3、运行tomcat检查是否运行成功
先运行provider
![](https://img.haomeiwen.com/i2890166/72832281e6349a93.png)
再运行consumer
![](https://img.haomeiwen.com/i2890166/bbf34e5a2d9e8d41.png)
4、输入http://localhost:8012/demo/hello?name=kevin 查看结果
![](https://img.haomeiwen.com/i2890166/0bdca329d212778b.png)
5、新建module项目dubbodemo_interface
5.1:新建一个Service接口,删除其他的Service接口
![](https://img.haomeiwen.com/i2890166/c728ce6a9f067c68.png)
5.2:到provider的pom.xml跟consumer的pom.xml插入interface的依赖
<dependency>
<groupId>com.baidu</groupId>
<version>1.0-SNAPSHOT</version>
<artifactId>dubbodemo_interface</artifactId>
</dependency>
5.3:找到maven视图上的dubbodemo下Lifecycle的install运行一下,可多次运行
![](https://img.haomeiwen.com/i2890166/833fb813d6729aba.png)
5.4:输入http://localhost:8012/demo/hello?name=Jack验证是否成功
![](https://img.haomeiwen.com/i2890166/67efd911b9c2032c.png)
6、resources加入log4j.properties文件
### set log levels ###
//debug info warn error , D , E
log4j.rootLogger = debug , stdout
### 输出到控制台 ###
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.err
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = %d{ABSOLUTE} %5p %c{ 1 }:%L - %m%n
### 输出到日志文件 ###
log4j.appender.D = org.apache.log4j.FileAppender
log4j.appender.D.File = logs/log.log
log4j.appender.D.Append = true
log4j.appender.D.Threshold = DEBUG ## 输出DEBUG级别以上的日志
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n
7、安装dubbo管理控制台,下载dubbo-admin-2.6.0.war包放到本机的tomcat的webapps目录下,启动tomcat解压
![](https://img.haomeiwen.com/i2890166/cfc6206dd6bef7df.png)
8.测试集群负载均衡,到dubbodemo目录下,复制一份dubbodemo_provider2的文件夹
8.1、到父工程下pom.xm文件加上
<module>dubbodemo_provider2</module>
8.2、到provider2的applicationContext-service.xml更改端口20889
<!-- 注册 协议和port 端口默认是20880 -->
<dobbo:protocol name="dubbo" port="20889"/>
8.3、到provider2的pom.xml文件下更改tomcat端口号为8019
<port>8019</port>
8.4、更改负载均衡模式,到consumer的controller添加
// 默认是randombin
@Reference(loadbalance = "roundrobin")
9、在provider工程基础上进行编辑
9.1、在pom.xml文件中增加maven坐标
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.6</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>sqljdbc4</artifactId>
<version>4.0</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.3</version>
</dependency>
9.2在applicationContext-service.xml配置文件中加入数据源、事务管理器、开启事务注解的相关配置
网友评论