Spring Boot 2.x (十五):Dubbo + Zookeeper + 新版Dubbo Admin

Dubbo 簡介

Dubbo是阿里巴巴公司開源的一個高性能優秀的服務框架,使得應用可經過高性能的RPC實現服務的輸出和輸入功能,能夠和Spring框架無縫集成html

它提供了三大核心能力:java

  • 面向接口的遠程方法調用
  • 智能容錯負載均衡
  • 服務自動註冊和發現。

官網圖

能夠看出圖中存在着五種角色:git

  • Provider:服務提供者
  • Consumer:服務消費者
  • Registry:服務註冊中心
  • Monitor:服務監控中心
  • Container:服務運行的容器

圖上的過程能夠這麼來解釋:github

  1. 在容器(Container)啓動服務的提供者(Provider)
  2. 服務的提供者(Provider)將服務以接口的形式註冊到註冊中心(Registry)
  3. 服務的消費者(Consumer)向註冊中心訂閱服務
  4. 註冊中心向服務的消費者返回服務的提供者提供的服務接口(異步)
  5. 服務的消費者去調用服務的提供者(同步)
  6. 監控中心負責統計服務的調用次數和調用時間的日誌服務。

這裏咱們採用 zookeeper 做爲服務註冊中心,這裏我查閱官方文檔發現 Redis 也能夠做爲Dubbo的註冊中心,只不過在應用中比較少見,並且官方文檔中也說明了:redis

若是咱們想用的話,只須要把dubbo.registry.addrss的值改成redis://127.0.0.1:6379便可使用。spring

理論到這裏,下面就讓咱們來進入實戰吧~apache

zookeeper的安裝

這裏我是在 Mac OS 環境下進行安裝,你能夠在本地安裝虛擬機來完成這個操做。瀏覽器

首先咱們須要前往官網下載安裝包。springboot

# 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依賴:bash

<! --這裏的包不要寫錯了,我試了一下阿里的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簡直強了無數倍,並且賊方便!

具體的功能你們能夠跟着操做以後去探討,這裏就再也不展開來講了。

今天的文章就到這裏,下面宣佈一個好消息:

活動通知

原定於粉絲達到必定數量後作送書活動回饋你們,因爲本公號博主真愛技術佛系漲粉,無運營無套路,因此增粉速度超~級~慢~,原定目標短期內沒法達成,所以決定清明小長假事後就開啓送書活動,你們久等了!感謝你們的信任支持與相伴,筆芯~

掃碼便可參加活動

相關文章
相關標籤/搜索