Dubbo Echo System-Dubbo Go Pixiu
1. 关于Pixiu
Dubbo-Go-Pixiu是一个基于Dubbo-Go的云原生、高性能、可扩展的微服务API网关,它可以帮助我们轻松地对外暴露Dubbo Server的服务,实现跨语言和跨框架的调用和集成。
2019年Pixiu项目提交了第一行代码,同时,开始实现Http to Dubbo的代理。在Dubbo Go社区的支持下,Pixiu进入Apache,开启了新的历程。2022年发布了v0.5.0版本,这个版本发布之后,意味着Pixiu在Dubbo代理层面功能基本完善。2023年我们实现了更多Dubbo协议之间的互相转换,在配置、安全性、可扩展性以及可观测性上有了很多的改进。
那么Pixiu可以做什么呢?
∙ 作为一个API gateway,它支持Http/Https协议的代理。
∙ 支持Dubbo2/Triple协议的代理。
∙ 支持Dubbo Java/Golang 的接口级/应用级服务发现。
∙ 支持路由/鉴权/限流。
∙ 支持基于Wasm的插件机制等。
上图是Pixiu的架构图, 我们以Http2Dubbo的场景为例,左侧是Client,这个Client发出一个Http请求,经过Pixiu最终到达上游的Dubbo应用,然后把响应返回给调用方。Client的一个HTTP请求发出之后会首先到达Pixiu的Listener,也就是Pixiu的入口,它支持Http、Dubbo、Triple协议。
在这个请求进入到Listener之后会到达Router,找到对应的上游机群,这样就可以发起一个对Dubbo应用的调用。这个Router除了静态配置之外,还支持基于注册中心的自动服务发现,在一个Dubbo应用启动后,Dubbo会把自己的元数据存放到这个注册中心。
Pixiu在启动时会用到一个模块叫Adpter,这个模块在启动之后会自动在注册中心中拉取对应的元数据,然后把这些元数据转化成Pixiu的Router中的多条路由,这样就可以避免非常多的手动配置。
在经过Router的负载均衡和健康检查之后,会到达一个Filter链,这个Filter链实现了很多较丰富的功能,比如有鉴权、日志、限流等等。最后会到达Clent的Filter,这个Filter会根据协议选择对应的Pixiu Client,比如现在的场景是HTTP2 Dubbo的,它就会自动选择一个可以进行Dubbo调用的Client。
这个Dubbo Client会去调用上游的Dubbo应用,最终把响应返回给发起HTTP调用的Client。当然,这个Client也支持Dubbo和Http,可以根据协议自动选择。
带你读《Apache Tomcat的云原生演进》——Dubbo Echo System-Dubbo Go Pixiu(2)https://developer.aliyun.com/article/1377516