当SpringBoot2.x与dubbo相遇
2018-06-30 本文已影响463人
隐无为
1.dubbo 与 spring cloud 宿命之争
最近dubbo疯狂更新目前版本已是2.6.2,不仅仅如此,
还更新springboot-dubbo系列,重新构造dubbo-ops-admin-2.0
(内部用springboot实现)
主要原因可能是dubbo提交了开源社区apache吧
和来自SpringCloud的压力,必须搞一波事情,立一个flag!
来一波最新dubbo的教程,看看springboot-2.0和dubbo的魅力
2.springboot-dubbo 内容和规划
开发版本
从现在开始, dubbo-spring-boot-project
将在每个发布中发行两个版本 :
依赖关系
版本 | Java | Spring Boot | Dubbo |
---|---|---|---|
0.2.0 |
1.8+ | 2.0.x |
2.6.2 + |
0.1.1 |
1.7+ | 1.5.x |
2.6.2 + |
最新版(maven 依赖)
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>0.2.0</version>
</dependency>
hello-world 创建 dubbo的三个模块,分别为 provider、consummer、api
api 模块
api 接口定义
public interface PayApi {
/**
* 根据订单id获取支付消息
*/
public PayInfo getPayInfo(String uuid);
}
domain 实体类
public Class PayInfo {
private Long id; // 支付id
private String method; // 字符方式
private Integer status; // 支付状态
private String userName; // 支付人名称
}
提供者模块
api 接口实现
@Service(
version = "${demo.service.version}",
application = "${dubbo.application.id}",
protocol = "${dubbo.protocol.id}",
registry = "${dubbo.registry.id}"
)
public class PayApiImpl implements PayApi {
public PayInfo getPayInfo(String uuid) {
// 构造数据
PayInfo payInfo=new PayInfo();
payInfo.setId(6666L);
payInfo.setMethod("支付宝");
payInfo.setStatus(1);
payInfo.setUserName(uuid);
return payInfo;
}
}
提供者启动类
@SpringBootApplication
public class DubboProviderRun {
@SuppressWarnings("deprecation")
public static void main(String[] args) {
new SpringApplicationBuilder(DubboProviderRun.class)
.web(false) // 非 Web 应用
.run(args);
}
}
配置 application.properties
# 应用信息
spring.application.name = dubbo-provider-demo
server.port = 9090
management.port = 9091
# 应用版本
demo.service.version = 1.0.0
# 扫描注解包
dubbo.scan.basePackages = cn.itsource.dubbo.api.impl
# dubbo 信息
dubbo.application.id = dubbo-provider-demo
dubbo.application.name = dubbo-provider-demo
## 协议信息
dubbo.protocol.id = dubbo
dubbo.protocol.name = dubbo
dubbo.protocol.port = 12345
## 注册中心信息
dubbo.registry.id = my-registry
dubbo.registry.address = N/A
消费者模块
应用类
@RestController
public class PayController {
@Reference(version = "${demo.service.version}",
application = "${dubbo.application.id}",
url = "dubbo://192.168.56.1:12345",check=false)
private PayApi payApi;
@RequestMapping("/getPayInfo")
public PayInfo getPayInfo(@RequestParam String uuid) {
return payApi.getPayInfo(uuid);
}
}
消费者启动类
@SpringBootApplication
public class DubboConsumerRun {
public static void main(String[] args) {
SpringApplication.run(DubboConsumerRun.class,args);
}
}
配置 application.properties
# 应用信息
spring.application.name = dubbo-consumer-demo
server.port = 8080
management.port = 8081
# 应用版本
demo.service.version = 1.0.0
# dubbo 信息
dubbo.application.id = dubbo-consumer-demo
dubbo.application.name = dubbo-consumer-demo
## 协议信息
dubbo.protocol.id = dubbo
dubbo.protocol.name = dubbo
dubbo.protocol.port = 12345
## 注册中心信息
dubbo.registry.address = N/A
SpringBoot 启动提供者和消费者
访问 http://localhost:8080/getPayInfo?uuid=9999
以上是直连,没有注册中心,dubbo推荐用zookeeper作为注册中心
下载 zookeeper-3.4.12
修改 安装目录下/conf
zoo_sample.cfg 为 zoo.cfg
启动 bin/zkServer.cmd
修改提供者和消费者的application.properties
原来不注册
dubbo.registry.address = N/A
改为注册到zookeeper
dubbo.registry.address = zookeeper://127.0.0.1:2181
添加 zookeeper客户端 在 application.properties
从 `2.3.0` 版本开始支持可选 curator 实现。
是 Netflix 开源的一个 Zookeeper 客户端实现。
也可以是zkclient (如果使用请添加依赖jar)
springboot-dubbo默认使用 curator
dubbo.registry.client=curator
再次SpringBoot启动提供者和消费者
访问 http://localhost:8080/getPayInfo?uuid=9999
开启管理中心dubbo-admin-2.0
目前主版本是springboot实现dubbo-admin-2.0
请先下载
git clone https://github.com/apache/incubator-dubbo-ops
在打包编译
cd incubator-dubbo-ops
mvn package
java -jar 启动 dubbo-admin-2.0.jar
编译打包好的可执行的jar包已提交到github上
访问 http://localhost:7001/
账号:root 密码:root
管理中心.jpg
以上代码放在github上要下载点击链接
https://github.com/hpit-BAT/springboot-dubbo-demo
打波广告,关注我的开源组织和项目
访问地址:http://www.mysad.xyz/
以后将在开一波springcloud学习系列文章
并配套实战项目