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 值得你立刻试一试。

参考链接 & 推荐阅读

相关推荐
时雨h3 小时前
芋道 Spring Cloud Alibaba 消息队列 RocketMQ 入门
微服务·面试·架构
在努力的韩小豪4 小时前
【微服务架构】本地负载均衡的实现(基于随机算法)
后端·spring cloud·微服务·架构·负载均衡
Hello.Reader12 小时前
初探 Dubbo Rust SDK打造现代微服务的新可能
微服务·rust·dubbo
有龍则灵15 小时前
Dubbo-SPI机制深度解析
后端·dubbo
不被定义的~wolf16 小时前
【STM32】第一个工程的创建
java·stm32·dubbo
极客先躯17 小时前
高级java每日一道面试题-2025年3月08日-微服务篇[Eureka篇]-说一说Eureka心跳机制
java·微服务·eureka·心跳机制
CopyLower18 小时前
Apache Dubbo 与 ZooKeeper 集成:服务注册与发现的全解析
zookeeper·apache·dubbo
x-cmd21 小时前
[250324] Kafka 4.0.0 版本发布:告别 ZooKeeper,拥抱 KRaft!| Wine 10.4 发布!
java·分布式·zookeeper·kafka·apache·kraft·wine
极客先躯1 天前
高级java每日一道面试题-2025年3月09日-微服务篇[Eureka篇]-说一说Eureka自我保护模式
java·微服务·eureka·自我保护机制