SpringCloud怎么迈向云原生?( 二 )


  • SCA的Spring Cloud Dubbo这个模块存在一些问题,且没有人力继续维护了,考虑到用的人不多,所以就不再继续维护 。
  • SCA的目的是为了将阿里云相关组件能快速替换SpringCloud相关模块而诞生的,比如nacos、sentinal、seata、rocketMQ 。
  • Dubbo自身生态非常成熟,一般不需要跟Spring Cloud混用,一般是二选一 。尤其是Dubbo 3.x后支持了Mesh,通过rest方式调用完全可以自成体系 。
2.2 Spring Cloud TencentSpring Cloud Tencent(后面简称SCT)是腾讯最近开源的SC实现框架,项目地址https://github.com/Tencent/spring-cloud-tencent 。
SpringCloud怎么迈向云原生?

文章插图
这是一整套自研的组件,以腾讯云polaris为核心,实现 注册中心、配置中心、服务路由、限流 等等 。
目前相对来说腾讯集团内部使用较多,外界案例较少 。
2.3 小结Spring Cloud Netflix虽然不再维护,但是Spring Cloud依然火热,SCA目前看可能会成为国内最佳实现选择 。
3、Spring Cloud与云原生3.1 特性差异首先,Spring Cloud认为自己还是比较符合云原生的
from https://github.com/spring-cloud/spring-cloud-commons:
Cloud Native is a style of application development that encourages easy adoption of best practices in the areas of continuous delivery and value-driven development. A related discipline is that of building 12-factor Applications, in which development practices are aligned with delivery and operations goals?—?for instance, by using declarative programming and management and monitoring. Spring Cloud facilitates these styles of development in a number of specific ways. The starting point is a set of features to which all components in a distributed system need easy access.
但是Spring Cloud 和目前最火热的云原生Service Mesh体系还是有非常大的差异 。
可以从以下四个方面的对比
SpringCloud怎么迈向云原生?

文章插图
(表格来源:https://medium.com/codex/a-spring-cloud-compatible-service-mesh-6ce58c571012)
前面谈到了,Spring Cloud体系实际上是定义了一套编程模型(规范),包括服务注册发现、负载均衡、熔断降级等等 。
但是这里有些内容是否可以应用无关,下沉到基础设施中?
在云原生环境下,是可以的 。
也就是Spring Cloud定义的部分规范,其实在云原生环境下可能略显冗余了,Service Mesh可以做到应用无关 。
当然,Spring Cloud能做到Service Mesh做不到的一些事情,比如 接口级别的治理、更细粒度的链路追踪 等等 。
另外,跨语言也是Service Mesh的一大杀器 。
云原生环境下,容器化运行,多云部署,使得微服务不在关注到底是什么技术栈,python、c++、Nodejs都可以非常容易在云原生环境下运行 。
但是Spring Cloud只适合java生态,并且侵入到java应用程序代码中,对于多语言是比较无力的 。(其实这里也是 容器化 后,对java语言统治力的一种冲击)
3.2 成熟度从成熟度来说,Service Mesh的istio + envoy的组合目前已经不少大中厂的实践案例,但是跟Spring Cloud比起来,还是差不少 。

经验总结扩展阅读