美文网首页
19. Dubbo 和 Spring Cloud 两大技术栈如何

19. Dubbo 和 Spring Cloud 两大技术栈如何

作者: 木叶苍蓝 | 来源:发表于2023-08-06 20:41 被阅读0次

Service Mesh:服务网格有哪些应用
Dubbo 和 Spring Cloud ,这两个框架是面试中的热点
本文就梳理下 Dubbo 和 Spring Cloud 的应用特性,以及两个组件功能对比

Dubbo 应用

Dubbo 是阿里开源的一个分布式服务框架
目的是 支持高性能的远程服务调用,并且进行相关的服务治理
从功能上,Dubbo 可以对标 gRPC,Thrift 等典型的 RPC 框架

总体架构
20230807200518.jpg
应用特性
  • 基于 SPI 的扩展
    SPI(Service Provider Interface) 是 JDK 内置的一种服务提供发现机制
    要获取一个类的扩展必须加载所有实现类,得到指定的实现类需要遍历
    Dubbo 中增强了原生的 SPI 实现,可以通过指定的扩展类名称来找到具体的实现
  • 灵活的服务调用
    Dubbo 支持多种服务调用方式
    针对服务端和消费端的线程池,集群调用模式,异步和同步调用等都可以进行灵活的配置
  • 责任链和插件模式
    使用者可以在服务调用的责任链上,对各个环节进行自定义实现
    也可通过这种方式,解决 Dubbo 自带策略有限的问题
    Dubbo 实现了一个类似微内核加插件的设计,整体的可扩展性和灵活性都比较高
  • 高级特性支持
    Dubbo 对远程服务调用提供了非常细粒度的功能支持
    比如服务发布支持 XML,注解等多种方式,调用可以选择泛化调用,Mock 调用等

Spring Cloud 应用

Spring Cloud 基于 Spring Boot,是一系列组件的集成
为微服务开发提供一个比较全面的解决方案
包括服务发现功能,配置管理功能,API 网关,限流熔断组件,调用跟踪等一系列的对应实现

总体架构
20230807201916.jpg
应用特性

Spring Cloud 目前主要的解决方案包括:
Spring Cloud Netflix 系列,以及 Spring Cloud Config,Spring Cloud Consul 等
Spring Cloud 典型的应用:

  • 配置中心,一般使用 Spring Cloud Config 实现,服务发现也可以管理部分配置
  • 服务发现,使用 Eureka 实现,也可以扩展 Consul 等
  • API网关,使用 Zuul 实现,另外还有 Kong 等应用
  • 负载均衡,使用 Ribbon 实现,也可以选择 Feign
  • 限流降级,使用 Hystrix 实现熔断机制,也可以选择 Sentinel

Dubbo 和 Spring Cloud 对比

介绍 Dubbo 时,主要是从 RPC 调用的特性入手
介绍 Spring Cloud 时,更多的是强调其在微服务方面提供的整体解决方案
Dubbo 更多关注远程服务调用功能特性
Spring Cloud 包含了整体的解决方案,可以认为 Dubbo 支持的功能是 Spring Cloud 的子集

功能对比

生产环境使用 Dubbo 组件实现服务调用,需要强依赖 ZooKeeper 注册中心
如果要实现服务治理和周边功能,比如配置中心,服务跟踪等,则需要集成其他组件的支持

  • 注册中心:需要依赖 ZooKeeper ,其他注册中心应用较少
  • 分布式配置:可以使用 diamond,淘宝的开源组件来实现
  • 分布式调用跟踪:应用扩展 Filter 用 Zippin 来做服务跟踪
  • 限流降级:可以使用开源的 Sentinel 组件,或者自定义 Filter 实现

对于 Spring Cloud,提供的功能更加多样
服务治理只是其中一个方面,面向的是微服务整体的解决方案

调用方式
  • Dubbo 使用 RPC 协议进行通信,支持多种序列号方式,包括 Dubbo 协议,Hessian,Kryo 等,如果针对特定的业务场景,用户还可以扩展自定义协议实现
  • Spring Cloud 一般使用 HTTP 协议的 RESTful API 调用
    RESTful 接口相对 RPC 更为灵活,服务提供方和调用方可以更好的解耦,不需要依赖额外的 jar 包等
    从性能角度考虑,一般来说,会认为 RPC 方式的性能更高
服务发现
  • Dubbo 的服务发现通过注册中心实现,支持多种注册中心
    本地测试支持 Multicast,Simple 等简单的服务发现方式
  • Spring Cloud 有各种服务发现组件,包括 Eureka,Consul,Nacos 等
    Spring Cloud 中的 Eureka 实现的是 AP 一致性,AP 更适合服务发现的场景
开发成本
  • 应用Dubbo 需要一定的开发成本,自定义功能需要实现各种 Filter 来做定制
  • Spring Cloud 各种功能都有了对应的开源实现,应用起来更加简单
    如果项目中已经应用了 Spring 框架,Spring Boot 等技术
    可以更方便的集成 Spring Cloud ,减少已有项目的迁移成本
Dubbo 和 Spring Cloud 的目标不同,关注的是微服务实现的不同维度
  • Dubbo 看重远程服务调用
  • Spring Cloud 作为一个微服务生态,覆盖了从服务调用,到服务治理的各个场景

总结

本文对比了微服务的两大技术栈
分别介绍了 Dubbo 和 Spring Cloud 的架构,以及应用特性

  • Spring Cloud 从发展到现在,社区一直保持高度活跃,各类解决方案越来越丰富
  • Dubbo 在近几年重启维护,发布了新版本,也官宣了新的升级计划

相关文章

网友评论

      本文标题:19. Dubbo 和 Spring Cloud 两大技术栈如何

      本文链接:https://www.haomeiwen.com/subject/oeewpdtx.html