dubbo構建應用

来源:https://www.cnblogs.com/huifan/archive/2018/02/07/8427907.html
-Advertisement-
Play Games

1.Dubbo介紹 Dubbo是 阿裡巴巴公司開源的一個高性能優秀的服務框架,使得應用可通過高性能的 RPC 實現服務的輸出和輸入功能,可以和Spring框架無縫集成。 2.Dubbo原理 是不是看著比較懵逼,博主用通俗的語言講解一下吧,這張圖裡兩個英文單詞大家應該比較熟悉,一個Provider(提 ...


1.Dubbo介紹

Dubbo是 阿裡巴巴公司開源的一個高性能優秀的服務框架,使得應用可通過高性能的 RPC 實現服務的輸出和輸入功能,可以和Spring框架無縫集成。

2.Dubbo原理

是不是看著比較懵逼,博主用通俗的語言講解一下吧,這張圖裡兩個英文單詞大家應該比較熟悉,一個Provider(提供者),一個Consumer(消費者),顧名思義,提供者用來提供服務,消費者用來消費服務的,舉個例子,房東和房客就是消費和被消費的關係,房東提供租房這項服務,房客把房子租下來,消費了租房這項服務.但是我們知道,當租房子時候苦於不知道價格,不好找房源等問題,這時候就出現了中介這個東西,也就是圖中的Registry(註冊),當我們想找房子的時候,就可以直接找中介,提供者(房東)會提前在中介上登記房源信息,我們只需要告訴中介我們需要什麼樣的租房服務,中介就會告訴我們我們需要的房子在哪哪哪,這就是dobbu的原理,最後Monitor(監控)則是負責查看提供者和消費者鏈接是否正常,(就如中介會讓你簽租房合同,這裡不是很恰當).這就是dubbo的原理,這時候有的同鞋就會問了,我直接將消費者和服務者鏈接起來不就可以了,為啥非要通過Registry這個東東?這裡我多說兩句.

dubbo既然出現了就一定是有他的需求的,也一定是解決了某些問題,那是哪種問題被解決了呢?當我們的系統服務客戶群只有幾十個,百個的時候完全沒必要用分散式集群搭建,只有當我們的客戶群數量極大,大到我們不得不採用分佈方法拆分系統,以防止系統耦合複雜,這樣當系統越來越複雜的時候,系統與系統之間的調用關係也越來越複雜,你可以想象淘寶將服務分散式架構圖會多複雜,我猜想淘寶的架構師自己都很難理清楚系統與系統之間的調用關係,這個時候我們加上一個中間機構,就有點像第三方,我們不管什麼服務都發佈在第三方,調用的時候只用在第三方調用就好了,這樣不就簡單很多嗎?這就是dubbo的作用.

dubbo大概講清楚了,下來說說dubbo使用方法吧

3.dubbo的使用

  我們知道,dubbo有一個Registry(註冊機構),dubbo官方推薦使用ZooKeeper,至於ZooKeeper的詳細介紹博主就不細說了,大家可以把它理解為第三方(需要部署在linux上的第三方機構),而消費者和提供者則是兩個發佈的服務,說白了就是用發佈的項目,其中有項目提供服務,有項目調用服務.

  關於提供者和消費者後面慢慢說,現在我們先說ZooKeeper的安裝.

安裝環境:

  Linux:centos6.4

  Jdk:1.7以上版本

 

Zookeeper是java開發的可以運行在windows、linux環境。需要先安裝jdk。

  安裝步驟:

第一步:安裝jdk

  詳細的需要去查看博主jdk安裝博文

第二步:把zookeeper的壓縮包上傳到linux系統。

博主曾經學過上傳工具的介紹使用,需要的童鞋自行查找下博主的博客

第三步:解壓縮壓縮包

tar -zxvf zookeeper-3.4.10.tar.gz

解壓成功後如上圖zookeeper-3.4.10藍色文件夾

第四步:進入zookeeper-3.4.6目錄,創建data文件夾。

就是新建data文件夾

博主這裡已經新建過了

第五步:把zoo_sample.cfg改名為zoo.cfg

ps:zoo_sample.cfg文件在conf文件夾中,其中dubbo的配置文件

[root@localhost conf]# mv zoo_sample.cfg zoo.cfg

這命令的意思為修改文件名稱改為zoo.cfg,大家也可以cp命令copy文件

第六步:修改data屬性:dataDir=/root/zookeeper-3.4.6/data

ps:這裡強調一下,這裡的地址要修改到你新建data文件的全限定名稱

 

第七步:啟動zookeeper

[root@localhost bin]# ./zkServer.sh start

關閉:[root@localhost bin]# ./zkServer.sh stop

查看狀態:[root@localhost bin]# ./zkServer.sh status

4.dubbo在java中的使用

 需要以來的jar包

ps:代碼中博主沒有貼出版本號,寫在這裡大家自行參考版本

<dubbo.version>2.5.3</dubbo.version>

<zookeeper.version>3.4.7</zookeeper.version>

<zkclient.version>0.1</zkclient.version>

<!-- dubbo相關 -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>dubbo</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework</groupId>
                    <artifactId>spring</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.jboss.netty</groupId>
                    <artifactId>netty</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
        </dependency>
        <dependency>
            <groupId>com.github.sgroschupf</groupId>
            <artifactId>zkclient</artifactId>
        </dependency>

 需要將dubbo配置在Spring文件中

<!-- 使用dubbo發佈服務 -->
    <!-- 提供方應用信息,用於計算依賴關係 -->
    <dubbo:application name="aliyun-manager" />
    <dubbo:registry protocol="zookeeper"
        address="192.168.32.129:2181" />
    <!-- 用dubbo協議在20880埠暴露服務 -->
    <dubbo:protocol name="dubbo" port="20880" />
    <!-- 聲明需要暴露的服務介面 -->
    <dubbo:service interface="cn.aliyun.service.ItemService" ref="itemServiceImpl" />

部分說明

如果沒什麼問題的話,這樣服務就發佈成功了.我們看一眼日誌

接受服務端dubbo配置文件

 <dubbo:application name="aliyun-manager-web"/>
    <dubbo:registry protocol="zookeeper" address="192.168.32.129:2181"/>    
    <dubbo:reference interface="cn.aliyun.service.ItemService" id="itemService" timeout="600000"/>

日誌

連接成功

ps:博主預設大家有一定的基礎,沒有特別詳細的寫過程,如果有什麼問題,在下方留言就好了

說一種情況,如果服務開啟後連接不上zookeeper,有可能是埠未開放,開放埠或關閉防火牆就好了

 

 

歡迎轉載: 

中文名:惠凡

博客名:淹死的魚o0

轉載時請說明出處:http://www.cnblogs.com/huifan/


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一、語法 transition: property duration timing-function delay transition屬性是個複合屬性,她包括以下幾個子屬性: transition-property :規定設置過渡效果的css屬性名稱 transition-duration :規定完 ...
  • 1:定義:javascript是一種弱類型、動態類型、解釋型的腳本語言。 弱類型:類型檢查不嚴格,偏向於容忍隱式類型轉換。 強類型:類型檢查嚴格,偏向於不容忍隱式類型轉換。 動態類型:運行的時候執行類型檢查。 靜態類型:編譯的時候就知道每個變數的類型。 解釋型:程式不需要編譯,程式在運行的時候才翻譯 ...
  • 本文最初發表於 "博客園" ,併在 "GitHub" 上持續更新 前端的系列文章 。歡迎在GitHub上關註我,一起入門和進階前端。 以下是正文。 CSS3介紹 CSS3在CSS2基礎上, 增強 或 新增 了許多特性, 彌補了CSS2的眾多不足之處,使得Web開發變得更為高效和便捷。 CSS3的現狀 ...
  • 概要 字典是用來存儲不重覆key的Hash結構。不同於集合(Set)的一點,字典使用的是[key,value]的形式來存儲數據。 JavaScript的對象(Object:{})只能用字元串當做key。使用起來有一定限制。 為瞭解決這個問題,ES6提供的Map數據結構。它類似與對象,也是[key,v ...
  • 鏈接:https://pan.baidu.com/s/1i7cSkqL 密碼:g80i 最近給央視做了個H5答題游戲,但在倒計時上遇到一個終端問題:手機端按Home鍵將微信收入後臺之後,IOS11 會繼續跑JS五秒鐘,註意是5秒,也就是倒計時9的時候收到後臺,等1分鐘再打開,JS會從4開始倒計時。 ...
  • 鏈接:https://pan.baidu.com/s/1kW1At9d 密碼:g0he 這裡說的div是指固定大小的,動態往裡面填充文字的時候,文字一直水平垂直居中(換行也是)。就和td標簽一樣。當然這個demo是針對文字的,如果有人問圖片和其他固定大小的盒模型怎麼辦- -我只能說回去好好學學基礎, ...
  • 介紹CSS中的:befor、:after創建的偽元素幾種使用場景,如填充文本、作為iconfont、進度線、時間線以及幾何圖形。 ...
  • html是很多人編程的入門領域。作為初學者,不管你是在哪裡學的,學校,視頻教程,網路教程等等……它們都會告訴你HTML即:超文本標記語言(Hyper Text Markup Language)。但第一次接觸或許很難理解這簡簡單單的幾個字。 excel表格相信大家都有接觸,保持在磁碟上的文件尾碼名為“ ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...