使用 Pixiu 暴露 Dubbo-go 服務

Dubbo-go-pixiu 閘道器支援呼叫 GO/Java Dubbo 叢集。在 Dubbo-go 3.0 情境下,我們可以使用 Pixiu 閘道器以 HTTP 協定從叢集外部請求 Pixiu 閘道器,在閘道器層執行協定轉換,進而呼叫叢集內的 Dubbo-go 服務。

img

使用者呼叫 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)