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


Dubbo 簡介

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

它提供了三大核心能力:

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

官網圖

可以看出圖中存在着五種角色:

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

圖上的過程可以這么來解釋:

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

這里我們采用 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簡直強了無數倍,而且賊方便!

具體的功能大家可以跟着操作之后去探討,這里就不再展開來說了。

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

活動通知

原定於粉絲達到一定數量后做送書活動回饋大家,由於本公號博主真愛技術佛系漲粉,無運營無套路,所以增粉速度超~級~慢~,原定目標短時間內無法達成,因此決定清明小長假過后就開啟送書活動,大家久等了!感謝大家的信任支持與相伴,筆芯~

掃碼即可參加活動


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM