使用SpringBoot與Dubbo搭建分布式服務(wù)指南_第1頁
使用SpringBoot與Dubbo搭建分布式服務(wù)指南_第2頁
使用SpringBoot與Dubbo搭建分布式服務(wù)指南_第3頁
使用SpringBoot與Dubbo搭建分布式服務(wù)指南_第4頁
使用SpringBoot與Dubbo搭建分布式服務(wù)指南_第5頁
已閱讀5頁,還剩19頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、 使用SpringBoot與Dubbo搭建分布式服務(wù)指南目 錄 TOC o 1-3 h z u HYPERLINK l _Toc533503698 一、概念準備 PAGEREF _Toc533503698 h 4 HYPERLINK l _Toc533503699 什么是分布式? PAGEREF _Toc533503699 h 4 HYPERLINK l _Toc533503700 什么是 Duboo? PAGEREF _Toc533503700 h 4 HYPERLINK l _Toc533503701 Dubbo 架構(gòu) PAGEREF _Toc533503701 h 5 HYPERLINK

2、 l _Toc533503702 什么是 RPC? PAGEREF _Toc533503702 h 6 HYPERLINK l _Toc533503703 為什么要用 Dubbo? PAGEREF _Toc533503703 h 7 HYPERLINK l _Toc533503704 二、開始實戰(zhàn) 1 :zookeeper 環(huán)境安裝搭建 PAGEREF _Toc533503704 h 7 HYPERLINK l _Toc533503705 1. 下載 PAGEREF _Toc533503705 h 7 HYPERLINK l _Toc533503706 2. 解壓 PAGEREF _Toc53

3、3503706 h 8 HYPERLINK l _Toc533503707 3. 進入zookeeper目錄,創(chuàng)建data文件夾。 PAGEREF _Toc533503707 h 9 HYPERLINK l _Toc533503708 4. 進入/zookeeper/conf目錄下,復(fù)制zoo_sample.cfg,命名為zoo.cfg PAGEREF _Toc533503708 h 9 HYPERLINK l _Toc533503709 5. 修改配置文件 PAGEREF _Toc533503709 h 9 HYPERLINK l _Toc533503710 6. 啟動測試 PAGEREF

4、_Toc533503710 h 10 HYPERLINK l _Toc533503711 三、開始實戰(zhàn) 2 :實現(xiàn)服務(wù)接口 dubbo-interface PAGEREF _Toc533503711 h 12 HYPERLINK l _Toc533503712 1. dubbo-interface 項目創(chuàng)建 PAGEREF _Toc533503712 h 13 HYPERLINK l _Toc533503713 2. 創(chuàng)建接口類 PAGEREF _Toc533503713 h 15 HYPERLINK l _Toc533503714 3. 將項目打成 jar 包供其他項目使用 PAGEREF

5、_Toc533503714 h 16 HYPERLINK l _Toc533503715 四、開始實戰(zhàn) 3 :實現(xiàn)服務(wù)提供者 dubbo-provider PAGEREF _Toc533503715 h 16 HYPERLINK l _Toc533503716 1. dubbo-provider 項目創(chuàng)建 PAGEREF _Toc533503716 h 17 HYPERLINK l _Toc533503717 2. pom 文件引入相關(guān)依賴 PAGEREF _Toc533503717 h 18 HYPERLINK l _Toc533503718 3. 在 perties 配置文件中配置 dub

6、bo 相關(guān)信息 PAGEREF _Toc533503718 h 19 HYPERLINK l _Toc533503719 4. 實現(xiàn)接口 PAGEREF _Toc533503719 h 20 HYPERLINK l _Toc533503720 5. 服務(wù)提供者啟動類編寫 PAGEREF _Toc533503720 h 20 HYPERLINK l _Toc533503721 五、開始實戰(zhàn) 4 :實現(xiàn)服務(wù)消費者 dubbo-consumer PAGEREF _Toc533503721 h 21 HYPERLINK l _Toc533503722 4. 編寫一個簡單 Controller 調(diào)用遠程

7、服務(wù) PAGEREF _Toc533503722 h 22 HYPERLINK l _Toc533503723 5. 服務(wù)消費者啟動類編寫 PAGEREF _Toc533503723 h 23 HYPERLINK l _Toc533503724 6. 測試效果 PAGEREF _Toc533503724 h 24使用 SpringBoot+Dubbo 搭建一個簡單分布式服務(wù) 概念準備開始實戰(zhàn)之前,我們先來簡單的了解一下這樣幾個概念:Dubbo、RPC、分布式、由于本文的目的是帶大家使用SpringBoot+Dubbo 搭建一個簡單的分布式服務(wù),所以這些概念我只會簡單給大家普及一下,不會做深入探

8、究。什么是分布式?分布式或者說 SOA 分布式重要的就是面向服務(wù),說簡單的分布式就是我們把整個系統(tǒng)拆分成不同的服務(wù)然后將這些服務(wù)放在不同的服務(wù)器上減輕單體服務(wù)的壓力提高并發(fā)量和性能。比如電商系統(tǒng)可以簡單地拆分成訂單系統(tǒng)、商品系統(tǒng)、登錄系統(tǒng)等等。我們可以使用 Dubbo作為分布式系統(tǒng)的橋梁,那么什么是 Dubbo 呢?什么是 Duboo?Apache Dubbo (incubating) |db| 是一款高性能、輕量級的開源Java RPC 框架,它提供了三大核心能力:面向接口的遠程方法調(diào)用,智能容錯和負載均衡,以及服務(wù)自動注冊和發(fā)現(xiàn)。簡單來說 Dubbo 是一個分布式服務(wù)框架,致力于提供高性能

9、和透明化的RPC遠程服務(wù)調(diào)用方案,以及SOA服務(wù)治理方案。Dubbo 目前已經(jīng)有接近 23k 的 Star ,Dubbo的Github 地址:/apache/incubator-dubbo。另外,在開源中國舉行的2018年度最受歡迎中國開源軟件這個活動的評選中,Dubbo 更是憑借其超高人氣僅次于 vue.js 和 ECharts 獲得第三名的好成績。Dubbo 是由阿里開源,后來加入了 Apache 。正式由于 Dubbo 的出現(xiàn),才使得越來越多的公司開始使用以及接受分布式架構(gòu)。下面我們簡單地來看一下 Dubbo 的架構(gòu),加深對 Dubbo 的理解。Dubbo 架構(gòu)下面我們再來看看 Dubb

10、o 的架構(gòu),我們后面會使用 zookeeper 作為注冊中心,這也是 Dubbo 官方推薦的一種方式。Dubbo 架構(gòu)上述節(jié)點簡單說明:Provider暴露服務(wù)的服務(wù)提供方Consumer調(diào)用遠程服務(wù)的服務(wù)消費方Registry服務(wù)注冊與發(fā)現(xiàn)的注冊中心Monitor統(tǒng)計服務(wù)的調(diào)用次數(shù)和調(diào)用時間的監(jiān)控中心Container服務(wù)運行容器調(diào)用關(guān)系說明:服務(wù)容器負責(zé)啟動,加載,運行服務(wù)提供者。服務(wù)提供者在啟動時,向注冊中心注冊自己提供的服務(wù)。服務(wù)消費者在啟動時,向注冊中心訂閱自己所需的服務(wù)。注冊中心返回服務(wù)提供者地址列表給消費者,如果有變更,注冊中心將基于長連接推送變更數(shù)據(jù)給消費者。服務(wù)消費者,從提供

11、者地址列表中,基于軟負載均衡算法,選一臺提供者進行調(diào)用,如果調(diào)用失敗,再選另一臺調(diào)用。服務(wù)消費者和提供者,在內(nèi)存中累計調(diào)用次數(shù)和調(diào)用時間,定時每分鐘發(fā)送一次統(tǒng)計數(shù)據(jù)到監(jiān)控中心。我們在講 Dubbo 的時候提到了 Dubbo 實際上是一款 RPC 框架,那么RPC 究竟是什么呢?相信看了下面我對 RPC 的介紹你就明白了!什么是 RPC?RPC(Remote Procedure Call)遠程過程調(diào)用,它是一種通過網(wǎng)絡(luò)從遠程計算機程序上請求服務(wù),而不需要了解底層網(wǎng)絡(luò)技術(shù)的協(xié)議。比如兩個不同的服務(wù)A,B部署在兩臺不同的機器上,那么服務(wù) A 如果想要調(diào)用服務(wù) B 中的某個方法該怎么辦呢?使用 HTT

12、P請求 當(dāng)然可以,但是可能會比較慢而且一些優(yōu)化做的并不好。 RPC 的出現(xiàn)就是為了解決這個問題。為什么要用 Dubbo?如果你要開發(fā)分布式程序,你也可以直接基于 HTTP 接口進行通信,但是為什么要用 Dubbo呢?我覺得主要可以從 Dubbo 提供的下面四點特性來說為什么要用 Dubbo:負載均衡同一個服務(wù)部署在不同的機器時該調(diào)用那一臺機器上的服務(wù)服務(wù)調(diào)用鏈路生成服務(wù)之間互相是如何調(diào)用的服務(wù)訪問壓力以及時長統(tǒng)計當(dāng)前系統(tǒng)的壓力主要在哪里,如何來擴容和優(yōu)化服務(wù)降級某個服務(wù)掛掉之后調(diào)用備用服務(wù)開始實戰(zhàn) 1 :zookeeper 環(huán)境安裝搭建我使用的是 CentOS 7.4 阿里云服務(wù)器,注意:如果

13、你也同樣阿里云服務(wù)器必須配置一個安全組,不然你的應(yīng)用程序會無法訪問你的 zookeeper 服務(wù)器,這一點我在后面也提到了。另外,要注意在安裝 zookeeper 之前要先確保你的機器已經(jīng)裝好 JDK 環(huán)境。1. 下載通過/apache/zookeeper/這個鏈接下載,然后上傳到Linux上。(可以說那個 Xhell 附帶的文件傳輸功能)zookeeper下載或者直接在Linux中使用wget /dist/zookeeper/zookeeper-3.4.12/zookeeper-3.4.12.tar.gz命令下載(版本號 3.4.12 是我寫這篇文章的時候最新的穩(wěn)定版本,各位可以根據(jù)實際情況

14、修改)2. 解壓tar-zxvfzookeeper-3.4.12-alpha.tar.gz解壓之后解壓完畢之后修改一下解壓之后所得的文件夾名mvzookeeper-3.4.12zookeeper刪除 zookeeper 安裝包rm-rfzookeeper-3.4.12.tar.gz3. 進入zookeeper目錄,創(chuàng)建data文件夾。mkdirdata進入 data 文件夾 然后執(zhí)行pwd命令,復(fù)制所得的當(dāng)前目錄位置(就是我用紅色圈出來的文字)進入 data 文件夾 然后執(zhí)行pwd命令4. 進入/zookeeper/conf目錄下,復(fù)制zoo_sample.cfg,命名為zoo.cfgcpzo

15、o_sample.cfgzoo.cfg5. 修改配置文件使用vim zoo.cfg命令修改配置文件vim 文件進入文件命令模式按i進入編輯模式編輯文件 按Esc進入底行模式輸入:wq/q! (輸入wq代表寫入內(nèi)容并退出,即保存;輸入q!代表強制退出不保存。)修改配置文件中的 data 屬性:dataDir=/usr/local/zookeeper/data6. 啟動測試進入 /zookeeper/bin 目錄然后執(zhí)行下面的命令./zkServer.shstart執(zhí)行./zkServer.sh status查看當(dāng)前 zookeeper 狀態(tài)?;蛘哌\行netstat -lntup命令查看網(wǎng)絡(luò)狀態(tài),

16、可以看到 zookeeper 的端口號 2181 已經(jīng)被占用運行 netstat -lntup命令查看網(wǎng)絡(luò)狀態(tài)注意沒有關(guān)閉防火墻可能出現(xiàn)的問題!如果你使用的阿里云服務(wù)器注意配置相關(guān)安全組:進入本實例安全組頁面進入本實例安全組頁面選擇配置規(guī)則選擇配置規(guī)則選擇添加安全組規(guī)則,然后按照下圖配置選擇添加安全組規(guī)則,然后按照下圖配置在開始實戰(zhàn)之前提個建議:盡量新建一個文件夾,然后后面將接口項目、服務(wù)提供者以及服務(wù)消費者都放在這個文件夾。項目概覽開始實戰(zhàn) 2 :實現(xiàn)服務(wù)接口 dubbo-interface主要分為下面幾步:創(chuàng)建 Maven 項目;創(chuàng)建接口類將項目打成 jar 包供其他項目使用項目結(jié)構(gòu):du

17、bbo-interface 項目結(jié)構(gòu)dubbo-interface 后面被打成 jar 包,它的作用只是提供接口。1. dubbo-interface 項目創(chuàng)建File-New-Module,然后選擇 Maven類型的項目,其他的按照提示一步一步走就好。第一步第二步2. 創(chuàng)建接口類packagetop.snailclimb.service;publicinterfaceHelloServicepublicStringsayHello(Stringname);3. 將項目打成 jar 包供其他項目使用點擊右邊的 Maven Projects 然后選擇 install ,這樣 jar 寶就打好了。

18、開始實戰(zhàn) 3 :實現(xiàn)服務(wù)提供者 dubbo-provider主要分為下面幾步:創(chuàng)建 springboot 項目;加入 dubbo 、zookeeper以及接口的相關(guān)依賴 jar 包;在 perties 配置文件中配置 dubbo 相關(guān)信息;實現(xiàn)接口類;服務(wù)提供者啟動類編寫項目結(jié)構(gòu):dubbo-provider 項目結(jié)構(gòu)1. dubbo-provider 項目創(chuàng)建創(chuàng)建一個 SpringBoot 項目,注意勾選上 web 模塊。不會創(chuàng)建的話,可以查看下面這篇文章:,可以說很詳細了。/qq_34337272/article/details/79563606注意勾選上 web 模塊2. pom 文件引

19、入相關(guān)依賴需要引入 dubbo 、zookeeper以及接口的相關(guān)依賴 jar 包。注意將本項目和 dubbo-interface 項目的 dependency 依賴的 groupId 和 artifactId 改成自己的。dubbo 整合spring boot 的 jar 包在這里找dubbo-spring-boot-starter。zookeeper 的 jar包在Maven 倉庫搜索 zkclient 即可找到。top.snailclimbdubbo-interface1.0-SNAPSHOTcom.alibaba.spring.bootdubbo-spring-boot-starter

20、2.0.0com.101teczkclient0.103. 在 perties 配置文件中配置 dubbo 相關(guān)信息配置很簡單,這主要得益于 springboot 整合 dubbo 專屬的EnableDubboConfiguration注解提供的 Dubbo 自動配置。#配置端口server.port=8333=dubbo-providerspring.dubbo.application.registry=zookeeper:/ip地址:21814. 實現(xiàn)接口注意:Service注解使用的時 Dubbo 提供的而不是 Spring 提供的。另外,加了Dubbo 提供的Service注解之后還需

21、要加入packagetop.snailclimb.service.impl;importcom.alibaba.dubbo.config.annotation.Service;importorg.springframework.stereotype.Component;importtop.snailclimb.service.HelloService;ComponentServicepublicclassHelloServiceImplimplementsHelloServiceOverridepublicStringsayHello(Stringname)returnHello+name;5

22、. 服務(wù)提供者啟動類編寫注意:不要忘記加上EnableDubboConfiguration注解開啟Dubbo 的自動配置。packagetop.snailclimb;importcom.alibaba.dubbo.spring.boot.annotation.EnableDubboConfiguration;importorg.springframework.boot.SpringApplication;importorg.springframework.boot.autoconfigure.SpringBootApplication;SpringBootApplication/開啟dubbo

23、的自動配置EnableDubboConfigurationpublicclassDubboProviderApplicationpublicstaticvoidmain(Stringargs)SpringApplication.run(DubboProviderApplication.class,args);開始實戰(zhàn) 4 :實現(xiàn)服務(wù)消費者 dubbo-consumer主要分為下面幾步:創(chuàng)建 springboot 項目;加入 dubbo 、zookeeper以及接口的相關(guān)依賴 jar 包;在 perties 配置文件中配置 dubbo 相關(guān)信息;編寫測試類;服務(wù)消費者啟動類編寫測試效果項目結(jié)構(gòu):dubbo-consumer 項目結(jié)構(gòu)第1,2,3 步和服務(wù)提供者的一樣,這里直接從第 4 步開始。4. 編寫一個簡單 Controller 調(diào)用遠程服務(wù)packagetop.snailclimb.dubboconsumer;importcom.alibaba.dubbo.config.annotation.Reference;importorg.springframework.web.bind.annotation.RequestMapping;importorg.springframework.web.bind.annotation.RestController;i

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論