国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

基于Dubbo+ZooKeeper的分布式服務的實現

warkiz / 2033人閱讀

摘要:調用流程服務容器負責啟動,加載,運行服務提供者。服務提供者在啟動時,向注冊中心注冊自己提供的服務。注冊中心返回服務提供者地址列表給消費者,如果有變更,注冊中心將基于長連接推送變更數據給消費者。這就是分布式服務注冊中心的由來。

Dubbo是什么

一款分布式服務框架

高性能和透明化的RPC遠程服務調用方案。這里簡單介紹一下RPC,所謂RPC就是遠程過程調用,全稱為Romate Procedure Protocol Call,顧名思義其實就是一種協議。

RPC是一種通過網絡從遠程計算機程序上請求服務,而不需要了解底層網絡技術的協議。RPC協議假定某些傳輸協議的存在,如TCP或UDP,為通信程序之間攜帶信息數據。在OSI網絡通信模型中,RPC跨越了傳輸層和應用層。RPC使得開發包括網絡分布式多程序在內的應用程序更加容易。
RPC采用客戶機/服務器模式。請求程序就是一個客戶機,而服務提供程序就是一個服務器。首先,客戶機調用進程發送一個有進程參數的調用信息到服務進程,然后等待應答信息。在服務器端,進程保持睡眠狀態直到調用信息到達為止。當一個調用信息到達,服務器獲得進程參數,計算結果,發送答復信息,然后等待下一個調用信息,最后,客戶端調用進程接收答復信息,獲得進程結果,然后調用執行繼續進行。

SOA服務治理方案
SOA是一種面向服務的框架或者說是架構

Dubbo架構:


Provider: 暴露服務的服務提供方。
Consumer: 調用遠程服務的服務消費方。
Registry: 服務注冊與發現的注冊中心。
Monitor: 統計服務的調用次數和調用時間的監控中心。

調用流程
0.服務容器負責啟動,加載,運行服務提供者。
1.服務提供者在啟動時,向注冊中心注冊自己提供的服務。
2.服務消費者在啟動時,向注冊中心訂閱自己所需的服務。
3.注冊中心返回服務提供者地址列表給消費者,如果有變更,注冊中心將基于長連接推送變更數據給消費者。
4.服務消費者,從提供者地址列表中,基于軟負載均衡算法,選一臺提供者進行調用,如果調用失敗,再選另一臺調用。
5.服務消費者和提供者,在內存中累計調用次數和調用時間,定時每分鐘發送一次統計數據到監控中心

Dubbo注冊中心

通過將服務統一管理起來,可以有效地優化內部應用對服務發布/使用的流程和管理。服務注冊中心可以通過特定協議來完成服務對外的統一。這就是分布式服務注冊中心的由來。

Dubbo提供的注冊中心有如下幾種類型可供選擇

Multicast注冊中心

Zookeeper注冊中心

Redis注冊中心

Simple注冊中心

接下來我們就是基于Dubbo+Zookeeper+Spring的方式來做一個關于分布式部署的練習,相信通過這個例子大家就可以大致理解Dubbo+Zookeeper的執行流程。

安裝Zookeeper

具體安裝過程可以進入以下網址,一步一步跟著提示操作就可以完成Zookeeper的安裝:
http://blog.csdn.net/tlk20071...
安裝完成后,進入到bin目錄,并且啟動zkServer.cmd,這個腳本中會啟動一個java進程:成功以后會啟動一個DOS界面,如下圖所示:

程序實現階段

創建父工程
創建一個名為DubboDemo的maven工程

創建服務接口以及服務提供者和服務消費者模塊
在父工程下分別創建三個名為dubbo-api,dubbo-provider,dubbo-consumer的maven module

編寫代碼實現功能
【1】在模塊dubbo-api中創建一個名為com.alibaba.dubbo.demo的包,在包下創建一個名為DemoService的接口,該接口下的代碼如下:

package com.alibaba.dubbo.demo;
import java.util.List;

public interface DemoService {

   List getPermissions(Long id);

}

【2】在模塊dubbo-provider中創建一個名為com.alibaba.dubbo.demo.impl的包,在該包下新建一個名為DemoServiceImpl并實現DemoService接口,該類代碼如下:
package com.alibaba.dubbo.demo.impl;
import com.alibaba.dubbo.demo.DemoService;
import java.util.ArrayList;
import java.util.List;
public class DemoServiceImpl implements DemoService {

   public List getPermissions(Long id) {
       List demo = new ArrayList();
       demo.add(String.format("Permission_%d", id - 1));
       demo.add(String.format("Permission_%d", id));
       demo.add(String.format("Permission_%d", id + 1));
       return demo;
   }

}

【3】添加spring配置文件名為provider.xml(位于src目錄下),配置文件具體內容如下:

   
   
   
   
   
   
   
   
   
   
   
   

【4】編寫服務提供方啟動類,具體代碼如下:

package com.alibaba.dubbo.demo.impl;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import java.io.IOException;
public class Provider {

       public static void main(String[] args) throws IOException {

ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("provider.xml");

           System.out.println(context.getDisplayName() + ": here");
           context.start();
           System.out.println("服務已經啟動...");
           System.in.read();
       }
   }
      

【5】完成服務消費者所需功能

在demo-consumer模塊中創建名為com.alibaba.dubbo.consumer的包并在該包下創建一個名為Consumer,器具體代碼如下:
package com.alibaba.dubbo.consumer;
import com.alibaba.dubbo.demo.DemoService;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Consumer {
    public static void main(String[] args) {
        //測試常規服務

ClassPathXmlApplicationContext context =new ClassPathXmlApplicationContext("consumer.xml");

        context.start();
        System.out.println("consumer start");
        DemoService demoService = context.getBean(DemoService.class);
        System.out.println("consumer");
        System.out.println(demoService.getPermissions(1L));
    }
} 

【6】配置服務消費者的配置文件

  在demo-consumer模塊中創建一個名為consumer.xml的文件,該文件的具體內容如下:
    

    
    
    
    
    




如何啟動

【1】首先啟動Zookeeper安裝目錄中bin文件夾下的名為zkServer的Windows腳本文件
【2】啟動服務端,即啟動服務端啟動類的main方法
【3】啟動客戶端,即啟動服務消費者端的main方法

注意事項:

注意各個模塊之間的依賴
dubbo-provider和dubbo-consumer模塊都需要依賴dubbo-api模塊,還有就是這三個maven module最好都加入對于spring依賴。具體依賴可參考我發布的源碼及資料。

項目資料下載鏈接(注:附Zookeeper的安裝文件):
鏈接:https://pan.baidu.com/s/120eC... 密碼:wllg

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/67978.html

相關文章

  • zookeeper+dubbo實現java布式服務

    摘要:調用關系說明服務容器負責啟動,加載,運行服務提供者。服務提供者在啟動時,向注冊中心注冊自己提供的服務。注冊中心返回服務提供者地址列表給消費者,如果有變更,注冊中心將基于長連接推送變更數據給消費者。 ZooKeeper簡介 ZooKeeper(Zookeeper 下載地址)是一個分布式的,開放源碼的分布式應用程序協調服務,是 Apache Hadoop 的一個子項目,是Google的Ch...

    WalkerXu 評論0 收藏0
  • 基于Dubbo+ZooKeeper布式服務實現

    摘要:調用流程服務容器負責啟動,加載,運行服務提供者。服務提供者在啟動時,向注冊中心注冊自己提供的服務。注冊中心返回服務提供者地址列表給消費者,如果有變更,注冊中心將基于長連接推送變更數據給消費者。這就是分布式服務注冊中心的由來。 Dubbo是什么 一款分布式服務框架 高性能和透明化的RPC遠程服務調用方案。這里簡單介紹一下RPC,所謂RPC就是遠程過程調用,全稱為Romate Proce...

    enda 評論0 收藏0
  • 超詳細,新手都能看懂 !使用SpringBoot+Dubbo 搭建一個簡單布式服務

    Github 地址:https://github.com/Snailclimb/springboot-integration-examples ,歡迎各位 Star。 目錄: 使用 SpringBoot+Dubbo 搭建一個簡單分布式服務 實戰之前,先來看幾個重要的概念 什么是分布式? 什么是 Duboo? Dubbo 架構 什么是 RPC? 為什么要用 Dubbo? 開始實戰 1 ...

    chengtao1633 評論0 收藏0

發表評論

0條評論

warkiz

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<