springboot+dubbo+zookeeper微服務實踐demo

duanhao發表於2021-09-09

微服務化越來越火,實際上是應網際網路時代而生的,微服務化帶來的不僅是效能上的提升,更帶來了研發組織的更加便利,協作更加輕鬆,團隊效能更高。

當然不能為了技術而技術,我們需要切合實際的對業務進行劃分,降低模組間的耦合度,在加上容器時代的便利性,讓我們開發,部署更加便利。

關於微服務的好處和演化請自行百度,這裡給一個簡單的demo,是基礎的實現“微服務dubbo整合”,本地windows環境演示,記錄以便不時回顧,也方便初學者。

1.本地安裝配置zookeeper

圖片描述

  配置:圖片描述

複製zoo_sample.cfg改名為zoo.cfg修改其中的:

圖片描述

 

2.idea中建立兩個專案 :client和server,分別代表消費端和生產端

圖片描述

具體功能自己定了,這個demo中主要是實現了一個簡單的資料查詢功能,模擬現實中的微服務呼叫場景。

 

3.重點看一下生產端和消費短的dubbo配置檔案:

dubbo-provider.xml

圖片描述

<?xml version="1.0" encoding="UTF-8"?><beans xmlns=""
       xmlns:xsi=""
       xmlns:dubbo=""
       xsi:schemaLocation="
       /spring-beans.xsd
       
       /dubbo.xsd">
    <!-- 服務應用名稱 -->
    <dubbo:application name="provider">
        <dubbo:parameter key="qos.enable" value="true"/>
        <dubbo:parameter key="qos.accept.foreign.ip" value="false"/>
        <dubbo:parameter key="qos.port" value="33333"/>
    </dubbo:application>
    <!-- 使用zookeeper做為註冊中心 -->
    <dubbo:registry  protocol="zookeeper" address="zookeeper://192.168.94.1:2181"/>
    <!-- 用dubbo協議在20880埠暴露服務,預設:20880 -->
    <dubbo:protocol name="dubbo" port="20881" />

    <!-- 預設配置 -->
    <dubbo:provider timeout="30000" threadpool="fixed" threads="100" accepts="1000" id="payload" payload="11557050"/>

    <!-- ref中的值要跟服務實現類中的@Server的值一致 -->
    <dubbo:service interface="com.example.dubbo.service.StockPurchaseService" ref="stockPurchaseService"></dubbo:service>
    <!--<bean id="stockPurchaseService" clacom.example.dubbover.service.impl.StockPurchaseServiceImpl"/>--></beans>

圖片描述

dubbo-consumer.xml

圖片描述

<?xml version="1.0" encoding="UTF-8"?><beans xmlns=""
       xmlns:xsi=""
       xmlns:dubbo=""
       xsi:schemaLocation="
       /spring-beans.xsd
       
       /dubbo.xsd">
    <!-- 服務應用名稱 -->
    <dubbo:application name="consumer">
        <dubbo:parameter key="qos.enable" value="true"/>
        <dubbo:parameter key="qos.accept.foreign.ip" value="false"/>
        <dubbo:parameter key="qos.port" value="33334"/>
    </dubbo:application>
    <!-- 使用zookeeper做為註冊中心 -->
    <dubbo:registry  protocol="zookeeper" address="zookeeper://192.168.94.1:2181"/>
    <!-- 用dubbo協議在20880埠暴露服務,預設:20880 -->
    <dubbo:protocol name="dubbo" port="20881" />

    <!-- 預設配置 -->
    <dubbo:consumer timeout="1800000" retries="0"/>

    <!-- ref中的值要跟服務實現類中的@Server的值一致 -->
    <dubbo:reference interface="com.example.dubbo.service.StockPurchaseService" id="stockPurchaseService" check="false"/>
    <!--<bean id="stockPurchaseService" class="com.example.server.service.impl.StockPurchaseServiceImpl"/>--></beans>

圖片描述

重點關注:

生產和消費端的配置的介面路徑要保持一致,ref中的值要跟服務實現類中的@Service的值一致

圖片描述

 

4.注意:使用Dubbo進行資料傳遞時,需讓作為訊息傳遞的類序列化。

圖片描述

 

5.測試地址:

 

 一個簡單的例子,最後提供原始碼在下面:(包含client,server以及資料庫指令碼)

原文出處:https://www.cnblogs.com/miketwais/p/10216956.html  

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

相關文章