1. 程式人生 > >dubbo釋出web服務例項

dubbo釋出web服務例項

dubbo角色與呼叫執行過程

dubbo節點角色說明:
provider: 暴露服務的服務提供方
consumer: 呼叫遠端服務的服務消費方
registry: 服務註冊於發現的註冊中心
monitor: 統計服務的呼叫次數和呼叫時間的監控中心
container:服務執行容器

dubbo呼叫關係說明:
1、服務容器負責啟動,載入,執行服務提供者
2、服務提供者在啟動時,向註冊中心註冊自己提供的服務
3、服務消費者在啟動時,向註冊中心訂閱自己所需的服務
4、註冊中心返回服務提供者地址列表給消費者,如果有變更,註冊中心將基於長連線推送變更資料給消費者
5、服務消費者,從提供者地址列表中,基於軟負載均衡演算法,選一臺提供者進行呼叫,如果的呼叫失敗,則選擇另一臺呼叫
6、服務消費者和提供者,在記憶體中累計呼叫次數和呼叫時間,定時每分鐘傳送一次統計資料到監控中心

註冊中心:
zookeeper(建議使用2.3.3以上版本)
dubbo未對zookeeper服務端做任何侵入修改,只需安裝原生的zookeeper伺服器即可.所有註冊中心邏輯適配都在呼叫zookeeper客戶端時完成

zookeeper註冊中心安裝


筆者環境:
a)虛擬機器centos
IP地址:[192.168.1.107]

b)zookeeper
zk版本: [zookeeper-3.4.6]
1、修改/etc/hosts檔案新增host"192.168.1.107 zk-provider" 如下
[[email protected] local]# vim /etc/hosts
[[email protected] local]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.1.107 zk-provider
2、解壓zookeeper-3.4.6到/usr/local/
[[email protected] zookeeper-3.4.6]# pwd
/usr/local/zookeeper-3.4.6
3、在/usr/local/zookeeper-3.4.6目錄下建立目錄:
[[email protected] zookeeper-3.4.6]# mkdir logs
[[email protected] zookeeper-3.4.6]# mkdir data
4、將/usr/local/zookeeper-3.4.6/conf目錄下的zoo_sample.cfg複製一份,命名為zoo.cfg
[[email protected] conf]# pwd
/usr/local/zookeeper-3.4.6/conf
[[email protected] conf]# cp zoo_sample.cfg zoo.cfg
5、修改zoo.cfg檔案內容如下:
[[email protected] conf]# cat zoo.cfg
tickTime=2000
#initLimit這個配置項是用來配置zookeeper介面客戶端
initLimit=10
syncLimit=5
dataDir=/usr/local/zookeeper-3.4.6/data
dtaLogDir=/usr/local/zookeeper-3.4.6/logs
clientPort=2181
server.1=zk-provider:2888:3888
說明:server.1=zk-provider:2888:3888等同於server.1=192.168.1.107:2888:3888
6、在/usr/local/zookeeper-3.4.6/data下建立myid檔案,輸入當前服務機器所對應的編號
[[email protected] data]# pwd
/usr/local/zookeeper-3.4.6/data
[[email protected] data]# ls
myid
[[email protected] data]# cat myid
1
[[email protected] data]#
7、將zookeeper配置到環境變數
[[email protected] data]# vim /etc/profile

  在檔案末尾增加

# zookeeper env
export ZOOKEEPER_HOME=/usr/local/zookeeper-3.4.6
export PATH=$ZOOKEEPER_HOME/bin:$PATH

儲存退出,使配置生效

[[email protected] data]# source /etc/profile
8、在防火牆開啟要用到得到埠2181、2888、3888
[[email protected] data]# vim /etc/sysconfig/iptables
  在COMMIT之前增加如下:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 2181 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 2888 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3888 -j ACCEPT
重啟防火牆
[[email protected] data]# service iptables restart
[[email protected] data]# service iptables status
9、啟動zookeeper
[[email protected] zookeeper-3.4.6]# /usr/local/zookeeper-3.4.6/bin/zkServer.sh start
JMX enabled by default
Using config: /usr/local/zookeeper-3.4.6/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
# 檢視狀態
[[email protected] zookeeper-3.4.6]# zkServer.sh status
JMX enabled by default
Using config: /usr/local/zookeeper-3.4.6/bin/../conf/zoo.cfg
Mode: standalone
# 檢視輸出的服務資訊
[[email protected] zookeeper-3.4.6]# tail -500f /usr/local/zookeeper-3.4.6/bin/zookeeper.out
10、配置zookeeper隨機啟動
[[email protected] zookeeper-3.4.6]# vim /etc/rc.local
# 增加如下命令
/usr/local/zookeeper-3.4.6/bin/zkServer.sh start
dubbo服務釋出與呼叫
1、服務釋出
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
    xsi:schemaLocation="http://www.springframework.org/schema/beans  
            http://www.springframework.org/schema/beans/spring-beans.xsd  
            http://code.alibabatech.com/schema/dubbo  
            http://code.alibabatech.com/schema/dubbo/dubbo.xsd">

    <!-- 提供方應用資訊,用於計算依賴關係 -->
    <dubbo:application name="ws-server-user" />

    <!-- 使用zookeeper註冊中心暴露服務地址 -->
    <dubbo:registry protocol="zookeeper" address="192.168.1.107:2181" />

    <!-- 用dubbo協議在20880埠暴露服務 -->
    <dubbo:protocol name="dubbo" port="20880" />

    <bean id="userFacade" class="com.ws.server.UserFacadeImpl" />
    <!-- 使用者服務介面 -->
    <dubbo:service interface="com.ws.facade.UserFacade" ref="userFacade" />

</beans>  
2、服務呼叫
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:dubbo
="http://code.alibabatech.com/schema/dubbo" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd"> <!-- 消費方應用名,用於計算依賴關係,不是匹配條件,不要與提供方一樣 --> <dubbo:application name="ws-client-invoke-user" /> <!-- 使用zookeeper註冊中心暴露服務地址 --> <!-- 註冊中心地址 --> <dubbo:registry protocol="zookeeper" address="192.168.1.107:2181" /> <!-- 使用者服務介面 --> <dubbo:reference interface="com.ws.facade.UserFacade" id="userFacadeClient" check="false"/> </beans>
例項demo: http://files.cnblogs.com/files/dennisit/dubbo-ws.zip

轉載請註明出處:[http://www.cnblogs.com/dennisit/p/4542901.html]

相關推薦

dubbo釋出web服務例項

dubbo角色與呼叫執行過程dubbo節點角色說明:provider: 暴露服務的服務提供方consumer: 呼叫遠端服務的服務消費方registry: 服務註冊於發現的註冊中心monitor: 統計服務的呼叫次數和呼叫時間的監控中心container:服務執行容器dubbo呼叫關係說明:1、服務容器負責啟

(三)WebService之CXF釋出Web服務

1.引言       Apache CXF 是一個開源的 Services 框架,利用CXF可以釋出SOAP型別的服務,也可以釋出rest型別的服務。CXF還可以和Spring無縫整合。 2.CXF釋出服務 首先引用cxf的jar包

ajax 釋出web 服務 未能載入型別的解決辦法

<add verb="*" path="*.asmx" type="Microsoft.Web.Services.ScriptHandlerFactory" validate="false"/> 修改成為

springboot2.0+dubbo整合分散式服務釋出和呼叫

       最近專案上要對以前的老專案做分散式的整改,因此我專門花了點時間研究下當前比較熱門的dubbo和springboot結合使用,以前使用過dubbo,但是沒有與springboot結合過,在網上查了點資料,感覺要麼是springboot版本過低,要麼是dubb

Dubbo服務合買平臺搭建出售釋出服務暴露&心跳機制&服務註冊

Dubbo服務釋出 Dubbo合買平臺搭建出售 dsluntan.com Q:3393756370 VX:17061863513服務釋出影響流程的主要包括三個部分,依次是: 服務暴露 心跳 服務註冊 服務暴露是對外提供服務及暴露埠,以便消費端可以正常調通服務。心跳機制保證伺服器端及客戶

dubbo原始碼分析-服務釋出流程-筆記

Spring對外留出的擴充套件 dubbo是基於spring 配置來實現服務的釋出的,那麼一定是基於spring的擴充套件來寫了一套自己的標籤,那麼spring是如何解析這些配置呢?具體細節就不在這裡講解,大家之前在學習spring原始碼的時候,應該有講過。總的來說,就是可以通過spring的擴充套

使用 Web 服務 為 ECS Linux 例項配置網站及繫結域名

Nginx 服務繫結域名 以 YUM 安裝的 Nginx 為例: 執行命令 vi /etc/nginx/nginx.conf 編輯 Nginx 的配置檔案,將預設的server {...} 配置修改為以下內容:

基於Flask實現檔案的上傳功能的多例項Web服務

flask是Python中非常輕量的Web框架,允許開發者以非常少的程式碼實現各類的Web應用,本文將簡單例項一個簡單Web的檔案上傳功能的開發。 環境介紹 Centos 7.2, virtual env 下的python 3。 安裝flask

在spring web專案中使用Apache CXF框架釋出webservice服務

場景: 使用Apache CXF釋出一個查詢城市資訊的服務,       查到資訊是服務端寫的一個JSON格式的靜態資料,使用webservice的最簡流程。 1.建立spring web專案,且確保web專案在Tomcat中能正常啟動。   講解:本例的

基於註解的spring+dubbo釋出一個簡單的helloWord服務及呼叫

主要步驟如下(細節省略): 一、建立一個Maven主工程HelloWord-parent 二、在主工程下的pom檔案中引入spring、log4j、dubbo、zookeeper、zkclient包依賴 三、在主工程下建立子工程api作為提供方的介面,建立時其maven會自

使用CXF釋出WebService服務簡單例項

一、說明: 前面介紹了使用axis2來發布Webservice服務,現在介紹一種更popular,更高效的Webservice服務釋出技術:CXF Apache CXF = Celtix + XFire,Apache CXF 的前身叫 Apache CeltiXfire,

Dubbo分散式遠端服務呼叫框架(告別Web Service模式中的WSdl,以服務者與消費者的方式在dubbo上註冊

1. Dubbo是什麼? Dubbo是一個分散式服務框架,致力於提供高效能和透明化的RPC遠端服務呼叫方案,以及SOA服務治理方案。簡單的說,dubbo就是個服務框架,如果沒有分散式的需求,其實是不需要用的,只有在分散式的時候,才有dubbo這樣的分散式服務框架的需求,

整合安裝6 jenkins構建釋出 soa服務web專案

OK 前面已經把直接需要構建完成的專案構建完成併發布到私有庫中去了,那接下來就是需要構建bhz-sys-service (SOA服務) 和bhz-sys(web服務)專案了(這倆個工程和之前的區別是需要部署到其他節點上去 才能使其能夠執行起來)1、首先建立一個bhz-sys

商城專案-dubbo,框架整合,dubbo釋出和引用服務

DUBBO:資源排程和治理中心的管理工具 節點角色說明: ·       Provider:暴露服務的服務提供方。 ·       Consumer:呼叫遠端服務的服務消費方。 ·       Registry:服務註冊與發現的註冊中心。 ·       Monito

dubbo釋出和呼叫服務

1.釋出服務    <!-- 宣告需要暴露的服務介面 -->     <dubbo:protocol  name="dubbo" port="9092"/>     <dubbo:service interface="IConfigReadSe

WF工作流技術內幕 —— 通過Web服務呼叫Workflow工作流(基礎例項

在開發一個企業ERP系統時,其業務流程是開發的關鍵,系統往往會將開發好的業務方案發布為Web服務以供外界呼叫。客戶可以通過伺服器,網際網路等等方式 去呼叫服務,而解決業務上需要及資訊的交換問題。有見及此,微軟在.NET 3.0基礎上釋出了WF,WCF,以及WCS,WPF(為

comet4j java服務端推送訊息到web頁面例項

官網:http://code.google.com/p/comet4j/ 準備工作 下載服務端jar檔案 Comet4J目前僅支援Tomcat6、7版本,根據您所使用的Tomcat版本下載【comet4jtomcat6.jar】或【comet4j-tomcat7.

搞懂Dubbo服務釋出服務註冊

一.前言   本文講服務釋出與服務註冊,服務提供者本地釋出服務,然後向註冊中心註冊服務,將服務實現類以服務介面的形式提供出去,以便服務消費者從註冊中心查閱並呼叫服務。   本文原始碼分析基於org.apache.dubbo:dubbo:2.7.2,服務端程式碼例子是上文的例子   如果沒有Dubbo S

web服務器出現大量CLOSE_WAIT連接的前因後果

運維 但是 恢復 response 存在 用戶 獲取數據 cnblogs 技術分享   公司網站一直很穩定,前段時間開始偶爾出現網站無法打開,提示504的錯誤,運維有懷疑是程序更新引起的,但是仔細看過代碼並沒有獲取數據量過大的地方,而且數據庫表現也一直很平穩。所以一直也無從

什麽是Web Service(Web服務)?

left 解決方案 暴露 它的 標準 編程 面向服務 好的 什麽是 從表面上看,Web Service就是一個應用程序,它向外界暴露出一個能夠通過Web進行調用的API。例如可以創建一個提供天氣預報的Web Service,那麽無論你用哪種編程語言開發的應用都可以通過調用它