乐趣区

关于dubbo:Whats-new-in-dubbogopixiu-040

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/dub… 和 https://github.com/apache/dub…

目前,该个性只反对从 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/dub…。下一阶段将通过 gRPC 的反射能力,来动静获取 proto 配置信息,缩小网关处的配置工作。

3 反对 jaeger 标准的链路流传协定

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

Pixiu 基于 opentelemetry 标准构建了分布式链路追踪体系,并反对将数据上传到 jaeger 上进行记录和展现。Pixiu 还会将 Span 相干信息向 upstream 服务传递,由此开发者能够看到每一个通过 Pixiu 进行转发的网络申请的残缺解决链路,不便用户进行链路追踪和排查线上问题。

OpenTelemetry 合并了 OpenTracing 和 OpenCensus 我的项目,提供了一组 API 和库来标准化遥测数据的采集和传输,应用该标准可用不便的在不同分布式链路追踪数据存储端进行切换。目前 Pixiu 反对将数据上传到 jaeger 上,后续能够进行扩大,反对不同品种的 TracerProvider。

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

具体的 pr 是 https://github.com/apache/dub…

4 反对 cors 策略

Pixiu 反对跨域资源共享策略,具体的 pr 是 https://github.com/apache/dub…

5 反对 HTTPS 平安加密

Pixiu 反对 HTTPS 平安加密,具体的 pr 是 https://github.com/apache/dub…

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.1
docker run --name you-pixiu-name -e DUBBO_REGISTRY_ADDRESS=zookeeper://10.170.224.25:2181 phial3/dubbo-go-pixiu:0.0.1
docker 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 年从南京大学毕业。目前就任于南京本地一家守业公司。

退出移动版