Dubbo

是阿里巴巴服务化治理的核心框架,并被广泛应用于阿里巴巴集团的各成员站点。阿里巴巴近几年对开源社区的贡献不论在国内还是国外都是引人注目的,比如 JStorm 捐赠给 Apache 并加入 Apache 基金会等,为中国互联网人争足了面子,使得阿里巴巴在国人眼里已经从电商升级为一家科技公司了。

Spring Cloud

从命名我们就可以知道,它是 Spring Source 的产物,Spring 社区的强大背书可以说是 Java 企业界最有影响力的组织了,除了 Spring Source 之外,还有 Pivotal 和 Netflix 是其强大的后盾与技术输出。其中 Netflix 开源的整套微服务架构套件是 Spring Cloud 的核心。

两大框架的介绍需要更新到今天的格局:Netflix 组件已停止维护、Spring Cloud 完成代际替换、Dubbo 与 Spring Cloud 出现融合趋势、云原生(Service Mesh/K8s)成为第三极。本文按”治理套件 vs RPC 框架 vs 云原生”三层重画地图,并给出选型依据。

第一层:Spring Cloud(治理套件,HTTP 体系)

Netflix 时代组件(Eureka/Ribbon/Hystrix/Zuul)已进入维护或停更状态,今天的主力是:

  • 注册配置:Nacos(注册+配置一体,国内主流)、Consul、K8s Service+ConfigMap
  • 网关:Spring Cloud Gateway(响应式,取代 Zuul)
  • 负载均衡:Spring Cloud LoadBalancer(取代 Ribbon)
  • 熔断限流:Resilience4j / Sentinel(取代 Hystrix)
  • 调用:OpenFeign(声明式 HTTP 客户端)
  • 链路:Micrometer Tracing + Zipkin/Tempo(取代 Sleuth)

特征:基于 HTTP/JSON,生态与 Boot 无缝,学习曲线平缓;适合业务系统集成、对外 API 多的场景。

第二层:Dubbo(RPC 框架,二进制协议体系)

  • 协议:Dubbo 协议(长连接+NIO+二进制)、Triple(gRPC/HTTP2 兼容,云原生方向)
  • 注册中心:ZooKeeper(传统)、Nacos(主流)
  • 治理:Dubbo Admin、服务降级/路由/限流规则
  • 与 Spring Cloud 融合:Spring Cloud Alibaba 把 Nacos/Sentinel/Seata 接入 Boot 体系,Dubbo 可作为其 RPC 实现——两者从竞争走向分层互补(Cloud 管治理、Dubbo 管高性能调用)

特征:长连接+二进制序列化,吞吐与延迟优于 HTTP/JSON;适合内部服务间高频调用、性能敏感场景。

第三层:云原生与 Service Mesh

  • Kubernetes:服务发现(Service/DNS)、配置(ConfigMap/Secret)、弹性(HPA)、发布(滚动/金丝雀)下沉到平台层
  • Service Mesh(Istio/Linkerd):Sidecar 接管流量治理(熔断/重试/mTLS/灰度),业务代码零侵入——治理逻辑从框架 SDK 移入基础设施
  • gRPC:跨语言 RPC 标准(Protobuf+HTTP2),多语言栈首选

特征:语言无关、升级治理不需改业务代码;代价是运维复杂度与 Sidecar 资源开销。

配套中间件(两代框架共用)

  • 分布式事务:Seata(AT/TCC/Saga)
  • 消息:RocketMQ/Kafka(事务消息、削峰)
  • 任务调度:XXL-Job/PowerJob
  • 可观测:Prometheus + Grafana + 链路(Zipkin/SkyWalking)

选型决策表

场景 推荐 理由
Java 单体拆微服务、团队初上手 Spring Cloud Alibaba(Nacos+Gateway+OpenFeign+Sentinel) 生态全、文档多、HTTP 易调试
内部高频 RPC、性能敏感 Dubbo(Triple) 长连接二进制、治理成熟
多语言栈 gRPC + K8s 跨语言 IDL 与平台治理
治理不想侵入代码、有平台团队 Service Mesh 流量治理下沉基础设施
小规模(<10 服务) 单体+模块化 或 轻量网关 微服务运维成本可能大于收益

框架名单每年在变(Netflix 退场、Mesh 兴起),但微服务框架要解决的六件事不变:注册发现、远程调用、网关路由、熔断限流、配置管理、可观测。按这六件事对照任何框架清单,都能快速定位其组件与缺口——这比记住品牌名更抗时间。