微服务学习2:Dubbo 和 Spring Cloud 技术选型

前言:Spring Cloud抛弃了传统的RPC通信,采用了基于HTTPREST方式,使得微服务接口更为灵活,服务提供者和消费者之间的依赖只需要一纸契约即可,而不存在代码级别的强依赖,这对快速演化的微服务架构更合适。前几年比较火的是阿里的Dubbo,后来一度停止维护,最近两年又起死回生,重新焕发生机。后来又出现了Spring体系下的微服务方案Spring Cloud,Spring Cloud生态圈非常强大,迅速地流行起来。阿里开源的Spring Cloud Alibaba的服务间通信也可以用dubbo组件代替Rest风格。这样既可保证到RPC服务调用的卓越性能,还可以享受到SpringCloud微服务的一站式解决方案。

1、Dubbo 和 Spring Cloud 对比

一般来说,各大企业内部服务调用为了保证性能会采用PRC,而对外开放的API接口则会采用Restful风格。


最大区别Spring Cloud 抛弃了 Dubbo 的 RPC 通信,采用基于 HTTP 的 REST 方式

严格来说,这两种方式各有优劣。虽然从一定程度上来说,后者牺牲了服务调用的性能,但是也避免了上面提到的原生 RPC 带来的问题。而且 REST 相比 RPC 更加的灵活,服务提供方和调用方的依赖只依靠一纸契约,不存在代码级别的强依赖,这在强调快速演化的的微服务环境下,显得更加的合适。

Dubbo 定位是一款 RPC 框架, Spring Cloud 目标是微服务架构下的一站式解决方案。


2、什么是 Spring Cloud?

Spring Cloud 是一系列框架的有序集合。它利用 Spring Boot 的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用 Spring Boot 的开发风格做到一键启动和部署。 Spring Cloud 并没有重复制造轮子,它只是将各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过 Spring Boot 风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。

Spring Cloud 可以做到那些:

  • 分布式,版本控制配置

  • 服务注册与发现

  • 路由

  • 服务到服务的调用

  • 负载均衡配置

  • 断路器

  • 分布式消息管理


3、Spring Cloud 和 Spring Boot 的关系?

Spring Cloud 是关注全局的微服务协调整理治理框架,它将 Spring Boot 开发的一个个单体微服务整合并管理起来,为各个微服务之前提供:配置管理,服务发现,断路器,路由,微代理,事件总线,全局锁,决策竞选,分布式会话登集成服务。

Spring Boot 可以离开 Spring Cloud 独立使用,开发项目,但 Spring Cloud 离不开 Spring Boot ,属于依赖关系。

Spring Boot 专注于快速方便的开发单个个体微服务, Spring cloud 关注全局的服务治理框架。


4、Spring Cloud版本

Spring Cloud 是一个有众多子项目组成的一个大型综合项目,每个子项目有不同的发行节奏,都维护着自己的发布版本号。 Spring Cloud 通过一个资源清单 BOM (Bill of Materials) 来管理每个版本的子项目清单。为避免与子项目的发布号混淆,所以没有采用版本号的方式,而是通过命名的方式。

在这里插入图片描述

SNAPSHOT: 快照版本,随时可能修改

M: MileStone,M1表示第1个里程碑版本,一般同时标注PRE,表示预览版版。

SR: Service Release,SR1表示第1个正式版本,一般同时标注GA:(GenerallyAvailable),表示稳定版本。(SR2以后的可以放心使用.

RC :版本英文版名字叫Release Candidate(候选版本)一般标注PRE表示预览版


 5、分布式RPC框架dubbo、motan、rpcx、gRPC、thrift的简介

Dubbo 是阿里巴巴公司开源的一个Java高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和 Spring框架无缝集成。不过,略有遗憾的是,据说在淘宝内部,dubbo由于跟淘宝另一个类似的框架HSF(非开源)有竞争关系,导致dubbo团停止维护了一段时间,现在又起死回生诞生了Dubbo 3.0,而且可以和Spring Cloud Alibaba无缝整合。

Motan 是新浪微博开源的一个Java 框架。它诞生的比较晚,起于2013年,2016年5月开源。Motan 在微博平台中已经广泛应用,每天为数百个服务完成近千亿次的调用。

rpcx是Go语言生态圈的Dubbo, 比Dubbo更轻量,实现了Dubbo的许多特性,借助于Go语言优秀的并发特性和简洁语法,可以使用较少的代码实现分布式的RPC服务。

gRPC是Google开发的高性能、通用的开源RPC框架,其由Google主要面向移动应用开发并基于HTTP/2协议标准而设计,基于ProtoBuf(Protocol Buffers)序列化协议开发,且支持众多开发语言。本身它不是分布式的,所以要实现上面的框架的功能需要进一步的开发。

thrift是Apache的一个跨语言的高性能的服务框架,也得到了广泛的应用。国内搜狐和猿辅导在使用。

以下是它们的功能比较:

这里写图片描述


参考链接:

Spring Cloud 快速入门-详细基础知识

分布式RPC框架性能大比拼 dubbo、motan、rpcx、gRPC、thrift的性能比较

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Java架构何哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值