第一步:搭建zookeeper服務(wù)器
1.官網(wǎng)下載鏈接:zookeeper下載
2.選擇要下載的版本【3.4.6】并解壓
2.1:?jiǎn)?dòng)、停止Zookeeper
2.查看zkEnv.cmd
3焰轻、增加zoo.cfg文件臭觉,如下
4.zoo.cfg配置文件介紹
修改dataDir屬性值,在上級(jí)目錄下增加data目錄
5.雙擊zkServer.com啟動(dòng)
第二步:創(chuàng)建maven項(xiàng)目dubbodemo
1辱志、新建module項(xiàng)目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相關(guān) -->
<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配置項(xiàng)的名稱蝠筑,可以到DispatcherServlet的父類FrameworkServlet中查找 -->
<param-name>contextConfigLocation</param-name>
<!-- 使用classpath:說明這個(gè)路徑從類路徑的根目錄開始才查找 -->
<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">
<!-- 聲明應(yīng)用的名稱。用于注冊(cè)中心對(duì)我們的項(xiàng)目識(shí)別 -->
<dubbo:application name="dubbodemo_provider" />
<!-- 連接注冊(cè)中心 zookeeper ip 為 zookeeper 所在服務(wù)器的ip地址 -->
<dubbo:registry address="zookeeper://localhost:2181" />
<!-- 注冊(cè) 協(xié)議和port 端口默認(rèn)是20880 -->
<dobbo:protocol name="dubbo" port="20881"/>
<!-- 掃描指定包揩懒,加入@Service注解什乙,它是用來發(fā)布服務(wù)。 -->
<dubbo:annotation package="com.baiddu.service"/>
</beans>
1.4:新建一個(gè)接口跟實(shí)現(xiàn)類
1.5:建好的目錄結(jié)構(gòu)
2旭从、新建module項(xiàng)目dubbodemo_consumer
2.1:配置pom.xml稳强,導(dǎo)入的包一樣,就配置的tomcat端口號(hào)要區(qū)分開
<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>
<!-- 請(qǐng)求端口 -->
<port>8012</port>
<!-- 請(qǐng)求路徑 -->
<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>
<!-- 指定加載的配置文件和悦,通過參數(shù)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">
<!-- 聲明應(yīng)用的名稱退疫。用于注冊(cè)中心對(duì)我們的項(xiàng)目識(shí)別 -->
<dubbo:application name="dubbodemo_consumer" />
<!-- 連接注冊(cè)中心 zookeeper ip 為 zookeeper 所在服務(wù)器的ip地址 -->
<dubbo:registry address="zookeeper://localhost:2181" />
<!-- 掃描的方式暴露接口 -->
<dubbo:annotation package="com.baidu.controller"/>
<!-- 運(yùn)行dubbo不檢查提供者是否提前開啟 建議在開發(fā)階段將check值設(shè)置為false,在生產(chǎn)環(huán)境下改為true -->
<dubbo:consumer check="false"/>
</beans>
2.4:新建一個(gè)接口跟controller
3鸽素、運(yùn)行tomcat檢查是否運(yùn)行成功
先運(yùn)行provider
再運(yùn)行consumer
4褒繁、輸入http://localhost:8012/demo/hello?name=kevin 查看結(jié)果
5、新建module項(xiàng)目dubbodemo_interface
5.1:新建一個(gè)Service接口馍忽,刪除其他的Service接口
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運(yùn)行一下棒坏,可多次運(yùn)行
5.4:輸入http://localhost:8012/demo/hello?name=Jack驗(yàn)證是否成功
6、resources加入log4j.properties文件
### set log levels ###
//debug info warn error , D , E
log4j.rootLogger = debug , stdout
### 輸出到控制臺(tái) ###
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級(jí)別以上的日志
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管理控制臺(tái)坝冕,下載dubbo-admin-2.6.0.war包放到本機(jī)的tomcat的webapps目錄下,啟動(dòng)tomcat解壓
8.測(cè)試集群負(fù)載均衡瓦呼,到dubbodemo目錄下喂窟,復(fù)制一份dubbodemo_provider2的文件夾
8.1、到父工程下pom.xm文件加上
<module>dubbodemo_provider2</module>
8.2央串、到provider2的applicationContext-service.xml更改端口20889
<!-- 注冊(cè) 協(xié)議和port 端口默認(rèn)是20880 -->
<dobbo:protocol name="dubbo" port="20889"/>
8.3磨澡、到provider2的pom.xml文件下更改tomcat端口號(hào)為8019
<port>8019</port>
8.4、更改負(fù)載均衡模式质和,到consumer的controller添加
// 默認(rèn)是randombin
@Reference(loadbalance = "roundrobin")
9稳摄、在provider工程基礎(chǔ)上進(jìn)行編輯
9.1、在pom.xml文件中增加maven坐標(biāo)
<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配置文件中加入數(shù)據(jù)源饲宿、事務(wù)管理器厦酬、開啟事務(wù)注解的相關(guān)配置