1. 程式人生 > >Dubbox的入門小案例

Dubbox的入門小案例

Dubbox

關於Dubbox身世的小故事

Dubbox原來是阿里的親兒子Dubbo,不過後來阿里又生了一個小兒子HSF,正所謂,有了新歡,那還需要舊愛.所以Dubbo就被阿里趕出家門,流落街頭.
不過,天無絕人之路,噹噹網覺得Dubbo是個可造之才,所以收養了Dubbo,而為了與過去的苦難日子進行告別,Dubbo改名為Dubbox.

Dubbox用來幹什麼

Dubbox 致力於提供高效能和透明化的 RPC 遠端服務呼叫方案,以及 SOA 服務治理方案。簡單的說,dubbox 就是個服務框架,如果沒有分散式的需求,其實是不需要用的,只有在分散式的時候,才有 dubbox 這樣的分散式服務框架的需求,並且本質上是個服務呼叫的東東,說白了就是個遠端服務呼叫的分散式框架。

Dubbox入門案例

生產者
@Service//這裡的 Service是com.alibaba.dubbo.config.annotation.Service
public class UserServiceImpl implements UserService {
    @Override
    public String getName() {
        return "HelloWorld";
    }
}

xml配置

<dubbo:application name="dubboxdemo-service"/>  
<dubbo:registry
address="zookeeper://192.168.24.125:2181"/>
<dubbo:annotation package="cn.dubbodemo.service" /> </beans>
消費者
@RestController
@RequestMapping(value="/user")
public class UserController {
    @Reference
    private UserService userService;//消費者需要匯入生產者的介面
    @RequestMapping(value="/showName"
) public String showName() { return userService.getName(); } }

xml配置

<mvc:annotation-driven>
        <mvc:message-converters register-defaults="false">
            <bean class="org.springframework.http.converter.StringHttpMessageConverter">
                <constructor-arg value="UTF-8" />
            </bean>
        </mvc:message-converters>
    </mvc:annotation-driven>
    <!-- 引用 dubbo 服務 -->
    <dubbo:application name="dubboxdemo-web" />
    <dubbo:registry address="zookeeper://192.168.25.135:2181" />
    <dubbo:annotation package="cn.dubbodemo.controller" />
</beans>

執行結果:
這裡寫圖片描述

監控中心:
這裡寫圖片描述
這裡寫圖片描述

不負責亂談Dubbox的執行

這裡寫圖片描述

Provider: 暴露服務的服務提供方。
Consumer: 呼叫遠端服務的服務消費方。
Registry: 服務註冊與發現的註冊中心。
Monitor: 統計服務的呼叫次調和呼叫時間的監控中心。
Container: 服務執行容器。
由於我本人喜歡看八九十年代的港產黑幫片,所以我就以黑幫片中的某些情節解說一下上圖.當然,如果我說的不好,那你就忍著看吧,誰讓你點進來了呢?
上圖中,應該在容器上加個0的,畢竟第一步就是通過容器來啟動,不過執行程式碼,哪有不需要啟動的呢?所以就沒有寫0了,而且一般來說,Dubbox的容器都用spring,所以我也就懶得說容器了.
①:在我看來,所謂生產者,其實就是黑幫片那種專門提高高階娛樂的服務者.當有新的服務者小紅出現的時候,必然需要將自己的資訊上報給高階娛樂場所管理者靚坤.
②:一向喜歡花花草草的瀟灑哥在教訓完某南後,想要放鬆放鬆,於是向靚坤詢問有沒有新來的服務者,
③:在得知瀟灑哥的需求後,由於瀟灑哥不喜歡去店裡,所以靚坤就將新來的小紅的資訊發給了瀟灑哥.
④:瀟灑哥靚坤那得到小紅的資訊後,直接一個電話打給小紅,經過一番談價後,兩人達成協議,進行了服務於被服務.
⑤:在服務完,或者是服務過程中,或許小紅技術不好,瀟灑哥不滿意.又或者是瀟灑哥橫行慣了,想吃霸王*,光享受服務,不給錢.兩人產生糾紛,大家不好調理.這時候將臣大佬通過他那看穿一切的眼睛,調出監控器,還原事情經過,該付錢的付錢,該好好服務的好好服務.
……
在我的理解中,上圖大概就是這個樣子.圖中的實線部分,相當於電學中的串聯,而虛線部分,相當於並聯,用java中的話來說,就是ajax.

⑥:後來,靚坤由於太騷,太講信用,說要”全家***,就要全家***”,幹不好管理工作,這個時候,江湖上出現一個叫烏鴉的傢伙,烏鴉一出來,就用強硬的手段向各方大佬展示了自己強大的能力,從而被各方大佬預設為高階服務管理者.而烏鴉在程式江湖中的大名就是Zookeeper.

Zookeeper

zookeeper, 註冊中心。負責服務地址的註冊與查詢,相當於目錄服務,服務提供者和消費者只在啟動時與註冊中心互動,註冊中心不轉發請求,壓力較小。Zookeeper 是 Apacahe Hadoop 的子專案,是一個樹型的目錄服務,支援變更推送,適合作為 Dubbox 服務的註冊中心,工業強度較高,可用於生產環境.