Dubbo的入門小Demo

duanhao發表於2021-09-09

初知Dubbo

  前一段時間,在一次模擬面試中,一個學長告訴我,現在的大學生還是懂一點分散式是比較好的,例如阿里巴巴的Dubbo框架,現在做專案很多公司都會使用這個框架;於是我心心念念這個框架在期末複習的空檔時間看了好幾次官方文件,都沒有太大的作用,今天發了個狠心,決定動手試一下,就像我以前學習SSM框架是一樣的,什麼都不會,直接上手,所以在下文中,可能涉及到原理講解的會比較少,很多都是做法是怎樣的。

前期準備

1、安裝zookeeper(百度百科):
  ZooKeeper是一個分散式的,開放原始碼的分散式應用程式協調服務,是Google的Chubby一個開源的實現,是Hadoop和Hbase的重要元件。它是一個為分散式應用提供一致性服務的軟體,提供的功能包括:配置維護、域名服務、分散式同步、組服務等。
  ZooKeeper的目標就是封裝好複雜易出錯的關鍵服務,將簡單易用的介面和效能高效、功能穩定的系統提供給使用者。
  ZooKeeper包含一個簡單的原語集,[1]  提供Java和C的介面。
  ZooKeeper程式碼版本中,提供了分散式獨享鎖、選舉、佇列的介面,程式碼在zookeeper-3.4.3srcrecipes。其中分佈鎖和佇列有Java和C兩個版本,選舉只有Java版本。
  我們下載過後把我們的Zookeeper 解壓到相應的目錄中,進入我們的conf資料夾下,開啟 zoo.cfg配置檔案:

# The number of milliseconds of each tick# zookeeper中使用的基本時間單位, 毫秒值.tickTime=2000# The number of ticks that the initial # synchronization phase can takeinitLimit=10# The number of ticks that can pass between # sending a request and getting an acknowledgementsyncLimit=5# the directory where the snapshot is stored.# do not use /tmp for storage, /tmp here is just # example sakes.# 資料目錄. 可以是任意目錄.dataDir=D:Program Fileszookeeper-3.4.6dataTmp# the port at which the clients will connect# 監聽client連線的埠號.clientPort=2181# the maximum number of client connections.# increase this if you need to handle more clients#maxClientCnxns=60## Be sure to read the maintenance section of the # administrator guide before turning on autopurge.## http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance## The number of snapshots to retain in dataDir#autopurge.snapRetainCount=3# Purge task interval in hours# Set to "0" to disable auto purge feature#autopurge.purgeInterval=1

2、安裝Tomcat(相信大家都有);
3、打包dubbo-admin的war包;
  我自己用的IDE是Idea,要是也用這個IED就跟著我的腳步,把dubbo-admin解壓到自己喜歡的地方,在idea中直接開啟就行,我們設定好後,直接啟動Tomcat伺服器即可,我們 可以看到登入頁面,登陸過後會看到如下我的頁面:


圖片描述

01.png

我們的登入的使用者名稱密碼為:dubbo-admin/src/webapp/WEB-INF/dubbo-properties配置檔案中

# 這裡的埠號與上面Zookeeper中配置的埠號一致dubbo.registry.address=zookeeper://localhost:2181dubbo.admin.root.password=root
dubbo.admin.guest.password=guest

上述的工具和本次的測試程式碼我都放在了一起,可一併下載,地址為:

開始工作

  我這裡主要講一下需要注意的點,全部程式碼在上面那個下載地址中有,我就不再講其他沒用的了;
配置檔案application-consumers.xml:



    <!-- 配置可參考  --&gt

    <!-- 消費方應用名,用於計算依賴關係,不是匹配條件,不要與提供方一樣 --&gt
    
    <!-- 定義 zookeeper 註冊中心地址及協議,這裡的埠號與上面對應  --&gt
    
    <!-- 和本地bean一樣實現服務 --&gt
    

    <!-- 向註冊中心註冊暴漏服務地址,註冊服務 --&gt
    

配置我們訪問前端頁面的埠號application.properties:

server.port=8088

主方法,DubboConsumerAppplication.class:

package com.tao.dubbo.consumer;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.context.annotation.ImportResource;@SpringBootApplication@ImportResource(value = {"classpath:application-consumers.xml"}) // 使用 consumers.xml 配置;public class DubboConsumerApplication {    public static void main(String[] args) {
        SpringApplication.run(DubboConsumerApplication.class, args);
    }
}

service介面及其實現:

package com.tao.dubbo.service;/**
 * 測試遠端呼叫的介面;
 */public interface TestService {    String sayHello(String name);
}
package com.tao.dubbo.service.impl;import com.tao.dubbo.service.TestService;/**
 * Created by Taoyongpan on 2017/12/25.
 */public class TestServiceImpl implements TestService {    @Override
    public String sayHello(String name) {        return name;
    }
}

controller方法 :

package com.tao.dubbo.consumer.controller;import com.alibaba.fastjson.JSONObject;import com.tao.dubbo.service.TestService;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.PathVariable;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.ResponseBody;/**
 * 測試用的 Controller 類;
 */@Controllerpublic class TestController {    @Autowired
    TestService testService;    /**
     * 測試 JSON 介面;
     *
     * @param name 名字;
     * @return
     */
    @ResponseBody
    @RequestMapping("/test/{name}")    public JSONObject testJson(@PathVariable("name") String name) {
        JSONObject jsonObject = new JSONObject();
        String testStr = testService.sayHello(name);
        jsonObject.put("str", testStr);        return jsonObject;
    }

}

除錯執行

  我們的執行順序是,先開啟Zookeeper(bin/zkServer.cmd),然後在tomcat中執行我們上面下載的dubbo-admin,然後就是執行我們上面的dubbo-consumer中的主方法,在位址列中輸入:localhost:8088/test/taoyongpan
若頁面正常輸出,則表示搭建成功;



作者:Taoyongpan
連結:



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/1343/viewspace-2809648/,如需轉載,請註明出處,否則將追究法律責任。

相關文章