3W法(what,why,how)入门 Spring Cloud

初学Spring Cloud,用3W法—what,why,how来学习Spring Cloud,文中引用部分均来自文末的链接处。

先上图,后面慢慢道来:

Spring Cloud 学习

WHAT --- 定义

什么是Spring Cloud?

Spring Cloud provides tools for developers to quickly build some of the common patterns in distributed systems (e.g. configuration management, service discovery, circuit breakers, intelligent routing, micro-proxy, control bus, one-time tokens, global locks, leadership election, distributed sessions, cluster state). Coordination of distributed systems leads to boiler plate patterns, and using Spring Cloud developers can quickly stand up services and applications that implement those patterns. They will work well in any distributed environment, including the developer’s own laptop, bare metal data centres, and managed platforms such as Cloud Foundry. ---摘自官网

Spring Cloud为开发人员提供了工具,以快速构建分布式系统中的某些常见模式(例如:配置管理,服务发现,断路器,智能路由,微代理,控制总线,一次性令牌,全局锁,领导选举,分布式会话,群集状态)。 分布式系统的协调导致了样板模式, 使用Spring Cloud开发人员可以快速地支持实现这些模式的服务和应用程序。 它们可以在任何分布式环境中正常工作,包括开发人员自己的笔记本电脑,裸机数据中心以及Cloud Foundry等托管平台。

用更便于理解的方式说:

Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。Spring并没有重复制造轮子,它只是将目前各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。

Spring Cloud的版本有哪些?

| Release Train | Boot Version |

| ------------- | ------------ |

| Hoxton | 2.2.x |

| Greenwich | 2.1.x |

| Finchley | 2.0.x |

| Edgware | 1.5.x |

| Dalston | 1.5.x |

Spring Cloud版本名称是按字母顺序排列的(因此您可以按时间顺序对它们进行排序),带有伦敦地铁站的名称(“ Angel”是第一个发行版,“ Brixton”是第二个发行版)

2017年7月 ,布里克斯顿(Brixton)和天使(Angel)版本已经被废弃,卡姆登(Camden)也已被废弃;

达尔斯顿(Dalston)在2018年12月废弃,埃奇韦尔(Edgware)将跟随Spring Boot 1.5.x的版本周期

Dalston和Edgware发行版本建立在Spring Boot 1.5.x上,并且不能与Spring Boot 2.0.x一起使用。

Greenwich可以构建并与Spring Boot 2.1.x一起使用,并且不能与Spring Boot 1.5.x一起使用。

截止2019年12月底,Spring Cloud最新版本为Hoxton,Greenwich 为SR4、Finchley 为SR4。

WHY --- 特点

Spring Cloud 具有什么特点?

  • Distributed/versioned configuration --- 分布式/版本化配置

  • Service registration and discovery ---服务注册和发现

  • Routing ---路由

  • Service-to-service calls ---服务到服务的调用

  • Load balancing ---负载均衡

  • Circuit Breakers ---断路器

  • Leadership election and cluster state ---领导选举和集群状态

  • Distributed messaging ---分布式消息传递

具体详细介绍在使用中进行说明。

为什么要用 Spring Cloud?

  • Spring Cloud由众多子项目组成,满足了构建微服务所需的所有解决方案;

  • 有强大的 Spring 社区、Netflix 等公司支持,并且开源社区贡献非常活跃;

  • 基于 Spring Boot,具有简单配置、快速开发、轻松部署、方便测试的特点。

Spring Cloud 与 Dubbo 的区别?

  • Spring Cloud 使用HTTP协议的REST API;Dubbo使用RPC通讯协议;

  • Dubbo支持各种通信协议,而且消费方和服务方使用长链接方式交互,通信速度上略胜Spring Cloud,如果对于系统的响应时间有严格要求,长链接更合适;

  • Dubbo服务依赖略重,需要有完善的版本管理机制,但是程序入侵少。而Spring Cloud通过Json交互,省略了版本管理的问题,但是具体字段含义需要统一管理,自身Rest API方式交互,为跨平台调用奠定了基础;

  • 企业需要根据自身的研发水平和所处阶段选择合适的架构来解决业务问题,不管是Dubbo还是Spring Cloud都是实现微服务有效的工具。

HOW --- 使用

架构图

spring cloud.png

Spring Cloud Config

Spring Cloud Config为分布式系统中的外部化配置提供服务器和客户端支持。使用Config Server,您可以集中管理所有环境中应用程序的外部属性。

Spring Cloud Config Server功能:

  • HTTP,用于外部配置的基于资源的API(名称-值对,或等效的YAML内容)

  • 加密和解密属性值(对称或不对称)

  • 可轻松地使用Spring Boot应用程序嵌入 @EnableConfigServer

Config Client功能(用于Spring应用程序):

  • 绑定到Config Server并Environment使用远程属性源初始化Spring

  • 加密和解密属性值(对称或不对称)

Spring Cloud Netflix

Spring Cloud Netflix通过自动配置并绑定到Spring Environment和其他Spring编程模型习惯用法,为Spring Boot应用程序提供Netflix OSS集成。提供的模式包括服务发现(Eureka),断路器(Hystrix),智能路由(Zuul)和客户端负载平衡(Ribbon)。

Eureka是微服务架构中的注册中心,负责服务的注册与发现。

  • Eureka Client:负责将这个服务的信息注册到Eureka Server中;

  • Eureka Server:注册中心,里面有一个注册表,保存了各个服务所在的机器和端口号;

Feign 可帮助我们更加便捷、优雅地调用HTTP API,基于Feign的动态代理机制,可根据注解和选择的机器,拼接请求URL地址,发起请求。

Hystrix 通过添加等待时间容限和容错逻辑来帮助控制分布式服务之间的交互,通过隔离服务之间的访问点,停止服务之间的级联故障并提供后备选项来实现此目的,所有这些都可以提高系统的整体弹性。

  • Hystrix之熔断:每当调用时间超过指定时间时(默认为1000ms),断路器将会中断对这个方法的调用;

  • Hystrix之降级:为了更好的用户体验,当一个方法调用异常时,通过执行另一种代码逻辑来给用户友好的回复;

Zuul 是从设备和 web 站点到 Netflix 流应用后端的所有请求的前门。作为边界服务应用,Zuul 是为了实现动态路由、监视、弹性和安全性而构建的。

Ribbon 是一个客户端/进程内负载均衡器,运行在消费者端【Nginx 是接收了所有的请求进行负载均衡的】。服务间发起请求的时候,基于Ribbon做负载均衡,从一个服务的多台机器中选择一台。

Spring Cloud Bus

将轻量级消息代理程序链接到分布式系统的节点。然后可以将其用于广播状态更改(例如配置更改)或其他管理指令。当前唯一的实现是使用AMQP代理作为传输,但是其他传输的路线图上仍具有相同的基本功能集(还有一些取决于传输)。

Spring Cloud Consul

通过自动配置并绑定到Spring Environment和其他Spring编程模型习惯用法,为Spring Boot应用程序提供Consul集成。通过一些简单的注释,您可以快速启用和配置应用程序内部的通用模式,并使用Hashicorp的Consul构建大型分布式系统。提供的模式包括服务发现,分布式配置和控制总线。

Spring Cloud Security

提供了一组原语来构建安全的应用程序和服务。可以在外部(或中央)进行大量配置的声明性模型很适合于通常使用中央身份管理服务的大型协作远程组件系统的实施。在像Cloud Foundry这样的服务平台中使用它也非常容易。在Spring Boot和Spring Security OAuth2的基础上,我们可以快速创建实现常见模式(如单点登录、令牌中继和令牌交换)的系统。

Spring Cloud Sleuth

DapperZipkin和HTrace 大量借鉴了Spring Cloud的分布式跟踪解决方案。对于大多数用户而言,Sleuth应该是不可见的,并且您与外部系统的所有交互都应自动进行检测。您可以简单地在日志中捕获数据,也可以将其发送到远程收集器服务。

Spring Cloud Data Flow

用于Cloud Foundry和Kubernetes的基于微服务的流式处理和批处理数据处理。

提供了用于为流和批处理数据管道创建复杂拓扑的工具。数据管道包含使用Spring Cloud StreamSpring Cloud Task微服务框架构建的Spring Boot应用程序。

Spring Cloud Stream

Spring Cloud Stream是一个框架,用于构建与共享消息传递系统连接的高度可扩展的事件驱动型微服务。

该框架提供了一个灵活的编程模型,该模型建立在已经建立并熟悉的Spring习惯用法和最佳实践的基础上,包括对持久性pub / sub语义,使用者组和有状态分区的支持。

Spring Cloud Zookeeper

通过自动配置并绑定到Spring Environment和其他Spring编程模型习惯用法,为Spring Boot应用程序提供了Apache Zookeeper集成。通过一些简单的注释,您可以快速启用和配置应用程序内的通用模式,并使用Zookeeper构建大型分布式系统。提供的模式包括服务发现和分布式配置。

Spring Cloud Contract

Spring Cloud Contract是一个总括项目解决方案,可帮助用户成功实施“消费者驱动合同”方法。

Spring Cloud Gateway

该项目提供了一个用于在Spring MVC之上构建API网关的库。Spring Cloud Gateway旨在提供一种简单而有效的方法来路由到API,并为它们提供跨领域的关注,例如:安全性,监视/指标和弹性。

Spring Cloud OpenFeign

Spring Cloud OpenFeign通过自动配置并绑定到Spring Environment和其他Spring编程模型惯用法为Spring Boot应用程序提供集成。

注:上述展示部分项目,如需查看更多项目可查看官网。

参考

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

推荐阅读更多精彩内容

  • 微服务架构模式的核心在于如何识别服务的边界,设计出合理的微服务。但如果要将微服务架构运用到生产项目上,并且能够发挥...
    java菜阅读 2,911评论 0 6
  • 前言 现在研发的项目启动今已近一年之久,期间从项目属性、人员规模、系统定位等方面都发生了很大的变化,而且是越变越好...
    孙振强阅读 12,221评论 1 58
  • 转载 Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系...
    Snail127阅读 1,465评论 0 3
  • 匆匆来到魔都来到华师大参加赴泰孔院志愿者教师培训。第一天我们主要熟悉了一下校园和培训的内容。对华师大也有了更深的了...
    彼岸维和阅读 155评论 0 0
  • 2019年6月6日,参与打卡第27天。今天我读的是《廿一世纪初的前言后语》,第三章对学生家长研修班讲话。保持文化的...
    郭玉芝河南商丘阅读 226评论 0 2