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

資訊專欄INFORMATION COLUMN

zookeeper+dubbo實現java分布式服務

WalkerXu / 1866人閱讀

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

ZooKeeper簡介

ZooKeeper(Zookeeper 下載地址)是一個分布式的,開放源碼的分布式應用程序協調服務,是 Apache Hadoop 的一個子項目,是Google的Chubby一個開源的實現,主要是用來解決分布式應用中經常遇到的一些數據管理問題,它是集群的管理者,監視著集群中各個節點的狀態根據節點提交的反饋進行下一步合理操作。最終,將簡單易用的接口和性能高效、功能穩定的系統提供給用戶.
每個子目錄項如 NameService 都被稱作為znode,和文件系統一樣,我們能夠自由的增加、刪除znode,在一個znode下增加、刪除子znode,唯一的不同在于znode是可以存儲數據的。
客戶端與zookeeper斷開連接后,該節點被刪除,只是Zookeeper給該節點名稱進行順序編號:

命名服務

配置管理

集群管理

分布式鎖

隊列管理

Zookeeper命名服務

在zookeeper的文件系統里創建一個目錄,即有唯一的path。在我們使用tborg無法確定上游程序的部署機器時即可與下游程序約定好path,通過path即能互相探索發現。

Zookeeper的配置管理

程序總是需要配置的,如果程序分散部署在多臺機器上,要逐個改變配置就變得困難。現在把這些配置全部放到zookeeper上去,保存在 Zookeeper 的某個目錄節點中,
然后所有相關應用程序對這個目錄節點進行監聽,一旦配置信息發生變化,每個應用程序就會收到 Zookeeper 的通知,
然后從 Zookeeper 獲取新的配置信息應用到系統中就好。

tickTime=2000  
dataDir= /zookeeper-3.4.8/data 
dataLogDir=/zookeeper-3.4.8/logs  
clientPort=2181
server.1=IP1:2888:3888
server.2=IP2:2888:3888

參數說明:
tickTime: zookeeper中使用的基本時間單位, 毫秒值.
dataDir: 數據目錄. 可以是任意目錄.
dataLogDir: log目錄, 同樣可以是任意目錄. 如果沒有設置該參數, 將使用和#dataDir相同的設置.
clientPort: 監聽client連接的端口號.
server.id=host:port:port解析.
每一行此配置表示一個集群中的一臺服務器。其中id為Server ID,用來標識該機器在集群中的編號。同時,在所在服務器的數據目錄(/tmp/zookeeper)下創建一個myid文件,該文件只有一行內容,并且是一個數字,就是對應每臺服務器的Server ID數字。
比如server.1=IP1:2888:3888的myid中的內容就是1。不同服務器的ID需要保持不同,并且和zoo.cfg文件中server.id中的id和myid文件的內容保持一致。id的取值范圍為1~255。
其中,server.id中配置參數的第一個port是集群中其他機器與Leader之間通信的端口,第二個port為當Leader宕機或其他故障時,集群進行重新選舉Leader時使用的端口。
按照以上相同步驟,配置集群中的其他機器。每個集群的zoo.cfg文件都是相同的,可通過版本控制或其他工具保證每臺zookeeper服務器的配置文件相同。集群中每臺機器唯一不同的是server.id對應的myid文件中的數字不同,需要注意的是一般zookeeper集群由3~5臺服務器組成,即2n+1臺機器。
詳細的客戶端命令:https://zhuanlan.zhihu.com/p/...

Dubbo簡介

Dubbo是阿里旗下的一個彈性的分布式服務框架,2012 年,阿里巴巴在 GitHub上開源了基于 Java的分布式服務治理框架?Dubbo,致力于提供高性能和透明化的RPC遠程服務調用方案,以及SOA服務治理方案。
Dubbo透明化的遠程方法調用,沒有API侵入,就能像調用本地方法一樣調用遠程方法,軟負載均衡及容錯機制,可以在內網替代F5等硬件負載均衡器,降低成本,減少單點。
服務框架中,與業務相關,但與業務功能的整合無關的組件以外部服務形式引入(也就是說把一些業務分離出來,變成一種服務,供其他人調用該服務)。

調用關系說明:

服務容器負責啟動,加載,運行服務提供者。

服務提供者在啟動時,向注冊中心注冊自己提供的服務。

服務消費者在啟動時,向注冊中心訂閱自己所需的服務。

注冊中心返回服務提供者地址列表給消費者,如果有變更,注冊中心將基于長連接推送變更數據給消費者。

服務消費者,從提供者地址列表中,基于軟負載均衡算法,選一臺提供者進行調用,如果調用失敗,再選另一臺調用。

服務消費者和提供者,在內存中累計調用次數和調用時間,定時每分鐘發送一次統計數據到監控中心。

Zookeeper+dubbo:

Dubbo的將注冊中心進行抽象,是得它可以外接不同的存儲媒介給注冊中心提供服務,有ZooKeeper,Memcached,Redis引入了ZooKeeper作為存儲媒介,也就把ZooKeeper的特性引進來。首先是負載均衡,單注冊中心的承載能力是有限的,在流量達到一定程度的時候就需要分流,負載均衡就是為了分流而存在的,一個ZooKeeper群配合相應的Web應用就可以很容易達到負載均衡;資源同步,單單有負載均衡還不夠,節點之間的數據和資源需要同步,ZooKeeper集群就天然具備有這樣的功能;命名服務,將樹狀結構用于維護全局的服務地址列表,服務提供者在啟動的時候,向ZK上的指定節點/dubbo/${serviceName}/providers目錄下寫入自己的URL地址,這個操作就完成了服務的發布。其他特性還有Mast選舉,分布式鎖等。

相關代碼:
spring
Pom.xml


            com.alibaba
            dubbo
            2.8.4
        
        
            com.101tec
            zkclient
            0.9
        
        
            org.javassist
            javassist
            3.20.0-GA
        

Applicationcontext.xml


     
    
    
    
    

springboot
Pom.xml


        com.alibaba
        dubbo
        2.4.10
        
            
                spring
                org.springframework
            
        
    
    
        org.apache.zookeeper
        zookeeper
        3.4.6
        
            
                slf4j-log4j12
                org.slf4j
            
        
    
    
        com.github.sgroschupf
        zkclient
        0.1
    
    
   
    
            io.dubbo.springboot
            spring-boot-starter-dubbo
            1.0.0
        

Application.properties

spring.dubbo.application.name=bootsec
spring.dubbo.registry.address=zookeeper://localhost:2181
spring.dubbo.protocol.name=dubbo
spring.dubbo.protocol.port=3100
spring.dubbo.scan=com.emsoft.studentboot

服務端代碼

#dubbo配置
spring.dubbo.application.name=bootthr
spring.dubbo.registry.address=zookeeper://192.168.31.119:2181
spring.dubbo.protocol.name=dubbo
spring.dubbo.protocol.port=3200
spring.dubbo.scan=com.emsoft.stuthr.server 業務代碼所在的包名
spring.dubbo.application.registries.timeout=10000
spring.dubbo.application.registries.session=10000

客戶端代碼

spring.dubbo.application.name=bootsec
spring.dubbo.registry.address=zookeeper://localhost:2181
spring.dubbo.protocol.name=dubbo
spring.dubbo.protocol.port=3100
spring.dubbo.scan=com.emsoft.studentboot

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

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

相關文章

  • 超詳細,新手都能看懂 !使用SpringBoot+Dubbo 搭建一個簡單的布式服務

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

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

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

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

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

    enda 評論0 收藏0

發表評論

0條評論

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