Apache Dubbo Pixiu打造微服务生态的轻量级 API 网关

一、Pixiu 简介:Dubbo 官方的轻量级 API 网关

Apache Dubbo Pixiu 是一个由 Golang 编写、专为 Dubbo 微服务生态设计的轻量网关:

  • ✅ 支持 HTTP/gRPC/Dubbo 协议互通
  • ✅ 内建服务治理能力:限流、熔断、路由、认证
  • ✅ 插件式架构,可灵活扩展各种过滤器
  • ✅ 可独立部署,也可作为 Sidecar 实现服务网格流控

Pixiu 不仅是"HTTP 入口 + 转发工具",更是 Dubbo 世界里的协议适配器 + 流量治理中枢

二、为什么是 Pixiu,而不是 Nginx/Kong?

功能对比项 Nginx Kong Pixiu
支持 Dubbo 协议 ⚠️ 可扩展 ✅ 原生支持
协议转换 ✅(部分) ✅ HTTP⇋RPC
插件机制 🌕 Lua 模块 🌕 丰富 🌕 Golang 插件
服务发现 ✅ Nacos/ZK
配置动态热更 ✅ YAML/中心
微服务治理 ✅ 限流/熔断/标签路由

Pixiu 的定位很明确:

🔥 专注 Dubbo、专注微服务、专注高性能,轻但够用,能打还好扩展。

三、Pixiu 架构解读:组件一图看懂

核心模块:

  • Listener:接收 HTTP/gRPC 请求
  • Router:基于 path/method/header 做智能路由
  • Protocol Adapter:将请求转换为 RPC 调用(支持 Triple)
  • Invoker:调用 Dubbo 后端服务(Go/Java/其他语言)
  • Filter 插件链:权限认证、日志审计、限流、追踪都在这儿
  • Service Discovery:自动对接注册中心(Nacos/ZK)

四、实际场景怎么用?

场景一:统一 Dubbo 服务接入(HTTP ⇋ RPC)

bash 复制代码
curl http://localhost:8888/api/v1/user/get?id=123
# Pixiu 自动转为 RPC 请求 -> UserService.GetUser(id=123)

场景二:REST 接入 Java Dubbo 服务(跨语言)

  • 前端调用 /user/login
  • Pixiu 将请求转为 Triple 协议
  • Java 后端用 Dubbo 实现逻辑处理

Pixiu Sidecar 拦截出入流量,实现可编程治理,无需 Istio。

五、Pixiu 配置详解(YAML)

yaml 复制代码
apiVersion: dubbo.apache.org/v1alpha1
kind: Route
metadata:
  name: login-route
spec:
  path: /login
  method: POST
  service: com.demo.UserService
  rpcMethod: Login
  protocol: triple

可以按 headermethod标签 精细路由,也支持灰度发布:

yaml 复制代码
filters:
  - name: ratelimit
    config:
      rate: 50
      burst: 100
  - name: jwt-auth
    config:
      secret: my-jwt-secret

六、插件机制:Filter 架构 & 示例

Pixiu 使用类似网关中间件的 Filter 架构,你可以在请求前、请求后插入逻辑。

常用内置插件:

  • jwt-auth:Token 认证
  • ratelimit:基于 IP、Path 限流
  • prometheus:暴露 /metrics
  • mock:测试环境模拟返回
  • 自定义插件:Golang 编写,支持热加载

七、与服务注册中心联动

Pixiu 可读取服务注册中心的服务列表,动态感知 Dubbo 服务上下线:

yaml 复制代码
registry:
  protocol: nacos
  address: 127.0.0.1:8848

同时支持:Nacos、Zookeeper、Consul、Kubernetes CRD。

八、在 Mesh 架构中的位置图

部署 Pixiu 为每个服务的 Sidecar,实现流量透明转发、隔离和治理:

九、性能与扩展性亮点

能力 表现
吞吐量 支持数千 QPS 请求稳定转发
延迟 请求转 RPC 平均延迟 < 2ms
启动速度 毫秒级,秒级热重载
插件扩展 可插拔 Golang 插件系统
资源消耗 单实例 <100MB,支持容器化部署

十、未来规划与发展方向

来自官方路线图:

  • ✅ 插件热加载 + 插件市场
  • ✅ Dubbo3 协议全面支持 + 流控增强
  • ✅ 图形化控制台(Web UI)
  • ✅ 路由策略动态下发(配置中心接入)
  • ✅ 多语言客户端集成(Pixiu SDK)

十一、总结

Pixiu 是 Dubbo 世界里的边关将军,既懂 HTTP、又通 RPC,既轻量、又可扩展:

  • 是微服务的网关统一入口
  • 是 Dubbo 服务治理的操作面板
  • 是构建服务网格的重要代理器
  • 是云原生部署中的贴心助手

如果你:

  • 已在使用 Dubbo(Go / Java)
  • 正想从 Nginx 转型治理网关
  • 想搭建轻量 Mesh、流量可编排系统

Pixiu 值得你立刻试一试。

参考链接 & 推荐阅读

相关推荐
CopyLower2 小时前
Java在微服务架构中的最佳实践:从设计到部署
java·微服务·架构
啾啾Fun3 小时前
【Java微服务组件】分布式协调P1-数据共享中心简单设计与实现
java·分布式·微服务
hnlucky4 小时前
Windows 上安装下载并配置 Apache Maven
java·hadoop·windows·学习·maven·apache
掘金-我是哪吒8 小时前
分布式微服务系统架构第133集:运维服务器6年经验,高并发,大数据量系统
运维·服务器·分布式·微服务·系统架构
天天爱吃肉821810 小时前
车载以太网驱动智能化:域控架构设计与开发实践
java·运维·网络协议·微服务
zy happy1 天前
搭建运行若依微服务版本ruoyi-cloud最新教程
java·spring boot·spring cloud·微服务·ruoyi
IT成长史1 天前
deepseek梳理java高级开发工程师微服务面试题-进阶版
java·spring cloud·微服务
一零贰肆1 天前
互联网大厂Java面试题:深入解析SpringCloud微服务架构中的服务注册与发现机制
java·微服务·nacos·面试题·springcloud
匆匆z21 天前
AWS EC2 微服务 金丝雀发布(Canary Release)方案
微服务·云原生·金丝雀部署
码农飞哥2 天前
互联网大厂Java求职面试实战:Spring Boot到微服务全景解析
java·spring boot·微服务·maven·hibernate·技术栈·面试技巧