SpringCloud怎么迈向云原生?

很多公司由于历史原因,都会有自研的RPC框架 。
尤其是在2015-2017期间,Spring Cloud刚刚面世,Dubbo停止维护多年,很多公司在设计自己的RPC框架时,都会基于Spring Cloud做二次开发 。并且会大量使用Spring Cloud Netflix相关的模块与代码 。
因此,我们去梳理一下Spring Cloud的前世今生,以及未来云原生发展的趋势,可以给这些RPC框架的演进带来一些启发 。
1、Spring Cloud的历史Spring Cloud 自 2015 年 3 月推出之后,很快就在 Java 微服务生态中,成为开发人员的首选技术栈 。

SpringCloud怎么迈向云原生?

文章插图
Spring Cloud 在 Spring Boot 的基础上,保留 Java 开发习惯,加入分布式特性,提供了一系列通用工具来帮助开发者在分布式系统里快速构建一些常见模式,现在已成为使用范围最广的微服务架构之一 。
Spring Cloud提供了微服务开发所需的配置管理、服务发现、断路器、智能路由、集群状态管理等组件 。最重要的是,跟Spring Boot框架一起使用的话,会让你开发微服务架构非常方便 。
Spring Cloud本身不是新的框架,它是一系列框架的有机组合,利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发 。
注意,并非所有组件都由Spring提供,Netflix扮演了重要的角色 。注册中心Eureka、熔断器Hystrix、负载均衡组件Ribbon、网关Zuul等重要组件均由Netflix提供,主要贡献来自 Netflix OSS 。
2、Spring Cloud的现在由于Netflix在开源投入上的策略调整,Eureka、Hystrix、Ribbon 相继宣布停止维护,社区上人心惶惶,因为当时绝大部分开发者认为 Spring Cloud = Spring Cloud Netflix 。
但实际上 Spring Cloud 是一套规范,这套规范并不是只有 Netflix OSS,还有 Spring Cloud Alibaba,Spring Cloud Zookeeper,Spring Cloud Consul,Spring Cloud Kubernetes 这些实现,最近腾讯也开源了Spring Cloud Tencent(暂时还没有进入Spring Cloud 官方社区) 。
2.1 Spring Cloud AlibabaSpring Cloud Alibaba(后面简称SCA) 是目前国内Spring Cloud最活跃、组件最多,也是最容易替代 Spring Cloud Netflix 的实现 。
下面张图对相关功能和组件的映射关系表达得比较清晰了 。
SpringCloud怎么迈向云原生?

文章插图
(来源:https://www.oschina.net/question/4489239_2321891)
我们可以看到,SCA对Spring Cloud的实现,采用了几个目前非常热门的项目,基本上可以做到快速接入,稳定使用 。
SpringCloud怎么迈向云原生?

文章插图
不过这里有个地方需要注意,从SCA 的2.2.7-RELEASE版本后,不再支持dubbo的快速接入了,而是直接使用了Spring Cloud的原生调用方式(OpenFeign和RestTemplate) 。
为什么呢?查了下issue找到了社区相关讨论https://github.com/alibaba/spring-cloud-alibaba/issues/2398 。
总结起来有几点原因:

经验总结扩展阅读