多個註冊中心
Dubbo-go 應用程式可設定的多介面維度註冊中心。
1. 準備工作
- 已安裝 dubbo-go cli 工具和相關工具
- 建立新的示範應用程式
- 在本機啟動 Nacos 和 Zookeeper
2. 使用多個註冊中心
修改伺服器設定 go-server/conf/dubbogo.yaml,並同時在兩個註冊中心上註冊服務。
dubbo:
registries:
zookeeper: # Specify the zookeeper registration center
protocol: zookeeper
address: 127.0.0.1:2181
nacos: # Specify the nacos registration center
protocol: nacos
address: 127.0.0.1:8848
protocols:
triple:
name: tri
port: 20000
provider:
services:
GreeterProvider:
registry-ids: # Simultaneous registration
- zookeeper
- nacos
interface: ""
修改客戶端設定 go-client/conf/dubbogo.yaml
dubbo:
registries:
nacos: # Specify the nacos registration center
protocol: nacos
address: 127.0.0.1:8848
zookeeper: # Specify the zookeeper registration center
protocol: zookeeper
address: 127.0.0.1:2181
consumer:
references:
GreeterClientImpl:
registry-ids: # Discovered from the nacos registry service
- nacos
protocol: tri
interface: ""
GreeterClientImpl2:
registry-ids: # service discovery from zookeeper registry
- zookeeper
protocol: tri
interface: ""
修改客戶端程式碼,定義一個名為 GreeterClientImpl2 的客戶端 stub 類別
var grpcGreeterImpl2 = new(GreeterClientImpl2)
type GreeterClientImpl2 struct{
api. GreeterClientImpl
}
客戶端撰寫呼叫程式碼
func main() {
config. SetConsumerService(grpcGreeterImpl)
config.SetConsumerService(grpcGreeterImpl2)
if err := config.Load(); err != nil {
panic(err)
}
logger.Info("start to test dubbo")
req := &api.HelloRequest{
Name: "Laurence",
}
reply, err := grpcGreeterImpl.SayHello(context.Background(), req)
if err != nil {
logger. Error(err)
}
logger.Infof("nacos server response result: %v\n", reply)
reply, err = grpcGreeterImpl2. SayHello(context. Background(), req)
if err != nil {
logger. Error(err)
}
logger.Infof("zk server response result: %v\n", reply)
}
3. 多註冊中心服務發現驗證
分別啟動 go-server/cmd 和 go-client/cmd,檢視兩個成功的呼叫日誌
INFO cmd/client.go:55 nacos server response result: name:"Hello laurence" id:"12345" age:21
INFO cmd/client.go:61 zk server response result: name:"Hello laurence" id:"12345" age:21
最後修改日期:2023 年 1 月 2 日:增強 Dubbogo 文件 (#1800) (71c8e722740)