You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

88 lines
8.5 KiB
Markdown

This file contains invisible Unicode characters!

This file contains invisible Unicode characters that may be processed differently from what appears below. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to reveal hidden characters.

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 34 | Spring Cloud面向应用层的云架构解决方案
上期文章我们介绍了混合云以及在实际操作中我们常见的几种混合云模式。今天我们来聊一聊Spring Cloud如何解决应用层的云架构问题。
对于Spring Cloud你大概不会陌生它跟Spring生态中的另一个开源项目Spring Boot基本上已经成为国内绝大多数公司向微服务架构转型时的首选开发框架。
Spring Boot可以支持快速开发单个微服务应用Spring Cloud则提供一系列的服务治理框架比如服务注册、服务发现、动态路由、负载均衡以及熔断等等能力可以将一个个独立的微服务作为一个整体进行很好的管理和维护。
从业界实际使用情况和反馈来看由于两者完美的搭配Spring Cloud和Spring Boot确实是可以通过相对较低的技术成本让开发人员方便快速地搭建起一套分布式应用系统从而进行高效的业务开发。
同时,优秀的服务治理能力,也为其后续在稳定性保障工作方面打下了不错的基础。
因为Spring Cloud必须基于Spring Boot框架才能发挥它的治理能力所以下面我们提到的Spring Cloud是默认包含了Spring Boot框架的。
所以通常我们更多地是把Spring Cloud作为微服务应用层面的开发框架帮助我们提升开发效率。看起来它貌似跟“云”这个概念没有什么直接关系。
而实际上在将应用与云平台连接方面Spring Cloud也发挥着非常核心的作用。这也是为什么本期文章的标题没有直接定义为微服务治理架构而是面向应用层的云架构。
下面我们具体来看看。
## Spring Cloud框架中云的影子
目前整个Spring生态是由Pivotal这家商业公司在主导但是Pivotal更大的目标是要为客户提供云上的端到端的解决方案。
所以Pivotal最早提出了Cloud-Native云原生的概念或者说是一种理念**目的是帮企业提供云上业务端到端的技术解决方案,全面提升软件交付效率,降低运维成本。**简单来说,就是除了业务解决方案和代码,其它事情都可以交给平台处理。
基于这样的理念Pivotal打造了自己的云原生解决方案PCFPivotal Cloud Foundry包括多云和跨云平台的管理、监控、发布以及基础的DB、缓存和消息队列等等一应俱全。
我们可以看到在PCF整体解决方案中Spring生态是向用户的业务应用层架构拓展的非常重要的一环帮助其进行高效的业务开发并提供后续的稳定性保障。
![](https://static001.geekbang.org/resource/image/88/17/880d3bf4d381126a0795b06de279de17.jpg)
所以,这个时候,**Spring Cloud除了提供微服务治理能力之外还成为了微服务应用与云平台上各项基础设施和基础服务之间的纽带并在其中起到了承上启下的关键作用。**
至此,我们可以得出这样一个判断,也是本篇文章想传递的一个信息:**Spring Cloud不仅仅是微服务治理解决方案它同时还是面向应用层的云架构解决方案。**
虽然Pivotal最早提出了云原生的理念也提供了PCF这样的云原生整体商业解决方案但是从目前业界的实际应用情况来看Spring Cloud这个局部解决方案的应用更为广泛。
而且从图中我们看到其与AWS的深度整合也正反映出当前Spring Cloud在整个业界的影响力和被应用的广泛程度。
插句题外话。早期阿里开源的Dubbo其实是跟Spring Cloud类似的微服务框架并且经过阿里大规模的应用实践可以说是非常优秀的开源项目。早些年国内在选择微服务框架时Dubbo基本是首选但是近年来因为开源维护不力很早停止了版本更新导致大量的用户流失促使用户纷纷涌入Spring Cloud阵营。
而Spring Cloud经过近几年的发展深入了解用户需求和痛点不断完善改进早已蜕变成我们所说的应用层的云架构紧跟整个云计算发展趋势的大潮。
最近Dubbo重启开源维护与阿里云EDAS产品体系整合很大原因就是因为在用户技术架构体系里缺少了Spring Cloud这样的产品再加上Dubbo原有的一些用户基础重启维护无论从哪方面看都是值得的。但是需要多久才能重拾用户的信心就要看Dubbo的后续表现了。
以Spring Cloud为代表的云原生模式也是当前业界的主流模式。虽然它可能以解决应用层面的问题为主尚未与云平台全面对接整合不过它所带动起来的云原生的理念却被业界越来越广泛地接受。
同时随着容器及编排技术的发展和成熟就出现了另外一个云原生的体系且活跃程度非常高它就是以Google为首的CNCFCloud Native Computing Foundation。下面我们一起看一下。
## CNCF
CNCF设想中的云原生分层架构示意图
![](https://static001.geekbang.org/resource/image/9e/b4/9e9ced0a6e757a2349cdc1c090b4d0b4.jpg)
CNCF组织成立后圈中大佬们纷纷加入比如AWS、微软、思科、Pivotal等等国内的腾讯云、阿里云和华为也参与其中可见其影响力有多大。
CNCF的核心项目除了K8S外还有Goggle的gRPCDocker的ContainerDCoreOS的Rkt等重量级开源项目。同时也有与Spring Cloud类似但更加通用的微服务治理框架如Linkerd和Envoy它们被称为Service Mesh服务网格
这些项目的优势在于它们是与K8S集成和配套的可以很便捷地应用于K8S生态中。虽然K8S自身也是支持服务发现、负载均衡这些基本的微服务治理的但是在CNCF中它显得更加包容与开放不断吸引业界最佳实践的开源产品加入共同打造更加开放的生态。下图为CNCF当前的项目。
![](https://static001.geekbang.org/resource/image/e0/99/e08aed7839e2d337d2970a8c6739de99.jpg)
同时因为目前K8S已实际上成为业界容器编排方面的标准且被广泛应用所以各大云厂商无论公有云和私有云都会主动支持K8S在云计算体系中的落地。
因此我们根本不用担心K8S与云平台上 的资源和各种服务的对接问题,而且它最终也会将应用与云平台很好地连接起来,让开发者能够更加专注于业务开发。至于剩下的工作,则都交由平台去做。
当前CNCF的各个项目社区非常活跃以至于我们一提到云原生就会联想到基于CNCF和K8S的生态体系。虽然Google和CNCF都不是云原生的提出者但目前看来它们都是云原生的最佳实践者。
## 可以预见的技术发展趋势
我们可以看到无论是Spring Cloud、CNCF、云原生、还是K8S等等新技术或理念究其根本都是为了能够更快更好地支持业务需求的快速实现。
从云原生的理念中,我们可以看到,跟业务无直接关系且相对通用的技术在不断地被标准化,而且标准化层面越来越高。
从最底层的硬件和网络设备到上层数据库、缓存、文件存储以及消息队列等等基础组件服务再到Spring Cloud和Service Mesh这样的应用层面的服务管理和治理能力都正变得越来越标准和通用。
技术每被标准化一层,原来繁琐低效的工作就少一些,技术标准化的层面越高,技术门槛就会变得越低。我们可以作个大胆的预想:或许未来真的只会有业务解决方案和业务代码。
对于我们技术人来说,未来更多更迫切的能力需求将会是:如何利用好业界已有的丰富的技术产品和平台,在面对更加丰富多样且复杂的业务领域需求时,能够更加专注于寻求业界解决方案,以更好地将业务和技术连接起来。找到适合业务解决方案的技术并落地实现,而不再只是专注于技术层面的造轮子。
对于运维来说,我们同样要了解技术发展趋势。虽然我们不会直接参与具体的业务解决方案和代码的开发,但是,如果架构师是业务架构的设计者,那么我们应该成为技术架构的管理者,从效率、成本、稳定性这几个方面来检验架构是否合理,并为架构朝着更加健康的方向发展保驾护航。这也是运维职能转型和思路转变的一个重要方向。
欢迎你留言与我讨论。
如果今天的内容对你有帮助,也欢迎你分享给身边的朋友,我们下期见!