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

初学Spring Cloud,用3W法—what,why,how来学习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 TrainBoot Version
Hoxton2.2.x
Greenwich2.1.x
Finchley2.0.x
Edgware1.5.x
Dalston1.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 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应用程序提供集成。

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

参考

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Cloud Alibaba Gateway 是基于 Spring Cloud Gateway 实现的路由和服务代理的网关服务。它提供了一组强大的功能,如路由转发、限流、熔断、安全认证等,可以用于构建高性能、高可用的微服务应用。 下面是整合 Spring Cloud Alibaba Gateway 的步骤: 1. 添加依赖 ``` <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-alibaba-gateway</artifactId> <version>2.2.5.RELEASE</version> </dependency> ``` 2. 配置路由 在 application.yml 文件中配置路由规则,例如: ``` spring: cloud: gateway: routes: - id: user-service uri: lb://user-service predicates: - Path=/api/users/** ``` 上面的配置表示将 /api/users/** 的请求转发到名称为 user-service 的服务上。 3. 配置限流和熔断 Spring Cloud Alibaba Gateway 提供了限流和熔断的功能,可以通过配置实现。例如,下面是一个基于 QPS 的限流配置: ``` spring: cloud: gateway: routes: - id: user-service uri: lb://user-service predicates: - Path=/api/users/** filters: - name: RequestRateLimiter args: key-resolver: "#{@userKeyResolver}" redis-rate-limiter.replenishRate: 1 redis-rate-limiter.burstCapacity: 2 ``` 上面的配置表示对 /api/users/** 的请求进行 QPS 限流,每秒最多允许 1 个请求,并且最大容量为 2 个请求。 4. 配置安全认证 Spring Cloud Alibaba Gateway 支持基于 JWT 的安全认证。可以通过配置实现。例如: ``` spring: cloud: gateway: routes: - id: user-service uri: lb://user-service predicates: - Path=/api/users/** filters: - name: JwtAuthFilter args: publicKey: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5G9ykwTSFvRQm+sP8q6F... ``` 上面的配置表示对 /api/users/** 的请求进行 JWT 认证,公钥为给定的字符串。 以上就是整合 Spring Cloud Alibaba Gateway 的基本步骤,你可以根据自己的需求进行进一步的配置和定制化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值