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

資訊專欄INFORMATION COLUMN

基于Dubbo+ZooKeeper的分布式服務(wù)的實(shí)現(xiàn)

enda / 2801人閱讀

摘要:調(diào)用流程服務(wù)容器負(fù)責(zé)啟動(dòng),加載,運(yùn)行服務(wù)提供者。服務(wù)提供者在啟動(dòng)時(shí),向注冊(cè)中心注冊(cè)自己提供的服務(wù)。注冊(cè)中心返回服務(wù)提供者地址列表給消費(fèi)者,如果有變更,注冊(cè)中心將基于長(zhǎng)連接推送變更數(shù)據(jù)給消費(fèi)者。這就是分布式服務(wù)注冊(cè)中心的由來(lái)。

Dubbo是什么

一款分布式服務(wù)框架

高性能和透明化的RPC遠(yuǎn)程服務(wù)調(diào)用方案。這里簡(jiǎn)單介紹一下RPC,所謂RPC就是遠(yuǎn)程過(guò)程調(diào)用,全稱為Romate Procedure Protocol Call,顧名思義其實(shí)就是一種協(xié)議。

RPC是一種通過(guò)網(wǎng)絡(luò)從遠(yuǎn)程計(jì)算機(jī)程序上請(qǐng)求服務(wù),而不需要了解底層網(wǎng)絡(luò)技術(shù)的協(xié)議。RPC協(xié)議假定某些傳輸協(xié)議的存在,如TCP或UDP,為通信程序之間攜帶信息數(shù)據(jù)。在OSI網(wǎng)絡(luò)通信模型中,RPC跨越了傳輸層和應(yīng)用層。RPC使得開(kāi)發(fā)包括網(wǎng)絡(luò)分布式多程序在內(nèi)的應(yīng)用程序更加容易。
RPC采用客戶機(jī)/服務(wù)器模式。請(qǐng)求程序就是一個(gè)客戶機(jī),而服務(wù)提供程序就是一個(gè)服務(wù)器。首先,客戶機(jī)調(diào)用進(jìn)程發(fā)送一個(gè)有進(jìn)程參數(shù)的調(diào)用信息到服務(wù)進(jìn)程,然后等待應(yīng)答信息。在服務(wù)器端,進(jìn)程保持睡眠狀態(tài)直到調(diào)用信息到達(dá)為止。當(dāng)一個(gè)調(diào)用信息到達(dá),服務(wù)器獲得進(jìn)程參數(shù),計(jì)算結(jié)果,發(fā)送答復(fù)信息,然后等待下一個(gè)調(diào)用信息,最后,客戶端調(diào)用進(jìn)程接收答復(fù)信息,獲得進(jìn)程結(jié)果,然后調(diào)用執(zhí)行繼續(xù)進(jìn)行。

SOA服務(wù)治理方案
SOA是一種面向服務(wù)的框架或者說(shuō)是架構(gòu)

Dubbo架構(gòu):


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)用次數(shù)和調(diào)用時(shí)間的監(jiān)控中心。

調(diào)用流程
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)控中心

Dubbo注冊(cè)中心

通過(guò)將服務(wù)統(tǒng)一管理起來(lái),可以有效地優(yōu)化內(nèi)部應(yīng)用對(duì)服務(wù)發(fā)布/使用的流程和管理。服務(wù)注冊(cè)中心可以通過(guò)特定協(xié)議來(lái)完成服務(wù)對(duì)外的統(tǒng)一。這就是分布式服務(wù)注冊(cè)中心的由來(lái)。

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

Multicast注冊(cè)中心

Zookeeper注冊(cè)中心

Redis注冊(cè)中心

Simple注冊(cè)中心

接下來(lái)我們就是基于Dubbo+Zookeeper+Spring的方式來(lái)做一個(gè)關(guān)于分布式部署的練習(xí),相信通過(guò)這個(gè)例子大家就可以大致理解Dubbo+Zookeeper的執(zhí)行流程。

安裝Zookeeper

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

程序?qū)崿F(xiàn)階段

創(chuàng)建父工程
創(chuàng)建一個(gè)名為DubboDemo的maven工程

創(chuàng)建服務(wù)接口以及服務(wù)提供者和服務(wù)消費(fèi)者模塊
在父工程下分別創(chuàng)建三個(gè)名為dubbo-api,dubbo-provider,dubbo-consumer的maven module

編寫(xiě)代碼實(shí)現(xiàn)功能
【1】在模塊dubbo-api中創(chuàng)建一個(gè)名為com.alibaba.dubbo.demo的包,在包下創(chuàng)建一個(gè)名為DemoService的接口,該接口下的代碼如下:

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

public interface DemoService {

   List getPermissions(Long id);

}

【2】在模塊dubbo-provider中創(chuàng)建一個(gè)名為com.alibaba.dubbo.demo.impl的包,在該包下新建一個(gè)名為DemoServiceImpl并實(shí)現(xiàn)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目錄下),配置文件具體內(nèi)容如下:

   
   
   
   
   
   
   
   
   
   
   
   

【4】編寫(xiě)服務(wù)提供方啟動(dòng)類,具體代碼如下:

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("服務(wù)已經(jīng)啟動(dòng)...");
           System.in.read();
       }
   }
      

【5】完成服務(wù)消費(fèi)者所需功能

在demo-consumer模塊中創(chuàng)建名為com.alibaba.dubbo.consumer的包并在該包下創(chuàng)建一個(gè)名為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) {
        //測(cè)試常規(guī)服務(wù)

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】配置服務(wù)消費(fèi)者的配置文件

  在demo-consumer模塊中創(chuàng)建一個(gè)名為consumer.xml的文件,該文件的具體內(nèi)容如下:
    

    
    
    
    
    




如何啟動(dòng)

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

注意事項(xiàng):

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

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

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/61918.html

相關(guān)文章

  • zookeeper+dubbo實(shí)現(xiàn)java布式服務(wù)

    摘要:調(diào)用關(guān)系說(shuō)明服務(wù)容器負(fù)責(zé)啟動(dòng),加載,運(yùn)行服務(wù)提供者。服務(wù)提供者在啟動(dòng)時(shí),向注冊(cè)中心注冊(cè)自己提供的服務(wù)。注冊(cè)中心返回服務(wù)提供者地址列表給消費(fèi)者,如果有變更,注冊(cè)中心將基于長(zhǎng)連接推送變更數(shù)據(jù)給消費(fèi)者。 ZooKeeper簡(jiǎn)介 ZooKeeper(Zookeeper 下載地址)是一個(gè)分布式的,開(kāi)放源碼的分布式應(yīng)用程序協(xié)調(diào)服務(wù),是 Apache Hadoop 的一個(gè)子項(xiàng)目,是Google的Ch...

    WalkerXu 評(píng)論0 收藏0
  • 基于Dubbo+ZooKeeper布式服務(wù)實(shí)現(xiàn)

    摘要:調(diào)用流程服務(wù)容器負(fù)責(zé)啟動(dòng),加載,運(yùn)行服務(wù)提供者。服務(wù)提供者在啟動(dòng)時(shí),向注冊(cè)中心注冊(cè)自己提供的服務(wù)。注冊(cè)中心返回服務(wù)提供者地址列表給消費(fèi)者,如果有變更,注冊(cè)中心將基于長(zhǎng)連接推送變更數(shù)據(jù)給消費(fèi)者。這就是分布式服務(wù)注冊(cè)中心的由來(lái)。 Dubbo是什么 一款分布式服務(wù)框架 高性能和透明化的RPC遠(yuǎn)程服務(wù)調(diào)用方案。這里簡(jiǎn)單介紹一下RPC,所謂RPC就是遠(yuǎn)程過(guò)程調(diào)用,全稱為Romate Proce...

    warkiz 評(píng)論0 收藏0
  • 超詳細(xì),新手都能看懂 !使用SpringBoot+Dubbo 搭建一個(gè)簡(jiǎn)單布式服務(wù)

    Github 地址:https://github.com/Snailclimb/springboot-integration-examples ,歡迎各位 Star。 目錄: 使用 SpringBoot+Dubbo 搭建一個(gè)簡(jiǎn)單分布式服務(wù) 實(shí)戰(zhàn)之前,先來(lái)看幾個(gè)重要的概念 什么是分布式? 什么是 Duboo? Dubbo 架構(gòu) 什么是 RPC? 為什么要用 Dubbo? 開(kāi)始實(shí)戰(zhàn) 1 ...

    chengtao1633 評(píng)論0 收藏0

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

0條評(píng)論

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