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打造了自己的云原生解决方案PCF(Pivotal Cloud Foundry),包括多云和跨云平台的管理、监控、发布,以及基础的DB、缓存和消息队列等等,一应俱全。

我们可以看到,在PCF整体解决方案中,Spring生态是向用户的业务应用层架构拓展的非常重要的一环,帮助其进行高效的业务开发,并提供后续的稳定性保障。

所以,这个时候,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为首的CNCF(Cloud Native Computing Foundation)。下面我们一起看一下。

CNCF设想中的云原生分层架构示意图

CNCF组织成立后,圈中大佬们纷纷加入,比如AWS、微软、思科、Pivotal等等,国内的腾讯云、阿里云和华为也参与其中,可见其影响力有多大。

CNCF的核心项目除了K8S外,还有Goggle的gRPC,Docker的ContainerD,CoreOS的Rkt等重量级开源项目。同时也有与Spring Cloud类似,但更加通用的微服务治理框架,如Linkerd和Envoy,它们被称为Service Mesh(服务网格)

这些项目的优势在于,它们是与K8S集成和配套的,可以很便捷地应用于K8S生态中。虽然K8S自身也是支持服务发现、负载均衡这些基本的微服务治理的,但是在CNCF中,它显得更加包容与开放,不断吸引业界最佳实践的开源产品加入,共同打造更加开放的生态。下图为CNCF当前的项目。

同时,因为目前K8S已实际上成为业界容器编排方面的标准,且被广泛应用,所以各大云厂商,无论公有云和私有云,都会主动支持K8S在云计算体系中的落地。

因此,我们根本不用担心K8S与云平台上的资源和各种服务的对接问题,而且它最终也会将应用与云平台很好地连接起来,让开发者能够更加专注于业务开发。至于剩下的工作,则都交由平台去做。

当前,CNCF的各个项目社区非常活跃,以至于我们一提到云原生,就会联想到基于CNCF和K8S的生态体系。虽然Google和CNCF都不是云原生的提出者,但目前看来,它们都是云原生的最佳实践者。

可以预见的技术发展趋势

我们可以看到,无论是Spring Cloud、CNCF、云原生、还是K8S等等新技术或理念,究其根本,都是为了能够更快更好地支持业务需求的快速实现。

从云原生的理念中,我们可以看到,跟业务无直接关系且相对通用的技术在不断地被标准化,而且标准化层面越来越高。

从最底层的硬件和网络设备,到上层数据库、缓存、文件存储以及消息队列等等基础组件服务,再到Spring Cloud和Service Mesh这样的应用层面的服务管理和治理能力,都正变得越来越标准和通用。

技术每被标准化一层,原来繁琐低效的工作就少一些,技术标准化的层面越高,技术门槛就会变得越低。我们可以作个大胆的预想:或许未来真的只会有业务解决方案和业务代码

对于我们技术人来说,未来更多更迫切的能力需求将会是:如何利用好业界已有的丰富的技术产品和平台,在面对更加丰富多样且复杂的业务领域需求时,能够更加专注于寻求业界解决方案,以更好地将业务和技术连接起来。找到适合业务解决方案的技术并落地实现,而不再只是专注于技术层面的造轮子。

对于运维来说,我们同样要了解技术发展趋势。虽然我们不会直接参与具体的业务解决方案和代码的开发,但是,如果架构师是业务架构的设计者,那么我们应该成为技术架构的管理者,从效率、成本、稳定性这几个方面来检验架构是否合理,并为架构朝着更加健康的方向发展保驾护航。这也是运维职能转型和思路转变的一个重要方向。

精选提问

  1. “那么运维应该成为技术架构的管理者,从效率、成本、稳定性这几个方面来检验架构是否合理” 这句话能具体举个例子么因为感觉成熟的解决方案 对运维关心的 成本 效率 稳定性都包括了 比如弹性扩容故障定位 感觉以后能做的越来越少了

    专栏里写的持续交付,和后面的稳定性建设都是实际的案例。
    从技术实现角度,解决方案和思路都是很多成熟的东西可借鉴的,但是落地具体业务时是需要做大量适配的,包括后期的技术运营,这个工作只会越来越多。

Spring Cloud:面向应用层的云架构解决方案的更多相关文章

  1. 构建Spring Cloud微服务分布式云架构

    大型企业分布式微服务云架构服务组件 实现模块化.微服务化.原子化.灰度发布.持续集成 commonservice zipkinSpring 日志收集工具包,封装了Dapper和log-based追踪以 ...

  2. Spring Cloud分布式微服务云架构集成项目

    Spring Cloud集成项目有很多,下面我们列举一下和Spring Cloud相关的优秀项目,我们的企业架构中用到了很多的优秀项目,说白了,也是站在巨人的肩膀上去整合的.在学习Spring Clo ...

  3. Spring Cloud分布式微服务云架构

    分布式.微服务.云架构 JAVA语言开发.跨平台.高性能.高可用.安全.服务化.模块化.組件化.驱动式开发模式 commonservice eurekaNetflix 云端服务发现,一个基于 REST ...

  4. 《Spring Cloud与Docker微服务架构实战》配套代码

    不才写了本使用Spring Cloud玩转微服务架构的书,书名是<Spring Cloud与Docker微服务架构实战> - 周立,已于2017-01-12交稿.不少朋友想先看看源码,现将 ...

  5. Spring Cloud与Docker微服务架构实战 PDF版 内含目录

    Spring Cloud与Docker微服务架构实战  目录 1 微服务架构概述 1 1.1 单体应用架构存在的问题1 1.2 如何解决单体应用架构存在的问题3 1.3 什么是微服务3 1.4 微服务 ...

  6. Spring Cloud与Docker——微服务架构概述

    Spring Cloud与Docker--微服务架构概述 单体应用架构概述 微服务概述 微服务的特性 微服务架构的优点 微服务面临的挑战 微服务的设计原则 单体应用架构概述 传统的服务发布都是采用单体 ...

  7. 基于 Spring Cloud 完整的微服务架构实战

    本项目是一个基于 Spring Boot.Spring Cloud.Spring Oauth2 和 Spring Cloud Netflix 等框架构建的微服务项目. @作者:Sheldon地址:ht ...

  8. Spring Cloud与Docker微服务架构实战 PDF

    电子版百度云下载 链接: https://pan.baidu.com/s/115u011CJ8MZzJx_NqutyTQ 提取码: 关注公众号[GitHubCN]回复2019获取 本书的代码 共计70 ...

  9. Spring Cloud的核心成员、以及架构实现详细介绍

    什么是微服务 微服务的概念源于Martin Fowler所写的一篇文章“Microservices”. 微服务架构是一种架构模式,它提倡将单一应用程序划分成一组小的服务,服务之间互相协调.互相配合,为 ...

随机推荐

  1. Angular Routing

    Angular Routing v9.0.7 https://angular.io/start/start-routing

  2. SPC空投搅动市场,NGK算力持有者或成大赢家!

    要说公链3.0的顶级代表是谁,恐怕非NGK公链莫属.NGK公链自诞生以来,便在区块链市场掀起了一波又一波热潮,并不断地打造着属于自己独有的生态体系.从NGK公链到Baccarat,再到呼叫河马,几乎每 ...

  3. 1. VUE介绍

    今天开始系统学习vue前端框架. 我是有前端基础的, 刚工作那会, 哪里分那么清楚啊, 前后端我都得做, 所以, css, js, jquery, bootstrap都会点, 还系统学过ext, 哈哈 ...

  4. C++算法代码——Sumsets[uva10125]

    题目来自:http://218.5.5.242:9018/JudgeOnline/problem.php?id=1278 题目描述 给你一个整数的集合S(里面所有的整数均不相同),请你找出最大的 d, ...

  5. Django Admin 图片路径设置显示为图片(imageField显示方法设置)

    一  使用环境 开发系统: windows IDE: pycharm 数据库: msyql,navicat 编程语言: python3.7  (Windows x86-64 executable in ...

  6. JS输出为[object object]

    问题描述:在控制台打印时应输出对象,但是却输出[object object] 解决办法:先将数据转换为json格式,然后再转换为json对象 JSON.parse(JSON.stringify(use ...

  7. 微信的两种access_token总结,不能混淆

    大家需要弄清楚微信的网页授权token和公众号api调用授权token. 1.网页授权access_token 1.有效期:7200ms 2.微信网页授权是通过OAuth2.0机制实现的,在用户授权给 ...

  8. 由剑指offer引发的思考——对象中虚函数指针的大小

    先看一个简单的问题: 一.定义一个空的类型,对于其对象我们sizeof其大小,是1字节.因为我们定义一个类型,编译器必须为其分配空间,具体分配多少是编译器决定,vs是1字节,分配在栈区. 那,这一个字 ...

  9. SpringBoot(七):SpringBoot中如何使用过滤器(Filter)?

    方式一: 通过注解方式实现: 1.编写一个Servlet3的注解过滤器(和上一章Servlet相似) 贴代码: package com.example.springbootweb.filter; im ...

  10. 使用pycallgraph分析python代码函数调用流程以及框架

    技术背景 在上一篇博客中,我们介绍了使用量子计算模拟器ProjectQ去生成一个随机数,也介绍了随机数的应用场景等.但是有些时候我们希望可以打开这里面实现的原理,去看看在产生随机数的过程中经历了哪些运 ...