亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

dubbo的分析和使用

wow_worktile / 686人閱讀

摘要:統(tǒng)計(jì)服務(wù)的調(diào)用次調(diào)和調(diào)用時(shí)間的監(jiān)控中心。調(diào)用關(guān)系說(shuō)明服務(wù)容器負(fù)責(zé)啟動(dòng),加載,運(yùn)行服務(wù)提供者。服務(wù)提供者在啟動(dòng)時(shí),向注冊(cè)中心注冊(cè)自己提供的服務(wù)。調(diào)度中心基于訪問(wèn)壓力自動(dòng)增減服務(wù)提供者。

隨著互聯(lián)網(wǎng)的發(fā)展,網(wǎng)站應(yīng)用的規(guī)模不斷擴(kuò)大,常規(guī)的垂直應(yīng)用架構(gòu)已無(wú)法應(yīng)對(duì),分布式服務(wù)架構(gòu)以及流動(dòng)計(jì)算架構(gòu)勢(shì)在必行,亟需一個(gè)治理系統(tǒng)確保架構(gòu)有條不紊的演進(jìn)。

? 單一應(yīng)用架構(gòu)
? 當(dāng)網(wǎng)站流量很小時(shí),只需一個(gè)應(yīng)用,將所有功能都部署在一起,以減少部署節(jié)點(diǎn)和成本。
? 此時(shí),用于簡(jiǎn)化增刪改查工作量的 數(shù)據(jù)訪問(wèn)框架(ORM) 是關(guān)鍵。
? 垂直應(yīng)用架構(gòu)
? 當(dāng)訪問(wèn)量逐漸增大,單一應(yīng)用增加機(jī)器帶來(lái)的加速度越來(lái)越小,將應(yīng)用拆成互不相干的幾個(gè)應(yīng)用,以提升效率。
? 此時(shí),用于加速前端頁(yè)面開發(fā)的 Web框架(MVC) 是關(guān)鍵。
? 分布式服務(wù)架構(gòu)
? 當(dāng)垂直應(yīng)用越來(lái)越多,應(yīng)用之間交互不可避免,將核心業(yè)務(wù)抽取出來(lái),作為獨(dú)立的服務(wù),逐漸形成穩(wěn)定的服務(wù)中心,使前端應(yīng)用能更快速的響應(yīng)多變的市場(chǎng)需求。
? 此時(shí),用于提高業(yè)務(wù)復(fù)用及整合的 分布式服務(wù)框架(RPC) 是關(guān)鍵。
? 流動(dòng)計(jì)算架構(gòu)
? 當(dāng)服務(wù)越來(lái)越多,容量的評(píng)估,小服務(wù)資源的浪費(fèi)等問(wèn)題逐漸顯現(xiàn),此時(shí)需增加一個(gè)調(diào)度中心基于訪問(wèn)壓力實(shí)時(shí)管理集群容量,提高集群利用率。
? 此時(shí),用于提高機(jī)器利用率的 資源調(diào)度和治理中心(SOA) 是關(guān)鍵。

在大規(guī)模服務(wù)化之前,應(yīng)用可能只是通過(guò)RMI或Hessian等工具,簡(jiǎn)單的暴露和引用遠(yuǎn)程服務(wù),通過(guò)配置服務(wù)的URL地址進(jìn)行調(diào)用,通過(guò)F5等硬件進(jìn)行負(fù)載均衡。
(1) 當(dāng)服務(wù)越來(lái)越多時(shí),服務(wù)URL配置管理變得非常困難,F(xiàn)5硬件負(fù)載均衡器的單點(diǎn)壓力也越來(lái)越大。
此時(shí)需要一個(gè)服務(wù)注冊(cè)中心,動(dòng)態(tài)的注冊(cè)和發(fā)現(xiàn)服務(wù),使服務(wù)的位置透明。
并通過(guò)在消費(fèi)方獲取服務(wù)提供方地址列表,實(shí)現(xiàn)軟負(fù)載均衡和Failover,降低對(duì)F5硬件負(fù)載均衡器的依賴,也能減少部分成本。
(2) 當(dāng)進(jìn)一步發(fā)展,服務(wù)間依賴關(guān)系變得錯(cuò)蹤復(fù)雜,甚至分不清哪個(gè)應(yīng)用要在哪個(gè)應(yīng)用之前啟動(dòng),架構(gòu)師都不能完整的描述應(yīng)用的架構(gòu)關(guān)系。這時(shí),需要自動(dòng)畫出應(yīng)用間的依賴關(guān)系圖,以幫助架構(gòu)師理清理關(guān)系。
(3) 接著,服務(wù)的調(diào)用量越來(lái)越大,服務(wù)的容量問(wèn)題就暴露出來(lái),這個(gè)服務(wù)需要多少機(jī)器支撐?什么時(shí)候該加機(jī)器?
為了解決這些問(wèn)題,第一步,要將服務(wù)現(xiàn)在每天的調(diào)用量,響應(yīng)時(shí)間,都統(tǒng)計(jì)出來(lái),作為容量規(guī)劃的參考指標(biāo)。其次,要可以動(dòng)態(tài)調(diào)整權(quán)重,在線上,將某臺(tái)機(jī)器的權(quán)重一直加大,并在加大的過(guò)程中記錄響應(yīng)時(shí)間的變化,直到響應(yīng)時(shí)間到達(dá)閥值,記錄此時(shí)的訪問(wèn)量,再以此訪問(wèn)量乘以機(jī)器數(shù)反推總?cè)萘俊?br>以上是Dubbo最基本的幾個(gè)需求,更多服務(wù)治理問(wèn)題參見:

http://code.alibabatech.com/blog/experience_1402/service-governance-process.html


節(jié)點(diǎn)角色說(shuō)明:
? Provider: 暴露服務(wù)的服務(wù)提供方。
? Consumer: 調(diào)用遠(yuǎn)程服務(wù)的服務(wù)消費(fèi)方。
? Registry: 服務(wù)注冊(cè)與發(fā)現(xiàn)的注冊(cè)中心。
? Monitor: 統(tǒng)計(jì)服務(wù)的調(diào)用次調(diào)和調(diào)用時(shí)間的監(jiān)控中心。
? Container: 服務(wù)運(yùn)行容器。
調(diào)用關(guān)系說(shuō)明:

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

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

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

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

服務(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)控中心。

(1) 連通性:
? 注冊(cè)中心負(fù)責(zé)服務(wù)地址的注冊(cè)與查找,相當(dāng)于目錄服務(wù),服務(wù)提供者和消費(fèi)者只在啟動(dòng)時(shí)與注冊(cè)中心交互,注冊(cè)中心不轉(zhuǎn)發(fā)請(qǐng)求,壓力較小
? 監(jiān)控中心負(fù)責(zé)統(tǒng)計(jì)各服務(wù)調(diào)用次數(shù),調(diào)用時(shí)間等,統(tǒng)計(jì)先在內(nèi)存匯總后每分鐘一次發(fā)送到監(jiān)控中心服務(wù)器,并以報(bào)表展示
? 服務(wù)提供者向注冊(cè)中心注冊(cè)其提供的服務(wù),并匯報(bào)調(diào)用時(shí)間到監(jiān)控中心,此時(shí)間不包含網(wǎng)絡(luò)開銷
? 服務(wù)消費(fèi)者向注冊(cè)中心獲取服務(wù)提供者地址列表,并根據(jù)負(fù)載算法直接調(diào)用提供者,同時(shí)匯報(bào)調(diào)用時(shí)間到監(jiān)控中心,此時(shí)間包含網(wǎng)絡(luò)開銷
? 注冊(cè)中心,服務(wù)提供者,服務(wù)消費(fèi)者三者之間均為長(zhǎng)連接,監(jiān)控中心除外
? 注冊(cè)中心通過(guò)長(zhǎng)連接感知服務(wù)提供者的存在,服務(wù)提供者宕機(jī),注冊(cè)中心將立即推送事件通知消費(fèi)者
? 注冊(cè)中心和監(jiān)控中心全部宕機(jī),不影響已運(yùn)行的提供者和消費(fèi)者,消費(fèi)者在本地緩存了提供者列表
? 注冊(cè)中心和監(jiān)控中心都是可選的,服務(wù)消費(fèi)者可以直連服務(wù)提供者
(2) 健狀性:
? 監(jiān)控中心宕掉不影響使用,只是丟失部分采樣數(shù)據(jù)
? 數(shù)據(jù)庫(kù)宕掉后,注冊(cè)中心仍能通過(guò)緩存提供服務(wù)列表查詢,但不能注冊(cè)新服務(wù)
? 注冊(cè)中心對(duì)等集群,任意一臺(tái)宕掉后,將自動(dòng)切換到另一臺(tái)
? 注冊(cè)中心全部宕掉后,服務(wù)提供者和服務(wù)消費(fèi)者仍能通過(guò)本地緩存通訊
? 服務(wù)提供者無(wú)狀態(tài),任意一臺(tái)宕掉后,不影響使用
? 服務(wù)提供者全部宕掉后,服務(wù)消費(fèi)者應(yīng)用將無(wú)法使用,并無(wú)限次重連等待服務(wù)提供者恢復(fù)
(3) 伸縮性:
? 注冊(cè)中心為對(duì)等集群,可動(dòng)態(tài)增加機(jī)器部署實(shí)例,所有客戶端將自動(dòng)發(fā)現(xiàn)新的注冊(cè)中心
? 服務(wù)提供者無(wú)狀態(tài),可動(dòng)態(tài)增加機(jī)器部署實(shí)例,注冊(cè)中心將推送新的服務(wù)提供者信息給消費(fèi)者
(4) 升級(jí)性:
? 當(dāng)服務(wù)集群規(guī)模進(jìn)一步擴(kuò)大,帶動(dòng)IT治理結(jié)構(gòu)進(jìn)一步升級(jí),需要實(shí)現(xiàn)動(dòng)態(tài)部署,進(jìn)行流動(dòng)計(jì)算,現(xiàn)有分布式服務(wù)架構(gòu)不會(huì)帶來(lái)阻力:

? Deployer: 自動(dòng)部署服務(wù)的本地代理。
? Repository: 倉(cāng)庫(kù)用于存儲(chǔ)服務(wù)應(yīng)用發(fā)布包。
? Scheduler: 調(diào)度中心基于訪問(wèn)壓力自動(dòng)增減服務(wù)提供者。
? Admin: 統(tǒng)一管理控制臺(tái)。
安裝
一、本地服務(wù)
1、 定義服務(wù)接口: (該接口需多帶帶打包,在服務(wù)提供方和消費(fèi)方共享)

public interface CustomerService {
  public String getName();
}

2、 在服務(wù)提供方實(shí)現(xiàn)接口:(對(duì)服務(wù)消費(fèi)方隱藏實(shí)現(xiàn))

public class CustomerServiceImpl implements CustomerService{
  @Override
  public String getName() {
    System.out.print("我打印");
    return "打印結(jié)果";
  }
}

3、然后引入dubbo的幾個(gè)包

 dubbo-2.5.3.jar
 log4j.jar
 netty-3.5.7.Final.jar
 slf4j.jar
 slf4j-log4j.jar
 zkclient.jar
 zookeeper.jar

4、 用Spring配置聲明暴露服務(wù):
新建applicationProvider.xml,配置內(nèi)容如下:

  
   
    
    
    
      
     
    
       
    
    
    
    

我這里暴露服務(wù)器的地址交由zookeeper來(lái)管理的,使用者首先先要安裝zookeeper應(yīng)用才能使用此功能,相關(guān)安裝步驟請(qǐng)參看相關(guān)博文
5、 加載Spring配置,并調(diào)用遠(yuǎn)程服務(wù):(也可以使用IoC注入)

public class DubooProvider {
  public static void main(String[] args) {
  ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(  
  new String[]{"applicationProvider.xml"});  
    context.start();  
    System.out.println("Press any key to exit.");  
    try {
  System.in.read();
} catch (IOException e) {
  // TODO Auto-generated catch block
  e.printStackTrace();
}  
  }
}

并且啟動(dòng),使其進(jìn)入啟動(dòng)狀態(tài)。
以上為服務(wù)器提供者的完整步驟,功能接口都已經(jīng)寫好,下面我們就開始怎么遠(yuǎn)程調(diào)用
二、 服務(wù)消費(fèi)者
1、新建個(gè)配置文件applicationConsumer.xml,內(nèi)容如下:

      
            
        
           
          
             
          
        
    

為了在web中使用,我們?cè)趙eb.xml中配置在spring啟動(dòng)讀取過(guò)程中


    contextConfigLocation
    /WEB-INF/application.xml /WEB-INF/applicationConsumer.xml
    

2、接口調(diào)用
調(diào)用過(guò)程很簡(jiǎn)單,先把接口文件打成jar包,然后在此工程中進(jìn)行引用
在springmvc調(diào)用程序如下:

@Autowired CustomerService demoService ;     
@RequestMapping(value="duboo1")
  public void duboo1(){
   demoService.getName();
   }

即可執(zhí)行成功
三、dubbo-admin的使用
下載dubbo-admin-2.5.3.war
將其放到tomcat下面,配置 dubbo.properties,

vi webapps/ROOT/WEB-INF/dubbo.properties
dubbo.properties
dubbo.registry.address=zookeeper://127.0.0.1:2181
dubbo.admin.root.password=root
dubbo.admin.guest.password=guest

修改zookeeper的URL和端口
啟動(dòng):

./bin/startup.sh

打開,直接訪問(wèn)首頁(yè)如下:

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/68102.html

相關(guān)文章

  • Dubbo 源碼分析20 Dubbo服務(wù)提供者、服務(wù)消費(fèi)者并發(fā)度控制機(jī)制

    摘要:代碼根據(jù)服務(wù)提供者和服務(wù)調(diào)用方法名,獲取。代碼根據(jù)服務(wù)提供者配置的最大并發(fā)度,創(chuàng)建該服務(wù)該方法對(duì)應(yīng)的信號(hào)量對(duì)象??偨Y(jié)是控制消費(fèi)端對(duì)單個(gè)服務(wù)提供者單個(gè)服務(wù)允許調(diào)用的最大并發(fā)度。 本文將詳細(xì)分析< dubbo:service executes=/>與< dubbo:reference actives = />的實(shí)現(xiàn)機(jī)制,深入探...

    不知名網(wǎng)友 評(píng)論0 收藏0
  • 結(jié)合Dubbo源碼分析Spi

    摘要:如前所說(shuō),的目的是獲取一個(gè)指定實(shí)現(xiàn)類的對(duì)象。接下來(lái)從子模塊下的包的開始分析先來(lái)看這里繼承自類。如沒有擴(kuò)展點(diǎn),在擴(kuò)展點(diǎn)實(shí)現(xiàn)調(diào)用該方法,并返回結(jié)果。前面已經(jīng)分析過(guò),就是使用讀取文件并緩存的反轉(zhuǎn)控制,就是從和里面提取對(duì)象賦值。 如前所說(shuō),Dubbo SPI的目的是獲取一個(gè)指定實(shí)現(xiàn)類的對(duì)象。那么Dubbo是通過(guò)什么方式獲取的呢?其實(shí)是調(diào)用ExtensionLoader.getExtension...

    tylin 評(píng)論0 收藏0
  • Dubbo 一篇文章就夠了:從入門到實(shí)戰(zhàn)

    摘要:?jiǎn)?dòng)容器,加載,運(yùn)行服務(wù)提供者。服務(wù)提供者在啟動(dòng)時(shí),在注冊(cè)中心發(fā)布注冊(cè)自己提供的服務(wù)。注冊(cè)中心返回服務(wù)提供者地址列表給消費(fèi)者,如果有變更,注冊(cè)中心將基于長(zhǎng)連接推送變更數(shù)據(jù)給消費(fèi)者。 一 為什么需要 dubbo 很多時(shí)候,其實(shí)我們使用這個(gè)技術(shù)的時(shí)候,可能都是因?yàn)轫?xiàng)目需要,所以,我們就用了,但是,至于為什么我們需要用到這個(gè)技術(shù),可能自身并不是很了解的,但是,其實(shí)了解技術(shù)的來(lái)由及背景知識(shí),對(duì)...

    tomener 評(píng)論0 收藏0
  • Dubbo 源碼分析 - 服務(wù)調(diào)用過(guò)程

    摘要:服務(wù)調(diào)用過(guò)程比較復(fù)雜,包含眾多步驟。源碼分析在進(jìn)行源碼分析之前,我們先來(lái)通過(guò)一張圖了解服務(wù)調(diào)用過(guò)程。服務(wù)調(diào)用方式支持同步和異步兩種調(diào)用方式,其中異步調(diào)用還可細(xì)分為有返回值的異步調(diào)用和無(wú)返回值的異步調(diào)用。 注: 本系列文章已捐贈(zèng)給 Dubbo 社區(qū),你也可以在 Dubbo 官方文檔中閱讀本系列文章。 1. 簡(jiǎn)介 在前面的文章中,我們分析了 Dubbo SPI、服務(wù)導(dǎo)出與引入、以及集群容錯(cuò)...

    Travis 評(píng)論0 收藏0
  • Dubbo 2.7.1 踩坑記

    摘要:面試題服務(wù)提供者能實(shí)現(xiàn)失效踢出是什么原理高頻題服務(wù)宕機(jī)的時(shí)候,該節(jié)點(diǎn)由于是持久節(jié)點(diǎn)會(huì)永遠(yuǎn)存在,而且當(dāng)服務(wù)再次重啟的時(shí)候會(huì)將重新注冊(cè)一個(gè)新節(jié)點(diǎn)。 Dubbo 2.7 版本增加新特性,新系統(tǒng)開始使用 Dubbo 2.7.1 嘗鮮新功能。使用過(guò)程中不慎踩到這個(gè)版本的 Bug。 系統(tǒng)架構(gòu) Spring Boot 2.14-Release + Dubbo 2.7.1 現(xiàn)象 Dubbo 服務(wù)者啟動(dòng)...

    wudengzan 評(píng)論0 收藏0
  • Dubbo 源碼分析 - 服務(wù)導(dǎo)出

    摘要:支持兩種服務(wù)導(dǎo)出方式,分別延遲導(dǎo)出和立即導(dǎo)出。本文打算分析服務(wù)延遲導(dǎo)出過(guò)程,因此不會(huì)分析方法。服務(wù)導(dǎo)出之前,要進(jìn)行對(duì)一系列的配置進(jìn)行檢查,以及生成。返回時(shí),表示需要延遲導(dǎo)出。賽程預(yù)告,下一站是服務(wù)導(dǎo)出的前置工作。 1.服務(wù)導(dǎo)出過(guò)程 本篇文章,我們來(lái)研究一下 Dubbo 導(dǎo)出服務(wù)的過(guò)程。Dubbo 服務(wù)導(dǎo)出過(guò)程始于 Spring 容器發(fā)布刷新事件,Dubbo 在接收到事件后,會(huì)立即執(zhí)行服...

    劉玉平 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<