在微服务开发中,微服务框架通常选择 Spring Boot 和Spring Cloud,目前,国内使用较多的微服务框架主要有Dubbo和Spring Cloud,Dubbo是国内开源,在国内被使用广泛。Spring Cloud微服务组件丰富、版本更新快。很多开发者在选型时候也会遇到一些困惑,如何选择适用于项目的微服务框架?下面主要介绍Dubbo服务框架和SpringCloud微服务框架之间的差异。
一、Dubbo微服务框架
Dubbo是阿里巴巴开源的高性能、轻量级的开源Java RPC框架,提供接口远程调用、负载均衡、自动注册的3个主要的核心功能。总的来说: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 微服务框架主要包括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微服务框架作为项目微服务化改造过程中开发和运行的基础框架。