1.dubbo 與 spring cloud 宿命之爭
最近dubbo瘋狂更新目前版本已是2.6.2,不僅僅如此,
還更新springboot-dubbo系列,重新構造dubbo-ops-admin-2.0
(內部用springboot實現)
主要原因可能是dubbo提交了開源社區(qū)apache吧
和來自SpringCloud的壓力,必須搞一波事情,立一個flag!
來一波最新dubbo的教程韩玩,看看springboot-2.0和dubbo的魅力
2.springboot-dubbo 內容和規(guī)劃
開發(fā)版本
從現在開始, dubbo-spring-boot-project
將在每個發(fā)布中發(fā)行兩個版本 :
依賴關系
版本 | 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 創(chuàng)建 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; // 支付狀態(tài)
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 (如果使用請?zhí)砑右蕾噅ar)
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
編譯打包好的可執(zhí)行的jar包已提交到github上
訪問 http://localhost:7001/
賬號:root 密碼:root
以上代碼放在github上要下載點擊鏈接
https://github.com/hpit-BAT/springboot-dubbo-demo
打波廣告,關注我的開源組織和項目
訪問地址:http://www.mysad.xyz/
以后將在開一波springcloud學習系列文章
并配套實戰(zhàn)項目