Springboot整合dubbo(一):搭建一個(gè)springboot + dubbo的微服務(wù)

現(xiàn)在越來越多的公司開發(fā)項(xiàng)目中使用了springboot作為搭建服務(wù)的框架,因?yàn)閟pringboot集成了一套完整項(xiàng)目所需要的基本的開發(fā)工具的jar包,無需再像之前開發(fā)一個(gè)spring項(xiàng)目中需要引入各種配置,只需要引入簡單的幾個(gè)配置就能達(dá)到項(xiàng)目的啟動,大大減少了開發(fā)周期,使開發(fā)越來越便捷,而dubbo是一款國內(nèi)使用較多的SOA架構(gòu)開發(fā)的中間件,其主要由三個(gè)部分組成:生產(chǎn)者,消費(fèi)者,注冊中心。注冊中心一般使用的是zookeeper。于是我們從頭來捋一捋如何搭建一個(gè)springboot+dubbo項(xiàng)目。

首先,使用創(chuàng)建一個(gè)springboot項(xiàng)目,我這里使用的是IDEA工具,如果是使用eclipse的同學(xué),大家可以去網(wǎng)上找有很多的搭建springboot項(xiàng)目的博客。

第一步:選擇新建project或者module,在界面中選擇Spring Initilazr點(diǎn)擊next:

image

第二步:填上項(xiàng)目的基本信息點(diǎn)擊next:

2018110315102796.jpg

第三步:選擇在你的項(xiàng)目中需要引入的相關(guān)依賴以及springboot的版本,這里我選了2.0.6并勾選web便于測試(當(dāng)然你可以根據(jù)你的需要勾選不同的依賴,很全基本上涵蓋了開發(fā)過程中所用到的所有插件)點(diǎn)擊next編輯器就會幫你自動將項(xiàng)目初始化并下載相關(guān)的jar包依賴:

image

進(jìn)入項(xiàng)目后我們可以先看看項(xiàng)目結(jié)構(gòu):


image

其中DemoApplication是項(xiàng)目的啟動類,application.properties是配置文件,項(xiàng)目的一些相關(guān)的配置可以寫在里面,springboot支持多種配置文件格式,目前比較常用的除了properties配置之外,比較流行的是yml格式的配置文件,這里我就將application.properties文件改成application.yml為配置文件格式,都o(jì)k了之后呢我們就可以啟動啟動類(啟動類帶有main方法可以直接啟動),項(xiàng)目就可以啟動了。

第四步:下載安裝zookeeper

  1. 下載zookeeper注冊中心,下載地址:http://www.apache.org/dyn/closer.cgi/zookeeper/ 下載后解壓即可,進(jìn)入D:\apach-zookeeper-3.4.5\bin,

雙擊zkServer.cmd啟動注冊中心服務(wù)。

雙擊 zkServer.cmd,發(fā)現(xiàn)dos框一閃而過,無法正確啟動zookeeper。

右鍵編輯 zkServer.cmd


關(guān)于在windows下啟動zkServer.cmd閃退的解決辦法

在末尾輸入pause ,保存退出。

再次運(yùn)行zkServer.cmd,發(fā)現(xiàn)dos命令行窗口靜止了。


關(guān)于在windows下啟動zkServer.cmd閃退的解決辦法

現(xiàn)在能看到錯(cuò)誤提示了,發(fā)現(xiàn)提示 JAVA_HOME 沒有被正確設(shè)置。


關(guān)于在windows下啟動zkServer.cmd閃退的解決辦法

此時(shí)檢查自己的 JAVA_HOME設(shè)置情況,發(fā)現(xiàn) JAVA_HOME是正確設(shè)置的,那是怎么回事?
右鍵編輯zkEnv.cmd


關(guān)于在windows下啟動zkServer.cmd閃退的解決辦法

在這兩處添加雙引號,保存退出。


關(guān)于在windows下啟動zkServer.cmd閃退的解決辦法

重新運(yùn)行zkServer.cmd,OK,zkServer正常啟動了!


關(guān)于在windows下啟動zkServer.cmd閃退的解決辦法

第五步:引入Springboot集成dubbo的依賴以及zookeeper客戶端依賴:

      <!-- 整合dubbo -->
            <dependency>
                <groupId>io.dubbo.springboot</groupId>
                <artifactId>spring-boot-starter-dubbo</artifactId>
                <version>1.0.0</version>
            </dependency>
            <!-- zookeeper客戶端 -->
             <dependency>
                <groupId>com.101tec</groupId>
                <artifactId>zkclient</artifactId>
                <version>0.7</version>
            </dependency>

第六步:創(chuàng)建接口及接口實(shí)現(xiàn)類:


public interface TestService {
 
    void testDubbo();
}

import com.alibaba.dubbo.config.annotation.Service;
import com.springboot.dubbo.service.TestService;
 
@Service(version = "1.0.0",timeout = 3000)
public class TestServiceImpl implements TestService{
 
    @Override
    public void testDubbo() {
 
    }
}

添加@Service注解,切記注解不是用spring的service注解,是 com.alibaba.dubbo.config.annotation.Service,由阿里提供的dubbo的注解,配上版本號1.0.0說明向zookeeper注冊的是版本為1.0.0的TestService接口,超時(shí)時(shí)長為3000ms等信息。

第七步:添加配置:

server:
  port: 8080 #Tomcat端口
spring:
  dubbo:
    application:
      name: springboot-dubbo-demo #應(yīng)用名
    registry:
      address: zookeeper://localhost #zookeeper地址
      port: 2181 #提供注冊的端口
    protocol:
      name: dubbo
      port: 20890 #dubbo服務(wù)暴露的端口
    scan: com.springboot.dubbo.service.impl #掃描的包名

添加完畢后啟動項(xiàng)目,沒有異常的話,可以通過dubbo-admin查看接口情況:

image
image

這樣一個(gè)提供者服務(wù)就搭建好了。

第八步:搭建消費(fèi)者服務(wù):

項(xiàng)目創(chuàng)建步驟如上面步驟,引入提供者服務(wù)的依賴,需要使用maven install命令將提供者服務(wù)依賴安裝至本地,或者使用maven deploy命令提交至遠(yuǎn)程服務(wù)器才能正常引入,否則會包依賴包找不到。

添加controller層代碼項(xiàng)目整體結(jié)構(gòu)如圖:

20181103191909237.jpg

TestController類中的代碼結(jié)構(gòu)使用服務(wù)注入時(shí)使用dubbo的Reference注解:

@Reference(version = "1.0.0",timeout = 300)
    private TestService testService;
spring:
  dubbo:
    application:
      name: springboot-dubbo-demo
    registry:
      address: zookeeper://localhost
      port: 2181
    scan: com.springboot.dubbo.test.controller

將配置文件掃描的包改成com.springboot.dubbo.test,然后啟動項(xiàng)目

通過阿里的Reference這個(gè)注解,就可以將消費(fèi)者注冊到zookeeper上就能實(shí)現(xiàn)調(diào)用啦。

查看dubbo的服務(wù)可以看到一個(gè)提供者一個(gè)消費(fèi)者:

image

打個(gè)廣告,本人博客地址是:風(fēng)吟個(gè)人博客

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容