Dubbo 簡介
Dubbo是阿里巴巴公司開源的一個高性能優秀的服務框架,使得應用可通過高性能的RPC實現服務的輸出和輸入功能,可以和Spring框架無縫集成。
它提供了三大核心能力:
- 面向接口的遠程方法調用
- 智能容錯和負載均衡
- 服務自動注冊和發現。

可以看出圖中存在着五種角色:
- Provider:服務提供者
- Consumer:服務消費者
- Registry:服務注冊中心
- Monitor:服務監控中心
- Container:服務運行的容器
圖上的過程可以這么來解釋:
- 在容器(Container)啟動服務的提供者(Provider)
- 服務的提供者(Provider)將服務以接口的形式注冊到注冊中心(Registry)
- 服務的消費者(Consumer)向注冊中心訂閱服務
- 注冊中心向服務的消費者返回服務的提供者提供的服務接口(異步)
- 服務的消費者去調用服務的提供者(同步)
- 監控中心負責統計服務的調用次數和調用時間的日志服務。
這里我們采用 zookeeper 作為服務注冊中心,這里我查閱官方文檔發現 Redis 也可以作為Dubbo的注冊中心,只不過在應用中比較少見,而且官方文檔中也說明了:

如果我們想用的話,只需要把
dubbo.registry.addrss的值改為redis://127.0.0.1:6379即可使用。
理論到這里,下面就讓我們來進入實戰吧~
zookeeper的安裝
這里我是在 Mac OS 環境下進行安裝,你可以在本地安裝虛擬機來完成這個操作。
首先我們需要前往官網下載安裝包。
# 0. 解壓
tar -zxvf zookeeper-3.4.13.tar.gz
# 1. 切換到解壓后的目錄下
cd zookeeper-3.4.13/
# 2. 建立data和logs目錄
mkdir data
mkdir logs
# 3. 復制zoo_sample.cfg 為 zoo.cfg
cd conf/
cp zoo_sample.cfg zoo.cfg
# 4. 修改配置
vi zoo.cfg
dataDir=剛剛新建的data目錄的絕對路徑
logDir=剛剛新建的data目錄的絕對路徑
# 5. 啟動
cd ../bin
./zkServer.sh start
# 6. 檢測是否啟動成功
./zkServer.sh status
實例
編寫Provider
引入我們項目需要的Maven依賴:
<! --這里的包不要寫錯了,我試了一下阿里的starter,發現有很多問題,並沒有這個好用 -->
<dependency>
<groupId>io.dubbo.springboot</groupId>
<artifactId>spring-boot-starter-dubbo</artifactId>
<version>1.0.0</version>
</dependency>
然后對注冊中心以及服務接口包的暴露的配置
spring.dubbo.application.name=provider
spring.dubbo.registry.address=zookeeper://127.0.0.1:2181
spring.dubbo.protocol.name=dubbo
spring.dubbo.protocol.port=27899
spring.dubbo.scan=indi.viyoung.dubbo.provider.service
編寫Service接口和實現類:
public interface TestService {
String test();
}
@Service
public class TestServiceImpl implements TestService {
@Override
public String test() {
return "Hello Wolrd";
}
}
需要注意的是這里的Service注解必須是dubbo包下的喲,可千萬別寫錯了!
編寫Consumer
同樣要引入依賴:
<dependency>
<groupId>io.dubbo.springboot</groupId>
<artifactId>spring-boot-starter-dubbo</artifactId>
<version>1.0.0</version>
</dependency>
Consumer的配置的話比較少:
spring.dubbo.application.name=consumer
spring.dubbo.registry.address=zookeeper://127.0.0.1:2181
直接在Controller中引用
public class TestController {
@Reference
private TestService testService;
@RequestMapping()
public String hello() {
return testService.test();
}
}
注意這里的@Reference注解不要寫錯,應該是Dubbo包下的!
然后把項目啟動后,我們訪問一下:

Nice,訪問成功!
下面,我們來學習一下Dubbo-Admin的使用
Dubbo-Admin
Dubbo-Admin之前給我的感覺就是沒有UI的樣子:

大概就長這個樣子,賊丑,但是不知道啥時候悄悄摸摸的更新了一波,變得讓顏值控也是非常滿意,而且支持jar包啟動,不用再去單獨的安裝Tomcat~
git clone https://github.com/apache/incubator-dubbo-ops.git
首先從Git上把這個項目拉下來,用IDEA打開:

只需要添加一個端口號的配置,然后使用左側的maven打包工具打包:

然后去dubbo-admin-server的target的目錄下使用以下命令:
java -jar dubbo-admin-server-0.1.jar >run.log &
然后打開瀏覽器,輸入localhost:7070

對比之前的UI簡直強了無數倍,而且賊方便!
具體的功能大家可以跟着操作之后去探討,這里就不再展開來說了。
今天的文章就到這里,下面宣布一個好消息:
活動通知
原定於粉絲達到一定數量后做送書活動回饋大家,由於本公號博主真愛技術佛系漲粉,無運營無套路,所以增粉速度超~級~慢~,原定目標短時間內無法達成,因此決定清明小長假過后就開啟送書活動,大家久等了!感謝大家的信任支持與相伴,筆芯~
掃碼即可參加活動

