国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
【JAVA秒會(huì)技術(shù)之Dubbo入門(mén)】Dubbo在電商開(kāi)發(fā)中的應(yīng)用

Dubbo在電商開(kāi)發(fā)中的應(yīng)用

一、Dubbo背景

所謂背景介紹,就是我們?cè)谑裁辞闆r下,基于什么原因開(kāi)發(fā)了這樣一個(gè)中間件?”就博主來(lái)看,簡(jiǎn)而言之,總結(jié)如下:

(1) 隨著服務(wù)的不斷增多,服務(wù)的URL配置管理變得非常困難。此時(shí),我們需要找一個(gè)中介替我們管理。

(2) 服務(wù)間的依賴(lài)關(guān)系變得錯(cuò)蹤復(fù)雜,相互調(diào)用混亂。此時(shí),我們需要厘清誰(shuí)是服務(wù)提供方,誰(shuí)是服務(wù)的消費(fèi)方。

(3) 服務(wù)間的調(diào)用量越來(lái)越大,服務(wù)的容量問(wèn)題就暴露出來(lái),這個(gè)服務(wù)需要多少機(jī)器支撐?什么時(shí)候該加機(jī)器?此時(shí),我們需要有一個(gè)自動(dòng)監(jiān)控系統(tǒng),幫助我們監(jiān)控管理這一切。

基于以上三點(diǎn),我們?cè)僮鲆粋€(gè)進(jìn)一步提?。?/p>

我們需要一個(gè)管理眾多服務(wù)URL的中介 ——注冊(cè)中心;

我們需要搞清服務(wù)間復(fù)雜的依賴(lài)關(guān)系 ——服務(wù)提供方服務(wù)消費(fèi)方;

我們需要有一個(gè)自動(dòng)監(jiān)控系統(tǒng),監(jiān)管一切 ——監(jiān)控中心。

如此,我們Dubbo的模型就自然而然的出來(lái)了。

二、Dubbo簡(jiǎn)介

Dubbo是Alibaba開(kāi)源的分布式服務(wù)框架,它最大的特點(diǎn)是按照分層的方式來(lái)架構(gòu),使用這種方式可以使各個(gè)層之間解耦合(或者最大限度地松耦合),比如表現(xiàn)層和業(yè)務(wù)層就需要解耦合。

從面向服務(wù)的角度來(lái)看,Dubbo采用的是一種非常簡(jiǎn)單的模型,要么是提供方提供服務(wù),要么是消費(fèi)方消費(fèi)服務(wù),所以基于這一點(diǎn)可以抽象出服務(wù)提供方(Provider)服務(wù)消費(fèi)方(Consumer)兩個(gè)角色。

除了以上兩個(gè)角色,它還有注冊(cè)中心和監(jiān)控中心。它可以通過(guò)注冊(cè)中心對(duì)服務(wù)進(jìn)行注冊(cè)和訂閱,實(shí)現(xiàn)了軟負(fù)載均衡和Failover(故障切換),降低對(duì)F5硬件負(fù)載均衡器的依賴(lài),也能減少部分成本。同事,還可以通過(guò)監(jiān)控中心對(duì)服務(wù)進(jìn)行監(jiān)控,這樣的話(huà),就可以知道哪些服務(wù)使用率高、哪些服務(wù)使用率低。對(duì)使用率高的服務(wù)增加機(jī)器,對(duì)使用率低的服務(wù)減少機(jī)器,達(dá)到合理分配資源的目的。


調(diào)用關(guān)系說(shuō)明:

[0] 服務(wù)容器負(fù)責(zé)啟動(dòng),加載,運(yùn)行服務(wù)提供者。

[1] 服務(wù)提供者在啟動(dòng)時(shí),向注冊(cè)中心注冊(cè)自己提供的服務(wù)。

[2] 服務(wù)消費(fèi)者在啟動(dòng)時(shí),向注冊(cè)中心訂閱自己所需的服務(wù)。

[3] 注冊(cè)中心返回服務(wù)提供者地址列表給消費(fèi)者,如果有變更,注冊(cè)中心將基于長(zhǎng)連接推送變更數(shù)據(jù)給消費(fèi)者。

[4] 服務(wù)消費(fèi)者,從提供者地址列表中,基于軟負(fù)載均衡算法,選一臺(tái)提供者進(jìn)行調(diào)用,如果調(diào)用失敗,再選另一臺(tái)調(diào)用。

[5] 服務(wù)消費(fèi)者和提供者,在內(nèi)存中累計(jì)調(diào)用次數(shù)和調(diào)用時(shí)間,定時(shí)每分鐘發(fā)送一次統(tǒng)計(jì)數(shù)據(jù)到監(jiān)控中心。

三、注冊(cè)中心

注冊(cè)中心負(fù)責(zé)服務(wù)地址的注冊(cè)與查找,相當(dāng)于目錄服務(wù),服務(wù)提供者和消費(fèi)者只在啟動(dòng)時(shí)與注冊(cè)中心交互,注冊(cè)中心不轉(zhuǎn)發(fā)請(qǐng)求,壓力較小。Dubbo目前支持4種注冊(cè)中心,(multicast、zookeeper、Redis、simple),但是對(duì)于dubbo-2.3.3以上版本,建議使用Zookeeper注冊(cè)中心。

1)Zookeeper簡(jiǎn)介

Zookeeper是Apacahe Hadoop的子項(xiàng)目,是一個(gè)樹(shù)型的目錄服務(wù),支持變更推送,適合作為Dubbo服務(wù)的注冊(cè)中心,工業(yè)強(qiáng)度較高,可用于生產(chǎn)環(huán)境,并推薦使用。


流程說(shuō)明:

①服務(wù)提供者啟動(dòng)時(shí):
   
向/dubbo/com.foo.BarService/providers目錄下寫(xiě)入自己的URL地址。
②服務(wù)消費(fèi)者啟動(dòng)時(shí):
    訂閱/dubbo/com.foo.BarService/providers目錄下的提供者URL地址。
    并向/dubbo/com.foo.BarService/consumers目錄下寫(xiě)入自己的URL地址。
③監(jiān)控中心啟動(dòng)時(shí):
    訂閱/dubbo/com.foo.BarService目錄下的所有提供者和消費(fèi)者URL地址。

支持以下功能:

①當(dāng)提供者出現(xiàn)斷電等異常停機(jī)時(shí),注冊(cè)中心能自動(dòng)刪除提供者信息。
②當(dāng)注冊(cè)中心重啟時(shí),能自動(dòng)恢復(fù)注冊(cè)數(shù)據(jù),以及訂閱請(qǐng)求。
③當(dāng)會(huì)話(huà)過(guò)期時(shí),能自動(dòng)恢復(fù)注冊(cè)數(shù)據(jù),以及訂閱請(qǐng)求。
④當(dāng)設(shè)置<dubbo:registry check="false" />時(shí),記錄失敗注冊(cè)和訂閱請(qǐng)求,后臺(tái)定時(shí)重試。
⑤可通過(guò)<dubbo:registry username="admin" password="1234" />設(shè)置zookeeper登錄信息。
⑥可通過(guò)<dubbo:registry group="dubbo" />設(shè)置zookeeper的根節(jié)點(diǎn),不設(shè)置將使用無(wú)根樹(shù)。
⑦支持*號(hào)通配符<dubbo:reference group="*" version="*" />,可訂閱服務(wù)的所有分組和所有版本的提供者

2)Zookeeper單機(jī)安裝

安裝環(huán)境:Linux centOSJDK環(huán)境(Zookeeper是由Java開(kāi)發(fā)的)

第一步:下載zookeeper的壓縮包,上傳到linux系統(tǒng)

[plain] view plain copy
  1. 下載Zookeeper-3.4.5.tar.gz 地址http://www.apache.org/dist/zookeeper/  

第二步:解壓縮

[plain] view plain copy
  1. tar -zxf zookeeper-3.4.5.tar.gz  

第三步:創(chuàng)建zoo.cfg文件,進(jìn)入zookeeper-3.4.5/conf/目錄,修改zoo_sample.cfg 為zoo.cfg

[plain] view plain copy
  1. cp zoo_sample.cfg zoo.cfg  

第四步:配置zoo.cfg

[plain] view plain copy
  1. 主要配置dataDir和clientPort參數(shù)。例如:dataDir = /usr/local/zookeeper/data; clientPort = 2181。  
  2. 注意:datadir目錄中的data末級(jí)目錄如果不存在,也會(huì)自動(dòng)生成。  

第五步:?jiǎn)?dòng)zookeeper

[plain] view plain copy
  1. 啟動(dòng)命令:./zkServer.sh start  
  2. 關(guān)閉命令:./zkServer.sh stop  
  3. 查看狀態(tài)命令:./zkServer.sh status  
第六步:關(guān)閉防火墻(可選)

[plain] view plain copy
  1. 暫時(shí)關(guān)閉:service iptables stop  
  2. 永久關(guān)閉:chkconfig iptables off</strong>  

四、Dubbo的配置

Dubbo采用全spring配置方式,透明化接入應(yīng)用,對(duì)應(yīng)用沒(méi)有任何API侵入,只需用Spring加載Dubbo的配置即可,Dubbo基于Spring的Schema擴(kuò)展進(jìn)行加載。

Maven的pom.xml中配置如下

[plain] view plain copy
  1. <dependency>  
  2. <!-- 配置zookeeper的客戶(hù)端Curator支持Fluent風(fēng)格的操作API -->  
  3.     <groupId>com.netflix.curator</groupId>  
  4.     <artifactId>curator-framework</artifactId>  
  5.     <version>${com.netflix.curator.version}</version>  
  6. </dependency>  
  7. <dependency>  
  8. <!-- 配置zookeeper的客戶(hù)端ZkClient -->  
  9. <!-- 可以解決常見(jiàn)問(wèn)題:重復(fù)注冊(cè)watcher、session失效重連、異常處理。 -->  
  10.     <groupId>com.101tec</groupId>  
  11.     <artifactId>zkclient</artifactId>  
  12.     <version>${com.101tec.version}</version>  
  13.     <exclusions>  
  14.         <exclusion>  
  15.             <!-- 添加日志 -->  
  16.                 <groupId>org.slf4j</groupId>  
  17.                 <artifactId>slf4j-log4j12</artifactId>  
  18.         </exclusion>  
  19.     </exclusions>  
  20. </dependency>  
  21. <dependency>  
  22. <!-- 配置Zookeeper -->  
  23.     <groupId>org.apache.zookeeper</groupId>  
  24.     <artifactId>zookeeper</artifactId>  
  25.     <version>${org.apache.zookeeper.version}</version>  
  26.         <exclusions>  
  27.             <exclusion>  
  28.                 <!-- 添加日志 -->  
  29.                 <groupId>org.slf4j</groupId>  
  30.                 <artifactId>slf4j-log4j12</artifactId>  
  31.             </exclusion>  
  32.         </exclusions>  
  33. </dependency>  
  34. <dependency>  
  35. <!-- 配置Dubbo -->  
  36.     <groupId>com.alibaba</groupId>  
  37.     <artifactId>dubbo</artifactId>  
  38.     <version>${com.alibaba.version}</version>  
  39.         <exclusions>  
  40.             <exclusion>  
  41.                 <artifactId>spring</artifactId>  
  42.                 <groupId>org.springframework</groupId>  
  43.             </exclusion>  
  44.         </exclusions>  
  45. </dependency>  

applicationContext.xml中添加如下配置

[plain] view plain copy
  1. <!-- 引入Dubbo相關(guān)的配置文件 -->  
  2.     <import resource="applicationContext-dubbo.xml"/>  
  3.     <import resource="service-provider.xml"/>  
  4.     <import resource="service-consumer.xml"/>  

applicationContext-dubbo.xml中添加如下配置

[plain] view plain copy
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  3.     xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"  
  4.     xmlns="http://www.springframework.org/schema/beans"  
  5.     xsi:schemaLocation="  
  6.     http://www.springframework.org/schema/beans   
  7.     http://www.springframework.org/schema/beans/spring-beans-2.5.xsd  
  8.     http://code.alibabatech.com/schema/dubbo   
  9.     http://code.alibabatech.com/schema/dubbo/dubbo.xsd">  
  10.     <!-- 注冊(cè)中心地址 -->  
  11.     <dubbo:registry protocol="zookeeper" address="${dubbo.protocol.zookeeper}"  
  12.         client="curator" file="docservice-query.properties" />   
  13.     <!-- 本地緩存文件(保留已注冊(cè)的服務(wù)) -->  
  14.     <!--<dubbo:registry address="multicast://224.5.96.10:1234" /> -->  
  15.     <!-- 提供方應(yīng)用信息:application-計(jì)算依賴(lài)關(guān)系。name-應(yīng)用名,owner-負(fù)責(zé)人 -->  
  16.     <dubbo:application name="${dubbo.application.name}"  
  17.         owner="${dubbo.application.owner}" logger="slf4j" />  
  18.     <!-- 注冊(cè)端口名字(接收器)-->  
  19.     <dubbo:protocol name="${dubbo.protocol.name}" port="${dubbo.protocol.port}" />  
  20.     <!-- 當(dāng)前提供組名 -->  
  21.     <dubbo:provider group="${dubbo.registry.group}" />  
  22.     <!-- 需要消費(fèi)的消費(fèi)組名 -->  
  23.     <dubbo:consumer group="${dubbo.registry.group}" />  
  24. </beans>  

服務(wù)提供方service-provider.xml配置如下

[plain] view plain copy
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  3.        xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"  
  4.        xmlns="http://www.springframework.org/schema/beans"  
  5.        xsi:schemaLocation="  
  6.    http://www.springframework.org/schema/beans  
  7.    http://www.springframework.org/schema/beans/spring-beans-2.5.xsd  
  8.    http://code.alibabatech.com/schema/dubbo  
  9.    http://code.alibabatech.com/schema/dubbo/dubbo.xsd">  
  10. <!-- 需要暴露的服務(wù)地址以及服務(wù)名 ,protocol接收器標(biāo)識(shí)-->  
  11. <dubbo:service interface="com.xxx.XxxService" ref="xxxService"  
  12.     protocol="dubbo"  timeout="1000"/>  
  13. </beans>  

服務(wù)消費(fèi)方service-consumer.xml配置如下

[plain] view plain copy
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  3.        xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"  
  4.        xmlns="http://www.springframework.org/schema/beans"  
  5.        xsi:schemaLocation="  
  6.    http://www.springframework.org/schema/beans  
  7.    http://www.springframework.org/schema/beans/spring-beans-2.5.xsd  
  8.    http://code.alibabatech.com/schema/dubbo  
  9.    http://code.alibabatech.com/schema/dubbo/dubbo.xsd">  
  10. <!-- 需要暴露的服務(wù)地址以及服務(wù)名 ,protocol接收器標(biāo)識(shí)-->  
  11. <dubbo:reference interface="com.xxx.XxxService" id="xxxService" protocol="dubbo"  
  12.      timeout="10000" init="true" group="${dubbo.registry.group}" check="false"/>  
dubbo.properties配置如下

[plain] view plain copy
  1. <strong>#注冊(cè)端口名字(接收器)  
  2. dubbo.application.name=service-query  
  3. dubbo.protocol.name=dubbo  
  4. dubbo.protocol.port=20020  
  5. #contarin conf  
  6. dubbo.container=logback,spring  
  7. dubbo.shutdown.hook=true  
  8. #log  
  9. dubbo.application.logger=slf4j  
  10. #spring container  
  11. dubbo.spring.config=classpath*:*spring/applicationContext.xml  
  12. dubbo.logback.level=debug  
  13. dubbo.logback.maxhistory=30</strong>  

 

 

 

 

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶(hù)發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
微服務(wù)的一種開(kāi)源實(shí)現(xiàn)方式
Dubbo和Zookeeper
零基礎(chǔ)都秒懂:手把手教你搭建一套微服務(wù)框架!
Dubbo+Zookeeper
SpringBoot集成Dubbo
Dubbo源碼分析:小白入門(mén)篇
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服