本文采用版本springboot 2.x
linux 安装的zookeeper版本 3.5.5
idea dubbo版本2.7.3 zookeeper版本 3.4.8
1. 新建一个公共接口提供者 pom文件里面什么都不需要写
1.1这里面只有你的pojo和你的接口
这个里面只提供接口,打成jar包,其他的项目需要引入这个公共接口的jar包
1.2 创建完成以后需要用maven 打包 安装
否则 别的项目找不到你的接口
2. 创建一个服务提供者 创建第一个项目的实现类
2.1 provider项目的整体路径
2.2 provider的pom.xml
2.2.1 这里有你项目1的依赖 我各个依赖注释的很清楚
<!--寻找001的接口 -->
<dependency>
<groupId>com.powernode</groupId>
<artifactId>mon0825-001springboot-dubbo-exterface</artifactId>
<version>1.0.0</version>
</dependency>
<!--Spring Boot集成Dubbo的起步依赖 这个里面有google的json-->
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>2.7.3</version>
</dependency>
<!-- zookeeper的客户端管理依赖 log4j 以前有集成 不去除会冲突-->
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-framework</artifactId>
<version>2.12.0</version>
<exclusions>
<exclusion>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</exclusion>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- zookeeper的客户端管理依赖 -->
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-recipes</artifactId>
<version>2.12.0</version>
</dependency>
<!--ZooKeeper注册中心依赖 log4j 有冲突需要剔除log4j 在curator-framework的管理软件
有zookeeper的jar包-->
<!-- <dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.4.14</version>
<type>pom</type>
<exclusions>
<exclusion>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</exclusion>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</exclusion>
</exclusions>
</dependency>-->
<!-- mybatis的起步依赖-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.0.0</version>
</dependency>
<!-- 数据库的依赖 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
2.3 provider的application.properties
- 注意写自己的数据库,redis 如果没有删除配置
#application 版本
spring.application.name=mon0825-002springboot-dubbo-provider
#配置内嵌Tomcat端口号
server.port=8252
#配置项目上下文根
server.servlet.context-path=/
#配置SpringMVC的视图解析器其中:/相当于src/main/webapp目录
spring.mvc.view.prefix=/
spring.mvc.view.suffix=.jsp
# 指定Mybatis映射文件的路径
mybatis.mapper-locations=classpath:mapper/*.xml
#配置数据库的链接
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/_001springboot?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=123456
# 配置redis
spring.redis.host=192.168.68.3
spring.redis.port=6384
spring.redis.password=123456
# 配置redis 的哨兵
#spring.redis.sentinel.master=mymaster
#spring.redis.sentinel.nodes=192.168.68.3:26380,192.168.68.3:26382,192.168.68.3:26384
#spring.redis.sentinel.password=123456
#配置dubbo
#dubbo.application.name 是在zookeeper的名字 必须是唯一 因为他就是靠名字找服务呀
dubbo.application.name=mon0825-002springboot-dubbo-provider
dubbo.protocol.name=dubbo
#端口号也是唯一,因为它不能冲突呀
dubbo.protocol.port=20880
#连接方式 看你自己吧
dubbo.registry.address=zookeeper://192.168.68.3:2181
2.4 provider的实现类
package com.powernode.service;/**
* Created by Enzo Cotter on 2020/8/25.
*/
import com.google.gson.JsonParser;
import com.powernode.mapper.StudentMapper;
import com.powernode.pojo.Student;
import com.powernode.pojo.StudentExample;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* ClassName: StudentServiceDubboImpl
* Description:
* Date: 2020/8/25 15:01
* 文章地址原创地址 https://blog.csdn.net/linsenaa
* @Author Lin
*/
//这个是spring的service
@Service
/*
interfaceClass 这个是暴露的接口的class 如果你没有这个接口不要慌 把你的项目1在pom里面引包以后在重新用maven打包下
version 版本号
timeout 当消费者调用提供者时由于网络等原因有可能会造成长时间拿不到响应,
而请求还在不断的发过来这就有可能造成线程阻塞,使用timeout设置超时时间当超过该时间就会抛出异常
注意 这个service 是dubbo的Service
*/
@org.apache.dubbo.config.annotation.Service(interfaceClass = StudentServiceDubbo.class,
version = "1.0.0",
timeout = 2000)
public class StudentServiceDubboImpl implements StudentServiceDubbo {
@Autowired
StudentMapper studentMapper;
@Override
public String queryAllStudent() {
//看不懂这个没有关系 你把我的删除,自己在这个实现类随便写,自己返回字符串就好
// List<Student> students = studentMapper.selectByExample(null);
//return students.toString();
return "测试zookeeper";
}
}
2.5 provider启动 注意在主启动类加上注解@EnableDubbo
(注意 你要先启动你的zookeeper 不管你是在虚拟机的liunx还是windows本地)
3. 创建一个服务消费者 创建第二个项目的控制层
3.1 customer项目的整体路径
3.2 customer项目的pom.xml
<!--寻找001的接口 -->
<dependency>
<groupId>com.powernode</groupId>
<artifactId>mon0825-001springboot-dubbo-exterface</artifactId>
<version>1.0.0</version>
</dependency>
<!--Spring Boot集成Dubbo的起步依赖 这个里面有google的json-->
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>2.7.3</version>
</dependency>
<!-- zookeeper的客户端管理依赖 里面有zookeeper-->
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-framework</artifactId>
<version>2.12.0</version>
<exclusions>
<exclusion>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</exclusion>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- zookeeper的api管理依赖 -->
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-recipes</artifactId>
<version>2.12.0</version>
</dependency>
<!--ZooKeeper依赖 curator-framework里面有zookeeper 的依赖-->
<!-- <dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.4.14</version>
<type>pom</type>
<exclusions>
<exclusion>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</exclusion>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
</exclusions>
</dependency>-->
3.3 customer的application.properties
#application 版本
spring.application.name=mon0825-002springboot-dubbo-provider
#配置内嵌Tomcat端口号
server.port=8253
#配置项目上下文根
server.servlet.context-path=/
#配置SpringMVC的视图解析器
#其中:/相当于src/main/webapp目录
spring.mvc.view.prefix=/
spring.mvc.view.suffix=.jsp
#配置数据库的链接
# 配置redis 的哨兵
#spring.redis.sentinel.master=mymaster
#spring.redis.sentinel.nodes=192.168.68.3:26380,192.168.68.3:26382,192.168.68.3:26384
#spring.redis.sentinel.password=123456
#配置dubbo
dubbo.application.name=mon0825-003springboot-dubbo-customer
dubbo.protocol.name=dubbo
dubbo.protocol.port=20881
dubbo.registry.address=zookeeper://192.168.68.3:2181
3.4 customer的controller
package com.powernode.web;/**
* Created by Enzo Cotter on 2020/8/25.
*/
import com.powernode.service.StudentServiceDubbo;
import org.apache.dubbo.config.annotation.Reference;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
/**
* ClassName: DubboController
* Description:
* Date: 2020/8/25 17:16
* 作者博客 https://blog.csdn.net/linsenaa
* @Author Lin
*/
@RestController
public class DubboController {
/*
* interfaceName 寻找接口 也是需要引入01 项目的jar包 maven引入就可以找到
* version 版本号 如果你创建了不同的类实现了同一个接口 版本号就是识别你不同类的钥匙
* timeout 超时:当消费者调用提供者时由于网络等原因有可能会造成长时间拿不到响应,
* 而请求还在不断的发过来这就有可能造成线程阻塞,使用timeout设置超时时间当超过该时间就会抛出异常
* retries 重试次数:当调用失败或超时后重新尝试调用的次数,其值不包含第一次。 默认是两次
* @ Author Lin
* @ CreateTime 2020/8/27 11:31
*/
@Reference( interfaceName="com.powernode.service.StudentServiceDubbo",
version = "1.0.0", check = false,
timeout = 200, retries =2 )
private StudentServiceDubbo studentServiceDubbo;
@GetMapping("/queryAllStudentController")
public String queryAllStudentController() {
String s = studentServiceDubbo.queryAllStudent();
return s;
}
}
3.5 customer启动 注意在主启动类加上注解@EnableDubbo
(注意 你要先启动你的zookeeper 不管你是在虚拟机的liunx还是windows本地)
4 启动
4.1 zookeeper 启动
4.2 项目1 maven打包 安装(可以不看)
4.3 项目 private 启动 (可以不看)
4.4 项目 customer 启动(可以不看)
警告好像是因为元数据中心的配置 现在不影响 有时间在解释
2020-08-27 14:04:49.586 WARN 19272 --- [ main] o.a.d.common.config.ConfigurationUtils : [DUBBO] You specified the config centre, but there's not even one single config item in it., dubbo version: 2.7.3, current host: 192.168.68.1
2020-08-27 14:04:49.586 WARN 19272 --- [ main] o.a.d.common.config.ConfigurationUtils : [DUBBO] You specified the config centre, but there's not even one single config item in it., dubbo version: 2.7.3, current host: 192.168.68.1
2020-08-27 14:04:49.592 WARN 19272 --- [ main] org.apache.dubbo.config.AbstractConfig : [DUBBO] There's no valid metadata config found, if you are using the simplified mode of registry url, please make sure you have a metadata address configured properly., dubbo version: 2.7.3, current host: 192.168.68.1
4.5 成功页面
5 题外话题 dubbo admin 查看(有时间在补充吧)
5.1 linux 查看 偷个懒嘿嘿 完结 希望可以看明白 亲 点个赞再走
https://www.cnblogs.com/anqli-java/archive/2017/09/29/7610214.html
1. 首先通过命令切换到/usr/zookeeper-3.4.10/bin目录,然后输入
./zkCli.sh -server 127.0.0.1:2181
2. 然后在命令行再输入:
ls /
3 在命令行依次输入:
ls /dubbo