目录
什么是 Dubbo?
Dubbo2.7.x 版本变化
Dubbo 生态系统
SpringBoot 整合 Dubbo2.7.x
zookeeper 说明
zookeeper 安装启动
新版 Dubbo_Admin
创建 SpringBoot 项目
Apache Dubbo | ˈ d ʌ b əʊ | 是一款高性能、轻量级的开源 Java RPC 框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。
是的,是 Apache Dubbo,不在是 Alibaba Dubbo。原因简单来说就是 Alibaba 将 dubbo 移交给 Apache 开源社区进行维护。
详情见这两篇文章:
Dubbo 正式进入 Apache 开源孵化器
从遇见到信任 | Apache Dubbo 的毕业之旅
- JDK 版本需求上升到 1.8
- 包名更换:com.alibaba.dubbo - > org.apache.dubbo
- 注册中心一分为三,变成注册中心,元数据中心,配置中心
- 异步支持优化
- 服务治理规则优化
......
环境信息:
JDK 1.8
SpringBoot 2.1.14
Dubbo 2.7.4.1
准备工具:zookeeper 官网下载地址,新版 dubbo_admin 官网下载地址
ZooKeeper 是一个开源的分布式协调服务,由雅虎创建,是 Google Chubby 的开源实现。
分布式应用程序可以基于 ZooKeeper 实现诸如数据发布/订阅、负载均衡、命名服务、分布式协
调/通知、集群管理、Master 选举、配置维护,名字服务、分布式同步、分布式锁和分布式队列
等功能。
Dubbo 支持多种注册中心:redis,nacos,zookeeper..... 推荐使用 zookeeper。
在官网下载好 zookeeper 之后,解压。
然后将 conf 文件夹下的 zoo_sample.cfg 文件复制一份重命名为 zoo.cfg 不做任何的修改。
进入 bin 文件夹下找到 zkServer.cmd(windows 环境下,Linux 使用 zkServer.sh) 双击启动即可。
启动后默认端口为 2181。 zookeeper 在 3.5.5 版本后还会占用 8080 端口,需要注意。
使用前建议先阅读官方文档说明!!!!
可以通过官网 readme 说明进行操作,也可以直接使用 IDEA 拉取项目代码运行。
IDEA 拉取项目之后先启动 DubboAdminApplication 这个类,默认 8080 端口,已被占用可以手动修改。
然后运行 dubbo-admin-ui 这个前端模块(找到 package.json,然后找到 npm run dev ,点击左侧绿色启动按钮即可)注意:需要安装 node.js。默认 8081 端口,也是可以手动在 index.js 里面进行修改。
运行起来后访问 :localhost:8081 就会出现如下画面,就表示启动成功了。
先创建一个多模块的 SpringBoot 项目,方便体验 dubbo。
pom 文件内容:
4.0.0
com.hjljy
springboot_dubbo
0.0.1-SNAPSHOT
com.hjljy
dubbo_api
0.0.1-SNAPSHOT
dubbo_api
Demo project for Spring Boot
1.8
org.springframework.boot
spring-boot-starter
然后定义两个简单的接口
public interface TestService { String showName(); }
public interface TestService2 {
String showName();
}
pom 文件内容:
org.springframework.boot
spring-boot-starter
org.apache.dubbo
dubbo-dependencies-zookeeper
2.7.4.1
pom
org.slf4j
slf4j-log4j12
org.apache.dubbo
dubbo-spring-boot-starter
2.7.4.1
com.hjljy
dubbo_api
0.0.1-SNAPSHOT
创建对应接口实现:
@Service(version = "1.0.0") public class TestService2Impl implements TestService2 { @Override public String showName() { return "HELLO TestService2"; } } @Service(version = "1.0.0") public class TestServiceImpl implements TestService { @Override public String showName() { return "HELLO DUBBO"; } }
application 配置文件配置:
# Spring boot application
spring.application.name=dubbo-provider-demo
# Base packages to scan Dubbo Component: @org.apache.dubbo.config.annotation.Service
dubbo.scan.base-packages=com.hjljy.dubbo_provider.impl
# Dubbo Application
## The default value of dubbo.application.name is ${spring.application.name}
dubbo.application.name=${spring.application.name}
# Dubbo Protocol
dubbo.protocol.name=dubbo
dubbo.protocol.port=20880
## Dubbo Registry
dubbo.registry.address=zookeeper://127.0.0.1:2181
server.port=7010
注意事项:
pom 文件内容:
org.springframework.boot
spring-boot-starter
org.apache.dubbo
dubbo-dependencies-zookeeper
2.7.4.1
pom
org.slf4j
slf4j-log4j12
org.apache.dubbo
dubbo-spring-boot-starter
2.7.4.1
com.hjljy
dubbo_api
0.0.1-SNAPSHOT
消费创建的服务
@RestController
public class TestDubboController {
@Reference(version = "1.0.0")
TestService2 service2;
@Reference(version = "1.0.0")
TestService service;
@GetMapping("test1")
public String test1(){
return service.showName();
}
@GetMapping("test2")
public String test2(){
return service2.showName();
}
}
application 配置文件配置:
spring.application.name=dubbo-consumer-demo
dubbo.registry.address=zookeeper://127.0.0.1:2181
server.port=7000
启动程序验证 DUBBO
先启动 DubboProviderApplication
然后启动 DubboConsumerApplication
最后访问 http://127.0.0.1:7000/test1 http://127.0.0.1:7000/test2
成功返回信息,验证成功。
到这里完成的 SpringBoot 整合 dubbo2.7.x 就完成了。