ZooKeeper和Dubbo的泛化呼叫

2021-10-11 18:05:27 字數 2265 閱讀 1130

zookeeper和eureka一樣是為微服務框架提供服務註冊發現中心功能.

不過zk沒有預設ui介面, 啟動後需要用命令列檢視裡面的註冊資料

啟動zk:

docker run --privileged=true --name zookeeper --publish 2181:2181 -d zookeeper:latest

進入zk命令: 進入docker

zkcli.sh -> ls /

往zk中寫入資料:

/*泛化呼叫dubbo時, 無需匯入介面jar包, 也無需本地實現介面物件, 呼叫方法, 直接將介面名, 別名, 方法名和方法對應引數, 以引數的形式給到dubbo連線物件.這裡需要建立dubbo伺服器(zookeeper)的連線物件, 為了節約資源, 建議在configuration中統一建立,無需在每次傳送dubbo請求時單獨建立

*/

// 引用遠端服務 

// 該例項很重量,裡面封裝了所有與註冊中心及服務提供方連線,請快取(建立連線後存入map,不要重複建立連線)

referenceconfig

reference =

newreferenceconfig

();reference.

(new

("dubbo-demo-api-consumer"))

;//設定zookeeper位址

reference.

setregistry

(new

registryconfig

("zookeeper:"))

;// 弱型別介面名

reference.

setinte***ce

("org.apache.dubbo.demo.demoservice");

// 宣告為泛化介面

reference.

setgeneric

("true");

//reference物件還可能有其他方法可以設定引數: timeout時間, version等

// 用org.apache.dubbo.rpc.service.genericservice可以替代所有介面引用

genericservice genericservice = reference.

get();

//.get()方法建立連線, 呼叫一次.get()就建立乙個連線, 同乙個屬性的連線不要多次呼叫, 將genericservice存入map就行了,

//用乙個map可以存多個被呼叫應用的genericservice,用的時候取出來就行了

/*invoke介面傳送方法的規則:

service.$invoke(methodname, arraystring,arrayobject);

methodname是呼叫的類中的方法名

arraystring是等待呼叫的方法的所有引數型別list(string型別)

arrayobject是等待呼叫的方法的所有引數具體的值list(object型別)

*///1.基本型別以及date,list,map等不需要轉換,直接呼叫

object result = genericservice.$invoke

("sayhello"

,new

string

,new

object

);//2.物件⽤map表示pojo引數,如果返回值為pojo也將自動轉成map

mapteacher =

newhashmap

(); teacher.

put(

"id"

,"1");

teacher.

put(

"name"

,"admin");

teacher.

put(

"age"

,"18");

teacher.

put(

"level"

,"3");

teacher.

put(

"remark"

,"測試");

// 如果返回pojo將自動轉成map

result = genericservice.$invoke

("justtest"

,new

string

,new

object

);system.out.

println

(result.

tostring()

);

zookeeper 和 dubbo的使用

專案最近做成了分布式的 用zookeeper 註冊管理服務,使用dubbo做分布式開發。1 使用zookeeper和dubbo需要引入的包 com.github.sgroschupf zkclient 0.1org.apache.zookeeper zookeeper 3.4.6 com.aliba...

zookeeper和dubbo的關係

在讀一下文字之前 可以先看一下這篇文章 dubbo建議使用zookeeper作為服務的註冊中心。1.zookeeper的作用 zookeeper用來註冊服務和進行負載均衡,哪乙個服務由哪乙個機器來提供必需讓呼叫者知道,簡單來說就是ip位址和服務名稱的對應關係。當然也可以通過硬編碼的方式把這種對應關係...

Dubbo和zookeeper簡單理解

dubbo由alibaba製造 後交給阿帕奇維護的 基於rpc 遠端過程呼叫 高效能的 分布式框架 埠號 20880 dubbo提供的協議 dubbo協議 官方推薦使用dubbo採用dubbo協議 rmi 遠端方法呼叫 hessian協議 工作原理 提供有中文文件 是一種類似於面向介面進行程式設計 ...