Spring Cloud 微服务开发:入门、进阶与源码剖析 —— 1.4 Spring Cloud 的增强生态

1.4 Spring Cloud 的增强生态

1.4.1 Spring Cloud 分布式事务

在微服务如火如荼的情况下,越来越多的项目开始尝试改造成微服务架构,微服务即带来了项目开发的方便性,又提高了运维难度以及网络不可靠的概率。采用 Spring Cloud 框架搭建微服务架构,这势必会引发分布式事务处理的思考。

1.3.2 Spring Cloud 与 Dubbo

Dubbo 经常与 Spring Cloud 拿来比较,其实从背景上讲, Dubbo 是来源于阿里团队,是阿里巴巴服务化治理的核心框架,并被广泛应用于阿里巴巴集团的各成员站点; Spring Cloud 是来源于 Spring 团队,它是 Spring Source 的产物, Spring 社区的强大背书可以说是 Java 企业界最有影响力的组织了,除了 Spring Source 之外,还有 Pivotal 和 Netfix 是其强大的后盾与技术输出。其中 Netflix 开源的整套微服务架构套件是 Spring Cloud 的核心。从定位上讲, Dubbo 是一款高性能的 Java RPC 框架;而 Spring Cloud 是一个完整的微服务解决方案。

Spring Cloud 本质上并不是去真正开发了这么一系列的组件,它只是在现有的开源组件的基础上,设计了一套统一的规范或者说是接口,使得这些组件可以接入 Spring Cloud 的体系,从而能够实现无缝的切换底层实现。就好比如服务中心,可以使用 Netflix 的 Eureka 同时也可以无缝切换成阿里巴巴开源的 Nacos 。

Dubbo 和 Spring Cloud 并不是水火不容的,在 2019 年 8 月份 Spring Cloud Alibaba 从 Apache 毕业成为顶级项目后, Dubbo 的生态已经和 Spring Cloud 的生态相互融合,使得微服务之间调用同时具备了 RESTful 和 Dubbo 调用的能力,做到对业务代码无入侵、无感知。在本书的第十三章,将会详细的讲解 Dubbo 与 Spring Cloud 的融合使用方式,介绍如何同时提供 RESTful 和 Dubbo 调用的能力。

1.3.3 Spring Cloud 与 gRPC

gPPC 是谷歌开源的一个高性能的、通用的RPC框架。和其他 RPC 一样,客户端应用程序可以直接调用远程服务的方法,就好像调用本地方法一样。它隐藏了底层的实现细节,包括序列化(XML、JSON、二进制)、数据传输(TCP、HTTP、UDP)、反序列化等,开发人员只需要关自业务本身,而不需要关注RPC的技术细节。
微服务架构的风格,是每个微服务运行在自己的进程中,并使用轻量级的通信机制,通常是HTTP RESTFUL API。这些服务是围绕业务能力来划分的、构建的,并通过完全自动化的机制来部署。这些服务可以用不同的语言来编写,以及不同的数据存储技术,以保证最低限度的集中式管理。但是在通常情况下,HTTP不会开启KeepAlive功能,即为短连接,每次请求都需要建立TCP连接,这使得其在耗时非常低效。对外提供RESTAPI是可以理解的,但内部服务之间进行调用若还是采用HTTP就会显得性能低下,Spring Cloud默认使用Feign进行内部服务调用,而Feign底层使用HTTP协议进行服务之间的调用。Spring Cloud官方没有提供RESTAPI之外的服务调用方案,现有的更高效的内部服务调用方案是GRPC。

1.3.4 Spring Cloud 与 Motan

Motan是一套基于java开发的RPC框架,由新浪微博开源。可靠性经过新浪微博生产环境验证。除了常规的点对点调用外,Motan还提供服务治理功能,包括服务节点的自动发现、摘除、高可用和负载均衡等。Motan具有良好的扩展性,主要模块都提供了多种不同的实现,例如支持多种注册中心,支持多种rpc协议等。支持通过spring配置方式集成,无需额外编写代码即可为服务提供分布式调用能力。支持集成consul、zookeeper等配置服务组件,提供集群环境的服务发现及治理能力。支持动态自定义负载均衡、跨机房流量调整等高级服务调度能力。基于高并发、高负载场景进行优化,保障生产环境下RPC服务高可用。从架构设计上来看,和Dubbo非常相似。但是市场占有率和知名度不及Dubbo,但是遗憾的是,Dubbo过于java,与其他语言的相容性一般,这时就显现出Motan的一大优点是,跨语言的Rpc框架,除了java外,还支持PHP、Go、Lua等相互之间调用。

发布了151 篇原创文章 · 获赞 1340 · 访问量 13万+

猜你喜欢

转载自blog.csdn.net/meteor_93/article/details/104020023