一、zookeeper環境的安裝
下載地址:https://downloads.apache.org/zookeeper/zookeeper-3.6.1/
下載成功放到/usr/local/src ,執行以下命令
tar -zxvf apache-zookeeper-3.6.1-bin.tar.gz mv apache-zookeeper-3.6.1-bin.tar.gz zookeeper
配置環境變量:在/etc/profile最后添加(zookeeper 安裝路徑在/usr/local/src/zookeeper)
export ZOO_HOME=/usr/local/src/zookeeper
export PATH=$ZOO_HOME/bin:$PATH
切換到/usr/local/src/zookeeper/conf目錄下:執行以下命令
cp zoo_sample.cfg zoo.cfg
修改zoo.cfg文件(要在zookeeper目錄創建data log文件夾),修改對應標紅位置
最后啟動zookeeper,切換到bin目錄
./zkServer.sh start
二、SpringBoot模塊
1、首先創建父工程,主要是引入一些jar
創建Maven Project
下一步
pom文件(部分jar用不到本demo):
<!--springBoot動態的引入springMVC全部的配置 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>1.5.4.RELEASE</version>
</dependency>
<!-- 引入aop支持 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
<!--引入測試類 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!--添加屬性注入依賴 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
<!--支持熱部署 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
<!--引入插件lombok 自動的set/get/構造方法插件 -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<!--引入數據庫驅動 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.11</version>
<scope>runtime</scope>
</dependency>
<!--引入druid數據源 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.12</version>
</dependency>
<!--spring整合mybatis-plus -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.2.0</version>
</dependency>
<!--springBoot整合JSP添加依賴 -->
<!--servlet依賴 注意與eureka整合時的問題 -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
</dependency>
<!--jstl依賴 -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>
<!--使jsp頁面生效 -->
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
</dependency>
<!--添加httpClient jar包 -->
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
</dependency>
<!--引入dubbo配置 -->
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>0.2.0</version>
</dependency>
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.4.13</version>
<type>pom</type>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
</exclusions>
</dependency>
2、創建生產者、消費者共用的接口
(1)在父工程dubbo-parent右鍵創建maven moudle工程
下一步:
標紅部分說明是web項目
創建成功后目錄結構如下:
3、創建生產者dubbo-provide
注意此項目要把依賴dubbo-common,因為要實現其接口(pom.xml文件要引入dubbo-common依賴)
<?xml version="1.0"?> <project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>dubbo.parent</groupId> <artifactId>dubbo-parent</artifactId> <version>0.0.1-SNAPSHOT</version> </parent> <groupId>dubbo.parent</groupId> <artifactId>dubbo-provide</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>war</packaging> <name>dubbo-provide Maven Webapp</name> <url>http://maven.apache.org</url> <dependencies> <dependency> <groupId>dubbo.parent</groupId> <artifactId>dubbo-common</artifactId> <version>0.0.1-SNAPSHOT</version> <type>jar</type> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> </dependencies> <build> <finalName>dubbo-provide</finalName> </build> </project>
(1)項目創建同dubbo-common一樣
結構如下:
(2)application.properties文件內容
#編輯dubbo配置 dubbo.application.name=provide dubbo.registry.address=zookeeper://127.0.0.1:2181 dubbo.registry.protocol=zookeeper dubbo.protocol.name:dubbo dubbo.protocol.prot:20880 server.port=8090
(3)接口實現LoginServiceImpl(注意@service注解是dubbo框架的)
import com.alibaba.dubbo.config.annotation.Service; import com.service.LoginService; @Service public class LoginServiceImpl implements LoginService{ @Override public String login() { return "Login Success"; } }
(4)啟動類
使用@EnableDubbo、@DubboComponentScan(剛開始在配置文件配置報掃描一直不生效,就切換此方法)
import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; import com.alibaba.dubbo.config.spring.context.annotation.DubboComponentScan; import com.alibaba.dubbo.config.spring.context.annotation.EnableDubbo; @EnableDubbo @DubboComponentScan @SpringBootApplication(exclude= {DataSourceAutoConfiguration.class}) public class ProvideApplication { public static void main(String[] args) { SpringApplication.run(ProvideApplication.class , args); } }
4、消費者創建dubbo-consumer同步驟3生產者的創建(pom.xml文件引入dubbo-commo依賴同上)
(1)目錄結構如下
(2)controller代碼部分
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import com.alibaba.dubbo.config.annotation.Reference; import com.service.LoginService; @RestController @RequestMapping("/user/") public class LoginController { @Reference(check=true) LoginService loginService; @RequestMapping("login") public String login() { return loginService.login(); } }
(3)application.properties文件
server.port=8091 dubbo.application.name=consumer dubbo.registry.address=zookeeper://127.0.0.1:2181
(4)啟動類
import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; import com.alibaba.dubbo.config.spring.context.annotation.DubboComponentScan; import com.alibaba.dubbo.config.spring.context.annotation.EnableDubbo; @SpringBootApplication(exclude= {DataSourceAutoConfiguration.class}) //@EnableDubbo //@DubboComponentScan public class ConsumerApplication { public static void main(String[] args) { SpringApplication.run(ConsumerApplication.class, args); } }
5、測試分別啟動生產者、消費者(注意zookeeper要開啟)
啟動成功如下:
訪問消費者:http://localhost:8091/user/login