1. 程式人生 > >SOA研究-用zookeeper實現服務的註冊和發現

SOA研究-用zookeeper實現服務的註冊和發現

註冊中心

一般具有以下功能:

  • 註冊服務

  • 訂閱服務

  • 失敗重新註冊和訂閱

  • 本地快取服務資訊列表

這裡寫圖片描述

大體過程如下:

  • 1.服務提供者暴露服務後向註冊中心註冊,如果多個註冊中心的話,需要分別註冊到多個註冊中心;註冊資訊包含自己主機名,埠號,服務名,其他額外引數等。本地一般用map快取已經註冊的服務,當然也可以用檔案儲存到本地,當網路抖動等原因重新恢復連線Zookeeper的時候,需要從快取取出來重新註冊。

  • 2.服務消費者引用服務提供者的時候要向zookeeper發出訂閱請求,訂閱服務提供者。服務消費者一般會快取服務提供者訊息,這樣每次發起RPC請求的時候就不用連線zookeeper,增加效能。當服務提供者發出變動的時候,能做出相應調整,更新本地快取。

實現例子

首先需要有註冊中心介面,負責註冊訂閱以及查詢


public interface Registry {
    void register(URL url) throws Exception;
    void subscribe(URL url, NotifyListener listener) throws Exception;
    List<URL> lookup(URL url) throws Exception;
}

目錄服務,負責查詢本地快取的服務提供者資訊


public interface Directory<T> {
    List<Invoker<T>> list(Invocation invocation);
}

註冊節點監聽器,負責註冊中心有變動時候做出響應


public interface StateListener {
    void onChanged(StateEvent stateEvent) throws Exception;

}

zookeeper狀態監聽器,負責zookeeper重連時候自動恢復註冊和訂閱


public interface StateListener {
    void onChanged(StateEvent stateEvent) throws Exception;

}

zookeeper客戶端


public interface ZkClient
{
void create(URL url) throws Exception; List<String> getChildNode(String path) throws Exception; List<String> addNodeListener(final URL url, final ChildListener listener) throws Exception; void addStateListener(StateListener stateListener); }

原始碼

相關推薦

SOA研究-zookeeper實現服務註冊發現

註冊中心 一般具有以下功能: 註冊服務 訂閱服務 失敗重新註冊和訂閱 本地快取服務資訊列表 大體過程如下: 1.服務提供者暴露服務後向註冊中心註冊,如果多個註冊中心的話,需要分別註冊到多個註冊中心;註冊資訊包含自己主機名,埠號,服務名,其他

Spring Cloud Consul 實現服務註冊發現

Spring Cloud 是一個基於 Spring Boot 實現的雲應用開發工具,它為基於 JVM 的雲應用開發中涉及的配置管理、服務發現、斷路器、智慧路由、微代理、控制匯流排、全域性鎖、決策競選、分散式會話和叢集狀態管理等操作提供了一種簡單的開發方式。通過 Spring Boot 風格進行再封裝遮蔽掉了

【Java】etcd做服務註冊發現

最近嘗試了一下etcd來做服務的註冊發現 【etcd服務】 從etcd官網下載二進位制檔案即可,分配了三臺機器做叢集 10.0.1.98    etcd-001 10.0.1.205 etcd-002 10.0.1.182  etcd-003 然後用指令碼啟動服務

zookeeper實現系統註冊系統發現

  需求:多系統整合,需要登陸任意系統後都可以顯示業務系統名稱,並得到對應地址資訊等。   實現思路:使用zookeeper作為系統註冊,每個系統啟動的時候進行註冊系統資訊,臨時有序為註冊型別,並且註冊事件監聽,並獲取所    有子節點的系統資訊,新增

Spring Boot + Spring Cloud 實現許可權管理系統 後端篇(十八):服務註冊發現(Consul)

什麼是 Consul Consul 是 HashiCorp 公司推出的開源工具,用於實現分散式系統的服務發現與配置。與其它分散式服務註冊與發現的方案,Consul 的方案更“一站式”,內建了服務註冊與發現框架、分佈一致性協議實現、健康檢查、Key/Value 儲存、多資料中心方案,不再需要依賴其它工具(比如

zookeeper與grpc整合實現服務註冊發現

Zookeeper介紹 ZooKeeper是一個分散式的,開放原始碼的分散式應用程式協調服務,是Google的Chubby一個開源的實現,是Hadoop和Hbase的重要元件。它是一個為分散式應用提供一致性服務的軟體,提供的功能包括:配置維護、域名服務、分散式

服務學習筆記(2)——使用Consul 實現 MagicOnion(GRpc) 服務註冊發現

我會 names uid red mes tar art ret public 原文:微服務學習筆記(2)——使用Consul 實現 MagicOnion(GRpc) 服務註冊和發現1.下載打開Consul 筆者是windows下面開發的(也可以使用Docker)。 官

基於Zookeeper服務註冊發現

1、專案的目錄結構 2、基於zk服務註冊和發現的架構圖        3、服務端(像zk提供服務的訪問地址) package cn.zk.distribute; import org.apache.zookeeper.CreateMode; import org.ap

Socket實現服務客戶端,進行一對一順序對話

一、服務端程式碼 import java.net.ServerSocket; import java.net.Socket; import java.io.IOException; import java.io.InputStream; import ja

Zookeeper實現服務註冊/發現

what that? Zookeeper在分散式開發中使用頻繁,但許多框架都對其進行了封裝,初學者可能無法較好的理解其工作原理,該文章演示了使用Zookeeper實現服務註冊,服務發現的簡單demo,希望能達到拋磚引玉的效果; why need RegisterCenter? 之所以需要訪問註冊和服務

springcloud服務註冊發現

微服務架構中,服務發現元件是一個非常關鍵的元件,服務消費者、服務提供者、服務發現元件的關係大致如下: 各個微服務啟動時,將自己的網路地址等資訊註冊到服務發現元件中,服務發現元件會儲存這些資訊 服務消費者可從服務發現元件查詢服務提供者的網路地址,並使用改地址呼叫服務提供者的介面 各個微服務與服務

使用 Eureka 實現服務註冊發現

Eureka 是 Netflix 出品的用於實現服務註冊和發現的工具。 Spring Cloud 集成了 Eureka,並提供了開箱即用的支援。其中, Eureka 又可細分為 Eureka Server 和 Eureka Client。 本例子將演示如何通過 Spring Clou

服務註冊發現Eureka《五》

eureka 是一個微服務註冊和發現的元件。分為eureka server 和 eureka client 。eureka server 為eureka 服務註冊中心,eureka client 為eureka 客戶端。 eureka 是spring cloud 首推的服務註冊和發現元件,與

Web Api 基於Zookeeper服務註冊發現

差異 基於Nginx的服務提供和消費 基於zookeeper的服務註冊和發現 zk的負載均衡是可以調控,nginx只是能調權重,其他需要可控的都需要自己寫外掛;但是nginx的吞吐量比zk大很多,可以根據業務選擇用哪種方式。 服務端註冊 1.建立WEB A

.NET Core微服務之基於Steeltoe使用Eureka實現服務註冊發現

一、關於Steeltoe與Spring Cloud    Steeltoe is an open source project that enables .NET developers to implement industry standard best practices when b

第二篇:SpringCloud 構建微服務系統之服務註冊發現(nacos)

上一篇我們學習了一下consul在soringcloud中的使用。今天要給大家介紹的阿里巴巴中介軟體團隊出品的Nacos來作為新一代的服務管理中介軟體。 首先學習Nacos之前,我們應該看看Nacos的官網,對它有一個初步的認識。 1. Nacos 官網 (https://nacos

第一篇:SpringCloud 構建微服務系統之服務註冊發現(consul)

今天我們要學習的是consul在soringcloud中的使用。首先學習consul之前,我們應該看看consul的官網,對它有一個初步的認識。 1. consul 官網 (https://www.consul.io) 2. consul 簡介 consul是googl

Java後端愛上SpringCloud 第一節:服務註冊發現 Eureka

Java後端愛上SpringCloud 第一節:服務註冊和發現 Eureka 一些連結 構建服務註冊中心EurekaServer 構建服務提供者EurekaClient 整合SpringBoot做視覺化監控 PS:還是老規矩,一些概念的東

spring-cloud微服務之路(三):服務註冊發現之Eureka、Consul

        在上一篇spring-cloud微服務之路(二):Spring Boot 我們介紹瞭如何快速的使用 Spring Boot 搭建一個微服務專案,這一篇我們演示如何分別使用 Spring Cloud Eureka 和 Spring Cloud Consul 完成

Spring Cloud 服務註冊發現

Spring Cloud 服務註冊和發現 個人部落格 搭建服務註冊中心 匯入maven依賴 <parent> <groupId>org.springframework.boot</groupId> <artifactId&