写点什么

What's new in dubbo-go-pixiu 0.4.0

作者:apache/dubbo-go
  • 2022 年 1 月 04 日
  • 本文字数:1777 字

    阅读完需:约 6 分钟

Dubbo-go-pixiu 是一款高性能 API 网关,支持 Dubbo 和 Http 等多种协议。具体介绍文章可以参考《Dubbo 跨语言调用神兽:dubbo-go-pixiu》


近期社区发布了 0.4.0 版本,具体请查看 v0.4.0。相关改进实在太多,本文只列出相关重大 feature、bugfix 、 性能提升项。

1 动态从 Spring Cloud 和 Dubbo 注册中心拉取路由和集群配置数据

Pixiu 原本依赖本地配置文件读取路由和 upstream 集群配置数据,对于真实生产场景十分不方便。因此,Pixiu 需要支持从集群注册中心动态获取路由和集群配置数据的功能。



如上图所示,服务 A、B、C 进行服务注册,将自身元数据存储在注册中心。而 Pixiu 则从注册中心拉取注册的服务元数据,构建自己的路由规则和转发集群配置。当客户端发送请求时,Pixiu 会基于构建的转发规则,将请求转发给对应的后端服务。


社区同学分别就目前主流的两大微服务解决方案 Spring Cloud 和 Dubbo 进行了相关特性开发,相关的 pr 为 https://github.com/apache/dubbo-go-pixiu/pull/255https://github.com/apache/dubbo-go-pixiu/pull/256


目前,该特性只支持从 zk 和 nacos 拉取元数据,更多服务注册中心的支持工作正在进行中,欢迎感兴趣的同学参与,可以加入钉钉群 31203920。

2 支持 Http 协议 转换为 gRPC 协议

gRPC 协议已经是事实上的云原生基础通信协议。etcd、istio、dapr 等大量云原生中间件都提供 gRPC 相关的 API 接口供外界使用,dubbogo 3.0 也是基于 gRPC 构建了完全兼容 gRPC 的 triple 协议。


但是对于外部系统而言,传统 HTTP 请求仍然是最为简单和稳定的通信手段,所以 Pixiu 提供了 Http 协议请求转换为 gRPC 协议请求的能力,方便将内部服务的 gRPC API 以 Http 的形式进行对外暴露。具体模式如下图所示,Pixiu 负责将客户端的 Http 请求进行解码,然后编码为 gRPC 请求,并转发给后端服务。



目前 Pixiu 是基于本地配置的 proto 文件进行相关协议的编解码工作的,具体 pr 为 https://github.com/apache/dubbo-go-pixiu/pull/244。下一阶段将通过 gRPC 的反射能力,来动态获取 proto 配置信息,减少网关处的配置工作。

3 支持 jaeger 规范的链路传播协议

可观测性是大型软件系统的重要质量指标之一,而分布式链路追踪是其中的重中之重。


Pixiu 基于 opentelemetry 规范构建了分布式链路追踪体系,并支持将数据上传到 jaeger 上进行记录和展示。Pixiu 还会将 Span 相关信息向 upstream 服务传递,由此开发者可以看到每一个经过 Pixiu 进行转发的网络请求的完整处理链路,方便用户进行链路追踪和排查线上问题。


OpenTelemetry 合并了 OpenTracing 和 OpenCensus 项目,提供了一组 API 和库来标准化遥测数据的采集和传输,使用该规范可用方便的在不同分布式链路追踪数据存储端进行切换。目前 Pixiu 支持将数据上传到 jaeger 上,后续可以进行扩展,支持不同种类的 TracerProvider。


使用 Jaeger 进行追踪的效果图如下所示。



具体的 pr 是 https://github.com/apache/dubbo-go-pixiu/pull/236

4 支持 cors 策略

Pixiu 支持跨域资源共享策略,具体的 pr 是 https://github.com/apache/dubbo-go-pixiu/pull/249

5 支持 HTTPS 安全加密

Pixiu 支持 HTTPS 安全加密,具体的 pr 是 https://github.com/apache/dubbo-go-pixiu/pull/213

6 添加了更多的案例项目

Pixiu 项目的 samples 文件夹下添加了更多案例项目,包括并不限于:


spring cloud 和 Dubbo 集群的服务发现案例,路径是 samples/springcloud 和 samples/dubbogo/simple/registry;


分布式链路追踪案例,路径是 samples/dubbo/simple/jaeger;


http to grpc 案例,路径是 samples/http/grpc/。

7 docker 示例

目前 Pixiu 社区开发了一个 docker 镜像,方便你进行测试,当前支持 dubbo 服务的 zookeeper 和 nacos 注册中心,配置指定环境变量的注册中心(你自己的 dubbo 服务注册中心地址)地址即可使用:


docker pull phial3/dubbo-go-pixiu:0.0.1docker run --name you-pixiu-name -e DUBBO_REGISTRY_ADDRESS=zookeeper://10.170.224.25:2181 phial3/dubbo-go-pixiu:0.0.1docker run --name you-pixiu-name -e DUBBO_REGISTRY_ADDRESS=nacos://10.170.224.25:8848 phial3/dubbo-go-pixiu:0.0.1
复制代码


如果你有任何疑问,欢迎加入 dubbogo 社区群【钉钉搜索群号 23331795 或者 钉钉扫码如下群二维码】



作者:张天,山东人,2018 年从南京大学毕业。目前就职于南京本地一家创业公司。

发布于: 3 小时前
用户头像

dubbogo社区 2019.08.25 加入

dubbogo社区官方账号,发布 github.com/apache/dubbo-go 各种最新技术趋势、项目实战和最新版本特性等技术干货。

评论

发布
暂无评论
What's new in dubbo-go-pixiu 0.4.0