在微服务开发中,微服务框架通常选择 Spring Boot 和Spring Cloud,目前,国内使用较多的微服务框架主要有Dubbo和Spring Cloud,Dubbo是国内开源,在国内被使用广泛。Spring Cloud微服务组件丰富、版本更新快。很多开发者在选型时候也会遇到一些困惑,如何选择适用于项目的微服务框架?下面主要介绍Dubbo服务框架和SpringCloud微服务框架之间的差异。

一、Dubbo微服务框架

Dubbo是阿里巴巴开源的高性能、轻量级的开源Java RPC框架,提供接口远程调用、负载均衡、自动注册的3个主要的核心功能。总的来说:Dubbo 就是一个服务框架,是一个远程服务调用的分布式框架。Dubbo 服务框架如下图所示:

Dubbo 服务框架
Dubbo 服务框架

1.模块说明

(1)Provider暴露服务的提供者。

(2)Consumer调用远程服务的消费者。

(3)Registry∶服务注册与发现的注册中心。

(4)Monitor∶ 统计服务的调用次数和调用时间的监控中心。

(5)Container服务的运行容器。

2.流程说明

0:Container服务的运行容器,运行并提供服务。

1:注册时候提供服务服务。

2:注册中心向消费者提供订阅服务。

3:notify将最新的数据推送给消费者。

4:invoke服务消费者,保证服务不中断;

5∶count为消费者和提供者,提供数据统计的服务。

3.Dubbo服务框架的六大特点

(1)提供高性能的远程调用功能,以接口粒度提供服务,屏蔽远程调用底层相关细节。

(2)自动的负载均衡功能,通过各种负载均衡策略,自动调节资源使用情况。

(3)服务自动注册与发现∶支持多种注册中心服务,服务实例上下线实时感知。

(4)高度可扩展能力∶遵循微「内核+插件」的设计原则,所有核心能力(如Protocol、Transport、Serialization)被设计为扩展点,平等对待内置实现和第三方实现。

(5)运行期流量调度∶ 内置条件、脚本等路由策略, 配置不同的路由规则,可以轻松实现灰度发布,以及同一机房服务优先调用等功能。

(6)可视化的服务治理与运维∶ 提供丰富的服务治理和运维工具, 如随时查询服务元数据、服务健康状态及调用统计,以及实时下发路由策略、调整配置参数。

二、Spring Cloud微服务框架

Spring Cloud 是微服务框架的有序集合,利用 Spring Boot 的开发便利性可以简化分布式系统基础组件的开发和使用,同时为开发人员提供了快速构建分布式系统中常见组件的工具,如配置管理、服务发现、熔断器、智能路由、控制总线、网关等功能。Spring Cloud 微服务框架如下图所示:

Spring Cloud 微服务框架
Spring Cloud 微服务框架

 Spring Cloud 微服务框架主要包括EUREKA、Zuul、CONFIGSERVICE、Hystrix Dashboard、Turbine等组件,另外,负载均衡组件Ribbon内嵌在服务调用中。

组件说明如下:

(1)EUREKA服务注册与发现的注册中心。

(2)Zuul网关和路由。

(3)CONFIG SERVICE∶分布式配置服务。

(4)Hystrix Dashboard∶服务熔断监控组件。

(5)Turbine服务调用汇集展示。

EUREKA组件实现了服务的注册与发现,服务相互之间调用时,通过服务名称即可完成接口服务调用,而隐藏了服务的部署地址及部署数量等信息。EUREKA组件使用时分为客户端和服务端∶客户端完成服务向服务端的注册;服务端接收服务注册,同时提供服务发现功能。

Spring Cloud 微服务框架还包含两个常用组件∶Ribbon和Zipkin。Ribbon是客户端负载均衡组件,Zipkin是调用链追踪组件。

三、Dubbo微服务框架和SpringCloud微服务框架的对比

远程调用Dubbo服务框架和SpringCloud微服务框架都可以作为微服务的基础开发与运行框架。Dubbo服务框架和SpringCloud微服务框架的对比如下表所示:

组 件

Dubbo服务框架

Spring Cloud微服务框架

服务注册中心

ZooKeeper

Spring Cloud Neiflix Eureka

服务调用方式

RPC

RESTful API

服务网关

Spring Cloud Netflix Zuul

熔断器

不完善

Spring Cloud Netflix Hystrix

分布式配置

Spring Cloud Config

服务跟踪

Spring Cloud Sleuth

消息总线

Spring Cloud Bus

数据流

Spring Cloud Stream

批量任务

Spring Cloud Task

Dubbo服务框架不提供服务网关、分布式配置、服务跟踪等6个组件,只能通过第三方组件来帮助实现其功能。组件调用的侵入性以及社区成熟度和活跃度,Spring Cloud微服务框架作为项目微服务化改造过程中开发和运行的基础框架。

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐