使用 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 服务器。并通过 Servcie 将服务暴露到公网。

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)