使用 Pixiu 暴露 Dubbo-go 服務
Dubbo-go-pixiu 閘道器支援呼叫 GO/Java Dubbo 叢集。在 Dubbo-go 3.0 情境下,我們可以使用 Pixiu 閘道器以 HTTP 協定從叢集外部請求 Pixiu 閘道器,在閘道器層執行協定轉換,進而呼叫叢集內的 Dubbo-go 服務。
使用者呼叫 Dubbo-go 服務的路徑為 http://$(app_name)/$(service_name)/$(method)
例如,一個 proto 檔案具有以下定義
package org.apache.dubbo.quickstart.samples;
service UserProvider {
rpc SayHello (HelloRequest) returns (User) {}
}
message HelloRequest {
string name = 1;
}
並在 dubbo-go 服務啟動時於 dubbogo.yml 中配置應用程式名稱:my-dubbogo-app
dubbo:
application:
name: my-dubbogo-app
pixiu 閘道器可以解析路徑為 http://my-dubbogo-app/org.apache.dubbo.quickstart.samples.UserProvider/SayHello 的路由,並將其轉發到對應的服務。來自外部 HTTP 請求的 body 是 json 序列化後的請求參數,例如 {“name”:“test”}。
我們目前建議使用 Nacos 作為註冊中心。
使用者可以在自己的叢集中部署我們的 demo。叢集最好具備暴露 lb 類型服務的能力,這樣叢集中的服務就可以從公網存取,您也可以直接在叢集中發出請求。對於您的叢集,執行
$ kubectl apply -f https://raw.githubusercontent.com/dubbogo/triple-pixiu-demo/master/deploy/pixiu-triple-demo.yml
以下資源將會在 dubbogo-triple-nacos 名稱空間下建立,包含三個 triple-servers、一個 pixiu 閘道器和一個 nacos 伺服器。並透過 Service 將服務暴露到公網。
namespace/dubbogo-triple-nacos created
service/dubbo-go-nacos created
deployment.apps/dubbogo-nacos-deployment created
deployment.apps/pixiu created
deployment.apps/server created
service/pixiu created
取得 pixiu 公網 IP 並呼叫它
$ kubectl get svc -n dubbogo-triple-nacos
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
dubbo-go-nacos ClusterIP 192.168.123.204 <none> 8848/TCP 32s
pixiu LoadBalancer 192.168.156.175 30.XXX.XXX.XX 8881:30173/TCP 32s
透過 curl 呼叫 demo 服務並取得回應結果。
$ curl -X POST -d '{"name":"laurence"}' http://30.XXX.XXX.XX:8881/dubbogoDemoServer/org.apache.dubbo.laurence.samples.UserProvider/SayHello
{"name":"Hello Laurence","id":"12345","age":21}
最後修改日期:2023 年 1 月 2 日:增強 Dubbogo 文件 (#1800) (71c8e722740)