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" 如下
[root@localhost local]# vim /etc/hosts [root@localhost 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/
[root@localhost zookeeper-3.4.6]# pwd
/usr/local/zookeeper-3.4.6
3、在/usr/local/zookeeper-3.4.6目錄下創建目錄:
[root@localhost zookeeper-3.4.6]# mkdir logs [root@localhost zookeeper-3.4.6]# mkdir data
4、將/usr/local/zookeeper-3.4.6/conf目錄下的zoo_sample.cfg復制一份,命名為zoo.cfg
[root@localhost conf]# pwd
/usr/local/zookeeper-3.4.6/conf [root@localhost conf]# cp zoo_sample.cfg zoo.cfg
5、修改zoo.cfg文件內容如下:
[root@localhost 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文件,輸入當前服務機器所對應的編號
[root@localhost data]# pwd
/usr/local/zookeeper-3.4.6/data [root@localhost data]# ls myid [root@localhost data]# cat myid 1 [root@localhost data]#
7、將zookeeper配置到環境變量
[root@localhost data]# vim /etc/profile

  在文件末尾增加

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

 

  保存退出,使配置生效

[root@localhost data]# source /etc/profile
8、在防火牆打開要用到得到端口2181、2888、3888
[root@localhost 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
  重啟防火牆
[root@localhost data]# service iptables restart
[root@localhost data]# service iptables status
9、啟動zookeeper
[root@localhost 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 # 查看狀態 [root@localhost 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 # 查看輸出的服務信息 [root@localhost zookeeper-3.4.6]# tail -500f /usr/local/zookeeper-3.4.6/bin/zookeeper.out
10、配置zookeeper隨機啟動
[root@localhost 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]


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM