写点什么

采用 Dubbo?还是 Spring Cloud?

  • 2022 年 7 月 18 日
  • 本文字数:1225 字

    阅读完需:约 4 分钟

实施微服务的首要条件就是选择适合团队的微服务框架。

目前市场上微服务的框架,不管是开源的还是收费的,都有很多,比如 Dubbo、Spring Cloud、Tars、Helidon、SOFAStack、gRPC、Thrift、Brpc、Motan 等。在选择框架时需要考虑如下技术点。

◎ 服务发布订阅:是自动发现注册,还是手动在线注册。

◎ 服务路由形式:框架中支持的服务路由(比如常用的随机路由)是否满足我们的需求,或者是否支持自定义路由。

◎ 集群容错:集群容错所支持的方式,比如快速失败、失败自动切换等常用的容错方式。

◎ 调用方式:服务的调用方式是否支持同步、异步以及并行调用。

◎ 通信协议:通信协议是否满足业务需求,是否支持自定义协议。

◎ 序列化方式:框架所支持的序列化方式是二进制序列化还是文本方式序列化。


那么在框架选择上,纠结于到底是采用 Dubbo,还是采用 Spring Cloud?

Dubbo 是阿里巴巴(即阿里巴巴集团)开源的一款高性能、轻量级的开源优秀 Java 版 RPC 框架,可使应用通过高性能的 RPC 实现服务的输出/输入功能,可以和 Spring 框架无缝集成。

Dubbo 有三大核心能力:

(1)面向接口的远程方法调用

(2)提供容错和多种负载均衡策略

(3)服务自动注册和发现功能

Spring Cloud 是 Spring 家族的产品,专注于企业级开源框架的研发,它利用 Spring Boot 的开发便利性巧妙地简化了分布式系统基础设施的开发。比如,服务发现注册、配置中心、消息总线、负载均衡、熔断器、数据监控等特性都可以用 Spring Boot 风格做到一键部署和启动。下面我们从总体架构及编程方式方面对 Dubbo 和 Spring Cloud 进行详细对比,以便确定到底采用哪种框架。



总体架构对比

Dubbo 架构

Dubbo 架构的概况如图 1-7 所示,由 Consumer、Provider、Registry、Container 和 Monitor 这 5 部分组成。

◎ Consumer:调用远程服务的服务消费方(或称为服务消费者)。

◎ Provider:暴露服务的服务提供方(或称为服务提供者),可以通过 jar 或者容器的方式启动服务。

◎ Registry:服务注册中心和发现中心。

◎ Container:运行服务的容器。

◎ Monitor:调用时间监控中心,统计服务和调用次数。



Spring Cloud 架构

Spring Cloud 架构的概况如图 1-8 所示,由 Consumer、Provider 及 Eureka Server 这 3 部分组成。

◎ Provider:暴露服务的提供方。

◎ Consumer:调用远程服务的服务消费方。

◎ Eureka Server:服务注册中心和服务发现中心。



编程方式对比

Dubbo 的服务发布和调用流程如下。

(1)先定义接口及 DTO 参数对象。

(2)实现接口中所定义的方法。

(3)通过 XML 或者注解方式发布 Dubbo 服务。

(4)服务消费者在 Maven 中依赖接口的 jar 包,通过接口调用服务。


Spring Cloud 的服务发布和调用流程如下。

(1)定义 API 接口文档以及 Feign 的接口。

(2)服务提供者发布 Rest 接口。

(3)服务消费者组织接口文档中的参数,通过 Feign 完成接口调用。




本文节选自《架构演变实战:从单体到微服务再到中台》这本书,书里通过真实案例实战的方式完整地讲述了如何从一个单体架构逐步转型到中台的历程!强烈推荐给大家!是很好的架构师、技术优化的参考工具书。



用户头像

还未添加个人签名 2019.10.21 加入

还未添加个人简介

评论

发布
暂无评论
采用Dubbo?还是Spring Cloud?_博文视点Broadview_InfoQ写作社区