SpringBoot越来越热门以至于达到烂大街可见的程度,而Dubbo这个基于二进制的微服务框架又捐献给Apache孵化,如果不会如何使用那么是不是很不好意思呢?
这次从公司的项目中抽一个小列子来熟悉下如果从零构建,至于深入了解->传送门:Dubbo官方中文手册
版本:Springboot2.x
Double2.6
Zk3.4.14
JDK8
这里就不介绍Dubbo了,不了解的可以看这里:
zookeepr安装https://www.cnblogs.com/SimpleWu/p/9769797.html
下载去官网查找稳定的版本进行使用:
http://www.apache.org/dyn/closer.cgi/zookeeper/
先在服务器上安装zookeeper。
cd /usr/local/src/SpringBoot2.x整合Dubbo
#下载
sudo wget http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gz
#解压
tar -zxvf zookeeper-3.4.14.tar.gz
#修改配置文件名称
mv conf/zoo_sample.cfg zoo.cfg
#启动zk
./bin/zkServer.sh start
#出现以下字样代表启动成功,默认端口2181
Starting zookeeper ... STARTED
父工程搭建(pom工程)
com.simple.springboot
yun-double
0.0.1-SNAPSHOT pom yun-double double
1.8
2.0.0
0.10
org.springframework.boot
spring-boot-starter-parent
2.1.4.RELEASE
com.alibaba.spring.boot
dubbo-spring-boot-starter
${double.version}
com.101tec
zkclient
${zkclient.version}
创建公共接口工程common
该工程用于存储服务层接口,以减少代码的冗余。
4.0.0
com.simple.springboot
yun-double
0.0.1-SNAPSHOT com.simple.springboot
common0.0.1-SNAPSHOT common 公共接口
创建公共接口
public interface UserService {
String getUserById(int id);
}
创建服务提供者(provider)
Pom文件
4.0.0 com.simple.springboot
provider0.0.1-SNAPSHOT jar provider 生产者
com.simple.springboot
yun-double
0.0.1-SNAPSHOT
com.alibaba.spring.boot
dubbo-spring-boot-starter
com.101tec
zkclient
log4j
log4j
org.slf4j
slf4j-api
org.slf4j
slf4j-log4j12
com.simple.springboot
common
0.0.1-SNAPSHOT
org.springframework.boot
spring-boot-maven-plugin
在pom文件中我们需要引入Dubbo,Zk客户端并且引入公共接口工程
application.properties配置文件
#dubbo.application.name 应用名称
#dubbo.registry.address 注册中心地址
#dubbo.protocol.name 协议名称
#dubbo.protocol.port 协议端口
#dubbo.scan dubbo 服务类包目录
#server.port=8080
spring.application.name=user-pro
dubbo.application.name=user-provider1
dubbo.registry.address=zookeeper://192.168.197.133:2181
dubbo.protocol.name=dubbo
dubbo.protocol.port=20880
在这里dubbo.application.name应用名称一定不能重复
实现UserService
@Component
@Service(timeout = 10000,interfaceClass = UserService.class)
public class UserServiceImpl implements UserService {
@Override
public String getUserById(int id) {
if(id == 1) {
return "SimpleWu";
}else {
return "Apache Dubbo";
}
}
}
@Service 这个注解使用的不是Spring里面的,而是com.alibaba.dubbo.config.annotation.Service
timeout 配置超时时间
interfaceClass 接口类
version 服务版本,如果配置了服务版本在消费端引用也必须一样,具体等会说
创建启动类
在该工程中我们不需要引入Web模块浪费端口号,只需要这样写启动类
@EnableDubbo
@EnableDubboConfiguration
@DubboComponentScan("com.simple.springboot.provider.common.impl")
public class ProviderApplication {
public static void main(String[] args) {
SpringApplication app = new SpringApplication(ProviderApplication.class);
app.run(args);
//dubbo Main独立运行,脱离web容器
Main.main(args);
}
}
@EnableDubbo 启动Dubbo功能
@EnableDubboConfiguration 启动Duubbo配置
@DubboComponentScan 扫描提供者实现类



