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

2024-04-02 16:38
文章标签 java 入门 spring cloud 3w

本文主要是介绍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

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

Spring Cloud Data Flow

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

提供了用于为流和批处理数据管道创建复杂拓扑的工具。数据管道包含使用Spring Cloud Stream或Spring 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应用程序提供集成。

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

参考

  • Spring Cloud官网
  • 从 Spring Cloud 开始,聊聊微服务架构实践之路
  • 苏宁数据中台基于Spring Cloud微服务架构实践
  • Spring Cloud简单介绍
  • 拜托!面试请不要再问我Spring Cloud底层原理
  • 冒着挂科的风险也要给你们看的 Spring Cloud 入门总结
  • 请问哪位大神比较过spring cloud和dubbo,各自的优缺点是什么?
  • 微服务Dubbo与Spring Cloud架构对比

这篇关于3W法(what,why,how)入门 Spring Cloud的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/870505

相关文章

Java实现字节字符转bcd编码

《Java实现字节字符转bcd编码》BCD是一种将十进制数字编码为二进制的表示方式,常用于数字显示和存储,本文将介绍如何在Java中实现字节字符转BCD码的过程,需要的小伙伴可以了解下... 目录前言BCD码是什么Java实现字节转bcd编码方法补充总结前言BCD码(Binary-Coded Decima

SpringBoot全局域名替换的实现

《SpringBoot全局域名替换的实现》本文主要介绍了SpringBoot全局域名替换的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录 项目结构⚙️ 配置文件application.yml️ 配置类AppProperties.Ja

Java使用Javassist动态生成HelloWorld类

《Java使用Javassist动态生成HelloWorld类》Javassist是一个非常强大的字节码操作和定义库,它允许开发者在运行时创建新的类或者修改现有的类,本文将简单介绍如何使用Javass... 目录1. Javassist简介2. 环境准备3. 动态生成HelloWorld类3.1 创建CtC

JavaScript中的高级调试方法全攻略指南

《JavaScript中的高级调试方法全攻略指南》什么是高级JavaScript调试技巧,它比console.log有何优势,如何使用断点调试定位问题,通过本文,我们将深入解答这些问题,带您从理论到实... 目录观点与案例结合观点1观点2观点3观点4观点5高级调试技巧详解实战案例断点调试:定位变量错误性能分

Java实现将HTML文件与字符串转换为图片

《Java实现将HTML文件与字符串转换为图片》在Java开发中,我们经常会遇到将HTML内容转换为图片的需求,本文小编就来和大家详细讲讲如何使用FreeSpire.DocforJava库来实现这一功... 目录前言核心实现:html 转图片完整代码场景 1:转换本地 HTML 文件为图片场景 2:转换 H

Java使用jar命令配置服务器端口的完整指南

《Java使用jar命令配置服务器端口的完整指南》本文将详细介绍如何使用java-jar命令启动应用,并重点讲解如何配置服务器端口,同时提供一个实用的Web工具来简化这一过程,希望对大家有所帮助... 目录1. Java Jar文件简介1.1 什么是Jar文件1.2 创建可执行Jar文件2. 使用java

SpringBoot实现不同接口指定上传文件大小的具体步骤

《SpringBoot实现不同接口指定上传文件大小的具体步骤》:本文主要介绍在SpringBoot中通过自定义注解、AOP拦截和配置文件实现不同接口上传文件大小限制的方法,强调需设置全局阈值远大于... 目录一  springboot实现不同接口指定文件大小1.1 思路说明1.2 工程启动说明二 具体实施2

Java实现在Word文档中添加文本水印和图片水印的操作指南

《Java实现在Word文档中添加文本水印和图片水印的操作指南》在当今数字时代,文档的自动化处理与安全防护变得尤为重要,无论是为了保护版权、推广品牌,还是为了在文档中加入特定的标识,为Word文档添加... 目录引言Spire.Doc for Java:高效Word文档处理的利器代码实战:使用Java为Wo

SpringBoot日志级别与日志分组详解

《SpringBoot日志级别与日志分组详解》文章介绍了日志级别(ALL至OFF)及其作用,说明SpringBoot默认日志级别为INFO,可通过application.properties调整全局或... 目录日志级别1、级别内容2、调整日志级别调整默认日志级别调整指定类的日志级别项目开发过程中,利用日志

Java中的抽象类与abstract 关键字使用详解

《Java中的抽象类与abstract关键字使用详解》:本文主要介绍Java中的抽象类与abstract关键字使用详解,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧... 目录一、抽象类的概念二、使用 abstract2.1 修饰类 => 抽象类2.2 修饰方法 => 抽象方法,没有