Spring Cloud笔记(1):Spring Cloud是什么

网上介绍Spring Cloud的文章已经是汗牛充栋了,从入门到精通,各种教程应有尽有。所以这个系列大概率也不会写出什么新的东西,只是作为我在深入学习微服务以及Spring Cloud的过程中的一些理解和感悟吧。

Spring Cloud到底是一个什么东西了?估计很多人的印象都是Spring Cloud就是应用于微服务场景下的一个的应用框架(framework),类似于Spring。这个印象不能算错,如果只是简单应用的话,把它当成一个框架也未尝不可,照着文档加上对应的配置和注解,它就能很好的工作了,和Spring Boot的那些starter也没什么不同嘛。但如果要深入理解,我们还需要更进一步。

按照官网上对它的定义,Spring Cloud包括了一系列构建一个良好的分布式系统所应该遵循的一些最佳实践和模式,这些模式包括统一配置管理,服务发现,熔断 / 限流,智能路由等等。所以它并不是某一个具体的框架,只是一些规范或模式集合。同时,Spring Cloud也提供了用于实现上述模式的各种开箱即用的工具,便于用户直接进行集成,这些工具才更加类似于我们通常意义上的应用框架。Spring Cloud就像一个大的工具箱,定义了每个工具的大小,形状和位置,同时还贴心的预置了一套已经打磨好的工具在里面,适用于大部分的工作场景。但是如果用户觉得其中哪个工具不好用,也完全可以根据这个工具的特征,自己再搞一个新的工具来替换。

那么Spring Cloud提供了哪些工具呢?我们打开Spring Cloud的官网可以看到一个长长的列表,多到一页都还不能显示完:

我一开始看到这的时候是有些崩溃的,这么多东西光看文档就要看到天荒地老啊。好在大致浏览一遍之后,我发现这么多工具里面,很多的作用都是类似的,只是提供了在不同环境下的不同选择而已。比如一个工具箱里面的螺丝刀肯定不止一种吧,不同尺寸的螺丝得用到不同的螺丝刀。但螺丝刀的用法我们只需要学一次就行了,尺寸大小什么的并不会改变螺丝刀的作用原理。

Spring Cloud提供的这些工具里面大致可以分成三类:

  • Spring和云服务提供商合作的产物:既然叫Spring Cloud,那天然就和云服务脱不了干系。Spring Cloud算是现在构建微服务应用的主流标准,加上Spring社区在Java领域的影响力,这些都吸引了不少云服务提供商抛出合作的橄榄枝,Spring也乐见于此,开源组织也是要恰饭的。这些类型的项目很容易辨认,命名基本都是Spring Cloud XXXX,XXXX是某个提供商或者平台名称,比如:Spring Cloud Azure,Spring Cloud GCP(Google Cloud Platform),Spring Cloud Alibaba等等。这类的项目就是一个大杂烩,把云服务商提供的各类服务(存储,缓存,消息等等)统统都打包组合到一起,提供符合Spring Cloud规范的开箱即用的接口。所以,这一类的项目如果你的项目碰巧需要运行到对应的云服务提供商的平台上,才有深入了解下去的必要,否则大可跳过不管。Spring Cloud Alibaba比较例外,阿里除了塞进去一些自己的商业服务以外(OSS等等),也试图通过这个项目扩大自己阵营的一些开源项目的影响力,包括Nacos,Sentinel,Dubbo(讽刺的是Dubbo曾经算是Spring Cloud最大的对手),因此替换了很多Spring Cloud默认的实现,姑且不论孰优孰劣,开发者多一个选择总不是坏事。

  • 应用套件:工具太多,Spring也知道大家用起来麻烦呀,所以预先把一些最常用的工具进行了组合和集成,形成一些开箱即用的应用套件。大多数应用场景下只需要简单的参数配置,加上必要的注解就可以良好工作了。比如:Spring Cloud Netflix,Spring Cloud Consul,Spring Cloud Zookeeper等(Spring Cloud Alibaba其实也可以算在这一类里面)。目前网络上针对Spring Cloud的教程或者说明大多都是指的Spring Cloud Netflix,它是Spring Cloud最初的实现(另一种意义上来说也是最正统的实现吧), 用到了一系列Netflix主导的开源库和框架(Netflix OSS)。后面随着Netflix OSS中的一些框架不再维护了,Spring通过对其中的部分组件进行替换才又形成了其它的一些套件。

  • 可选特性:分布式系统有大有小,复杂程度也各不相同,怎么才能快速构建出适合自身应用场景的系统框架呢?Spring Cloud给出的答案还是组合。前面所说的应用套件可以说是系统的核心骨架,覆盖了绝大部分分布式系统都需要解决或者应该解决的问题。而没有覆盖到的差异化场景就可以通过组合不同的可选特性来实现。比如Spring Cloud Stream提供了消息中间件的服务,可以简化大量异步场景的处理。Spring Cloud Sleuth可以提供链路跟踪的特性,从而满足在复杂的微服务架构下的错误定位和性能监控的需求。

其实Spring Cloud的这一系列组件正好体现了分而治之这一简单的原则,这也是微服务架构的核心思想。通过对组件的搭配和组合,可以适应各种规模的应用系统以及一些特殊的差异化场景。而提供默认的,开箱即用的组合套件可以快速应用于大多数的普通应用场景,这样大大降低了学习曲线,最大程度保持了灵活性和易用性的平衡。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,029评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,395评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,570评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,535评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,650评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,850评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,006评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,747评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,207评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,536评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,683评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,342评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,964评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,772评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,004评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,401评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,566评论 2 349

推荐阅读更多精彩内容