一、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