SpringBoot整合Dubbo

Dubbo簡介

Dubbo是Alibaba開源的分布式服務框架,它最大的特點是按照分業(yè)務的架構俭嘁,使用這種方式可以使各個業(yè)務之間解耦合(或者最大限度地松耦合)。

簡單來說Dubbo:

  1. 一款分布式服務框架
  2. 高性能和透明化的RPC遠程服務調用方案
  3. SOA服務治理方案

Dubbo架構

這里寫圖片描述

Provider: 暴露服務的服務提供方。
Consumer: 調用遠程服務的服務消費方。
Registry: 服務注冊與發(fā)現的注冊中心凌停。
Monitor: 統(tǒng)計服務的調用次數和調用時間的監(jiān)控中心。

調用流程

  1. 服務容器負責啟動售滤,加載,運行服務提供者台诗。
  2. 服務提供者在啟動時完箩,向注冊中心注冊自己提供的服務。
  3. 服務消費者在啟動時拉队,向注冊中心訂閱自己所需的服務弊知。
  4. 注冊中心返回服務提供者地址列表給消費者,如果有變更粱快,注冊中心將基于長連接推送變更數據給消費者秩彤。
  5. 服務消費者,從提供者地址列表中事哭,基于軟負載均衡算法漫雷,選一臺提供者進行調用,如果調用失敗鳍咱,再選另一臺調用降盹。
  6. 服務消費者和提供者,在內存中累計調用次數和調用時間谤辜,定時每分鐘發(fā)送一次統(tǒng)計數據到監(jiān)控中心蓄坏。

SpringBoot整合Dubbo

項目整體架構

這里寫圖片描述

這里還用到了Zookeeper注冊中心,所以需要到Zookeeper官網下載壓縮包,下載后進行解壓丑念,然后啟動Zookeeper涡戳,點擊解壓包下的bin/zkServer.cmd:

這里還用到了zookeeper的可視化工具ZK UI

服務監(jiān)控中心搭建:dubbo-admin的下載脯倚,地址:https://github.com/Linliuxing/dubbo-admin
直接下載zip包渔彰,解壓后將dubbo-admin下的內容全部拷貝到本地tomcat的webapps下
在運行tomcat之前,先將zookeeper啟動推正,如果不配置監(jiān)控中心(WEB-INF/dubbo.properties胳岂,內容如下),

       dubbo.registry.address=zookeeper://127.0.0.1:2181
       dubbo.admin.root.password=root
    dubbo.admin.guest.password=guest

默認啟動tomcat即可,http://localhost:8080/dubbo-admin, 登錄時輸入root/root

這里寫圖片描述

SpringBoot添加Dubbo和Zookeeper依賴:

        <!--spring-boot-starter-dubbo-->
        <dependency>
            <groupId>com.gitee.reger</groupId>
            <artifactId>spring-boot-starter-dubbo</artifactId>
            <version>1.1.1</version>
        </dependency>
        <!-- 引入zookeeper舔稀,去除其中的log4j乳丰,否則會因為日志原因導致堆棧溢出 -->
        <dependency>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
            <version>3.4.10</version>
            <exclusions>
                <exclusion>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-log4j12</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

springboot-dubbo-api:

  • 定義服務接口ProviderService :
public interface ProviderService {
    String sayHello(String name);
}

springboot-dubbo-provider:

  • application.yml配置信息:
server:
    port: 8081
spring:
  dubbo:
    application:
      name: service-provider
    base-package: com.lin.service # dubbo服務發(fā)布者所在的包
    registry:
      address: 192.168.0.116 # zookeeper注冊中心的地址
      port: 2181       # zookeeper注冊中心的端口
      protocol: zookeeper
      register: true
    protocol:
      name: dubbo
      port: 20880
      accesslog: true
    provider:
      retries: 1
      delay: -1
  • 服務實現類:
@Service(version = "1.0.0")
@Component
public class ProviderServiceImpl implements ProviderService {
    @Override
    public String sayHello(String name) {
        return "Hello "+name;
    }
}

springboot-dubbo-consumer:

  • application.yml配置信息:
server:
    port: 8082
spring:
  dubbo:
    application:
      name: service-consumer
    base-package: com.lin.service  # dubbo服務調用者所在的包
    registry:
      address: 192.168.0.116  # zookeeper注冊中心的地址
      port: 2181              # zookeeper注冊中心的端口
      protocol: zookeeper
      subscribe: true
    protocol:
      name: dubbo
      host: 192.168.0.116
    consumer:
      timeout: 1000
      check: false  # 服務啟動時檢查被調用服務是否可用
      retries: 2    # 服務調用重試次數
  • 調用服務提供者的服務:
@RestController
public class Consumer   {

    // 使用兼容注入,可以使用dubbo原生注解@Reference注入
    @Reference(version = "1.0.0")
    public ProviderService service;

    @GetMapping(value = "/hello/{name}")
    public String hello(@PathVariable String name){
        return service.sayHello(name);
    }
}

測試:

  • 瀏覽器訪問消費者的接口内贮,返回的是提供者的處理請求:
這里寫圖片描述
  • 查看服務提供者和消費者是否注冊到Zookeeper注冊中心:
這里寫圖片描述
  • 查看服務提供者和消費者是否注冊到服務監(jiān)控中心:


    這里寫圖片描述
這里寫圖片描述
  • 查看springboot-dubbo-provider的Zookeeper打印信息:
這里寫圖片描述
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末产园,一起剝皮案震驚了整個濱河市汞斧,隨后出現的幾起案子,更是在濱河造成了極大的恐慌什燕,老刑警劉巖粘勒,帶你破解...
    沈念sama閱讀 211,265評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現場離奇詭異屎即,居然都是意外死亡庙睡,警方通過查閱死者的電腦和手機,發(fā)現死者居然都...
    沈念sama閱讀 90,078評論 2 385
  • 文/潘曉璐 我一進店門技俐,熙熙樓的掌柜王于貴愁眉苦臉地迎上來乘陪,“玉大人,你說我怎么就攤上這事雕擂》纫兀” “怎么了?”我有些...
    開封第一講書人閱讀 156,852評論 0 347
  • 文/不壞的土叔 我叫張陵井赌,是天一觀的道長谤逼。 經常有香客問我,道長仇穗,這世上最難降的妖魔是什么流部? 我笑而不...
    開封第一講書人閱讀 56,408評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮纹坐,結果婚禮上贵涵,老公的妹妹穿的比我還像新娘。我一直安慰自己恰画,他們只是感情好宾茂,可當我...
    茶點故事閱讀 65,445評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著拴还,像睡著了一般跨晴。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上片林,一...
    開封第一講書人閱讀 49,772評論 1 290
  • 那天端盆,我揣著相機與錄音,去河邊找鬼费封。 笑死焕妙,一個胖子當著我的面吹牛,可吹牛的內容都是我干的弓摘。 我是一名探鬼主播焚鹊,決...
    沈念sama閱讀 38,921評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼韧献!你這毒婦竟也來了末患?” 一聲冷哼從身側響起研叫,我...
    開封第一講書人閱讀 37,688評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎璧针,沒想到半個月后嚷炉,有當地人在樹林里發(fā)現了一具尸體,經...
    沈念sama閱讀 44,130評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡探橱,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,467評論 2 325
  • 正文 我和宋清朗相戀三年申屹,在試婚紗的時候發(fā)現自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片隧膏。...
    茶點故事閱讀 38,617評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡哗讥,死狀恐怖,靈堂內的尸體忽然破棺而出私植,到底是詐尸還是另有隱情,我是刑警寧澤车酣,帶...
    沈念sama閱讀 34,276評論 4 329
  • 正文 年R本政府宣布曲稼,位于F島的核電站,受9級特大地震影響湖员,放射性物質發(fā)生泄漏贫悄。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,882評論 3 312
  • 文/蒙蒙 一娘摔、第九天 我趴在偏房一處隱蔽的房頂上張望窄坦。 院中可真熱鬧,春花似錦凳寺、人聲如沸鸭津。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽逆趋。三九已至,卻和暖如春晒奕,著一層夾襖步出監(jiān)牢的瞬間闻书,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評論 1 265
  • 我被黑心中介騙來泰國打工脑慧, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留魄眉,地道東北人。 一個月前我還...
    沈念sama閱讀 46,315評論 2 360
  • 正文 我出身青樓闷袒,卻偏偏與公主長得像坑律,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子囊骤,可洞房花燭夜當晚...
    茶點故事閱讀 43,486評論 2 348

推薦閱讀更多精彩內容

  • 最近聽聞公司的項目打算進行重構脾歇,大佬們商量準備使用近年大火的SpringCloud蒋腮,所以在開始學習Springcl...
    Ranger23閱讀 37,277評論 4 14
  • 前期準備:下載安裝zookeeper作為服務注冊中心 安裝步驟 解壓 將zoo_sample.cfg文件名修改為z...
    何甜甜在嗎閱讀 1,356評論 0 7
  • 最近在做一個分布式的web系統(tǒng),用的boot+dubbo藕各,中間碰到不少坑池摧,最近碰到的坑可是坑了我三四天,把坑都給大...
    FantJ閱讀 15,901評論 1 13
  • 不知不覺間竭讳,大家都已經畢業(yè)了,要走向工作崗位了浙踢,這個時候我們要選擇非常有氣場的衣服绢慢,才能夠讓自己成功通過面試走上工...
    貓小九說時尚閱讀 440評論 0 3
  • 細雨濕紅杏,暖風撫鮮桃洛波。 露滴掛翠李胰舆,雛梨青嘴翹。 石榴未開口蹬挤,桑椹從天掉缚窿, 姑娘正欲撿,棗棵卻扎腰焰扳。
    云逸1108閱讀 171評論 0 1