springcloud基本架构?

作者&投稿:茆贾 (若有异议请与网页底部的电邮联系)
~ SpringCloud微服务组件介绍

SpringCloud是一系列框架的有序集合(框架集),他利用SpringBoot的开发便利性巧妙的简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等。

SpringCloud利用SpringBoot的开发便利性巧妙地简化了分布式系统基础设施的开发,SpringCloud为开发人员提供了快速构建分布式系统的一些工具,包括配置管理、服务发现、断路器、路由、微代理、事件总线、全局锁、决策竞选、分布式会话等等,它们都可以用SpringBoot的开发风格做到一键启动和部署。

SpringCloud并没有重复制造轮子,它只是将目前各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过SpringBoot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、此空改易部署和易维护的分布式系统开发工具包

下面是SpringCloud的整体架构图:

注册中心可以说是微服务架构中的“通亏灶讯录”,他记录了服务和服务地址的映射关系。在分布式架构中,服务会注册到这里,当服务需要调用其他服务时,就在这里找到对应服务的地址,进行调用。

注册中心的主要作用

Ribbon是Netflix发布的一个负载均衡,有助于控制HTTP和TCP客户端行为。在SpringCloud中,Eureka一般配合Ribbon进行使用,Ribbon提供了客户端负载均衡的功能,Ribbon利用从Eureka中读取到的服务信息,在调用服务节点提供的服务时,会合理的进行负载。

在SpringCloud中可以将注册中心和Ribbon配合使用,Ribbon自动的从注册中心中获取服务提供者的列表信息,并基于内置的负载均衡算法,请求服务。

Ribbon原理

几种负载均衡策略:

Hystrix是Netflix开源的一款容错框架,包含常用的容错方法。在高并发访问下,系统所依赖的服务的稳定性对系统的影响非常大,依赖有很多不可控的因素,比如网络连接变慢,资源突然繁忙,暂时不可用,服务脱机等。Hystrix利用熔断、线程池隔离、信号量隔离、降级回退等方法来处理依赖隔离,使系统变得高可用。

Hystrix主要提供了以下几种容错方法:

SpringCloudGateway是Spring官方推出的服务网关的实现框架,相对于服务网关的概念有点类似于传统的反向代理服务器(如nginx),但反向代理一般都只是做业务无关的转发请求,而服务网关与服务的整合程度更高,可森判以看作也是整个服务体系的组成部分,通过过滤器等组件可以在网关中集成一些业务处理的操作(比如权限认证等)。

核心功能:

SpringCloudStream是一个用来为微服务应用构建消息驱动能力的框架。

特点:

屏蔽底层MQ实现细节,SpringCloudStream的API是统一的。如果从Kafka切到RocketMQ,可以直接修改配置。

与Spring生态整合更加方便。SpringCloudDataFlow的流计算都是基于SpringCloudStream;SpringCloudBus消息总线内部也是用的SpringCloudStream。

配置中心功能:

分布式链路追踪,就是将一次分布式请求还原成调用链路,进行日志记录,性能监控并将一次分布式请求的调用情况集中展示。比如各个服务节点上的耗时,请求具体到达哪台机器上、每个服务节点的请求状态等等。

分布式链路追踪方案:

SpringCloud简介

SpringCloud是基于SpringBoot基础之上开发的微服务框架,SpringCloud是一套目前非常完整的微服高搜务解决方案框架,其内容包含服务治理、注册中心、配置管理、断路器、智能贺含路由、微代理、控制总线、全局锁、分布式会话等。

SpringCloud包含众多的子项目

SpringCloudconfig分布式配置中心

SpringCloudnetflix核心组件:

Eureka:服务治理注册中心

Hystrix:服务保护框架

Ribbon:客户端负载均衡器

Feign:基于ribbon和hystrix的声明式服务调用组件

Zuul:网关组件,提供智能路由戚拍历、访问过滤等功能。

上海每特教育科技有限公司|苏州特每信息科技有限公司版权所有

SpringCloud中文翻译:

微服务框架之SpringCloud简介

在了解SpringCloud之前先了解一下微服务架构需要考量的核心关键点,如下图:

对于以上等核心关键点的处理,不需要我们重复造车轮,SpringCloud已经帮我们集成了,它使用SpringBoot风格将一些比较成熟的微服务框架组合起来,屏蔽掉了复杂的配置和实现原理,为快速构建微服务架构的应用提供了一套基础设施工具和开发支持。

SpringCloud所提供的核心功能包含:

SpringCloud架构图

SpringCloud子项目

SpringCloud旗下的子项目大致可以分为两类:

如下派槐禅:

1.SpringCloud与SpringBoot

SpringBoot可以说是微服务架构的核心技术之一。通过在SpringBoot应用中添加SpringMVC依赖,就可以快速实现基于REST架构的服务接口,并且可以提供对HTTP标准动作的支持。而且SpringBoot默认提供JackJson序列化支持,可以让服务接口输入、输出支持JSON等。因此,当使用SpringCloud进行微服务架构开发时,使用SpringBoot是一条必经之路。

2.SpringCloud与服务治理(Eureka)

服务治理是SpringCloud的核心,在实现上其提供了两个选择,即Consul和Netflix的Eureka。

Eureka提供了服务注册中心、服务发现客户端,以及注册服务的UI界面应用。

在Eureka的实现中,节点之间相互平等,有部分注册中心“挂掉”也不会对整个应用造成影响,即使集群只剩一个节点存活,也可以正常地治理服务。即使所有服务注册节点都宕机,Eureka客户端中所缓存的服务实例列表信息,也可让服务消费者能够正常工作,从而保障微服务之间互相调用的健壮性和应用的弹性。

3.SpringCloud与客户端负载均衡(Ribbon)

Ribbon默认与Eureak进行无缝整合,尘尘当客户端启动的时候,从Eureka服务器中获取一份服务注册列表并维护在本地,当服务消费者需明启要调用服务时,Ribbon就会根据负载均衡策略选择一个合适的服务提供者实例并进行访问。

SpringCloud通过集成Netflix的Feign项目,为开发者提供了声明式服务调用,从而简化了微服务之间的调用处理方式。并且默认Feign项目集成了Ribbon,使得声明式调用也支持客户端负载均衡功能。

4.SpringCloud与微服务容错、降级(Hystrix)

为了给微服务架构提供更大的弹性,在SpringCloud中,通过集成Netflix下子项目Hystrix,通过所提供的@HystrixCommand注解可以轻松为我们所开发的微服务提供容错、回退、降级等功能。此外,Hystrix也默认集成到Feign子项目中。

Hystrix是根据“断路器”模式而创建。当Hystrix监控到某服务单元发生故障之后,就会进入服务熔断处理,并向调用方返回一个符合预期的服务降级处理(fallback),而不是长时间的等待或者抛出调用异常,从而保障服务调用方的线程不会被长时间、不必要地占用,避免故障在应用中的蔓延造成的雪崩效应。

而Hystrix的仪表盘项目(Dashboard)可以监控各个服务调用所消耗的时间、请求数、成功率等,通过这种近乎实时的监控和告警,可以及时发现系统中潜在问题并进行处理。

5.SpringCloud与服务网关(Zuul)

SpringCloud通过集成Netflix中的Zuul实现API服务网关功能,提供对请求的路由和过滤两个功能

路由功能负责将外部请求转发到具体的微服务实例上,是实现外部访问统一入口的基础。

过滤器功能则负责对请求的处理过程进行干预,是实现请求校验、服务聚合等功能的基础。

通过Zuul,可以将细粒度的服务组合起来提供一个粗粒度的服务,所有请求都导入一个统一的入口,对外整个服务只需要暴露一个API接口,屏蔽了服务端的实现细节。通过Zuul的反向代理功能,可以实现路由寻址,将请求转发到后端的粗粒度服务上,并做一些通用的逻辑处理。此外,Zuul默认会与Eureka服务器进行整合,自动从Eureka服务器中获取所有注册的服务并进行路由映射,实现API服务网关自动配置。

6.SpringCloud与消息中间件(Stream)

SpringCloud为简化基于消息的开发,提供了Stream子项目,通过建立消息应用抽象层,构建了消息收发、分组消费和消息分片等功能处理,将业务应用中的消息收发与具体消息中间件进行解耦,使微服务应用开发中可以非常方便地与Kafka和RabbitMQ等消息中间件进行集成。

SpringCloudBus基于Stream进行扩展,可以作为微服务之间的事件、消息总线,用于服务集群中状态变化的传播。

比如SpringCloudConfig借助Bus,可以实现配置的动态刷新处理。

7.SpringCloud与分布式配置中心(Config)

针对微服务架构下的配置文件管理需求,SpringCloud提供了一个Config子项目。SpringCloudConfig具有中心化、版本控制、支持动态更新和语言独立等特性。

在Config子项目中将微服务应用分为两种角色:配置服务器(ConfigServer)和配置客户端(ConfigClient)。使用配置服务器集中地管理所有配置属性文件,配置服务中心可以将配置属性文件存储到Git、SVN等具有版本管理仓库中,也可以存放在文件系统中。默认采用Git的方式进行存储,因此可以很容易地对配置文件进行修改,并实现版本控制。

8.SpringCloud与微服务链路追踪(Sleuth)

SpringCloud中的Sleuth子项目为开发者提供了微服务之间调用的链路追踪。

Sleuth核心思想就是通过一个全局的ID将分布在各微服务服务节点上的请求处理串联起来,还原了调用关系,并借助数据埋点,实现对微服务调用链路上的性能数据的采集。

因此,通过Sleuth可以很清楚地了解到一个用户请求经过了哪些服务、每个服务处理花费了多长时间,从而可以对用户的请求进行分析。此外,通过将采集的数据发送给Zipkin进行存储、统计和分析,从而可以实现可视化的分析和展示,帮助开发者对微服务实施优化处理。

9.SpringCloud与微服务安全(Security)

SpringCloudSecurity为我们提供了一个认证和鉴权的安全框架,实现了资源授权、令牌管理等功能,同时结合Zuul可以将认证信息在微服务调用过程中直接传递,简化了我们进行安全管控的开发。

SpringCloudSecurity默认支持OAuth2.0认证协议,因此单点登录也可以非常容易实现,并且OAuth2.0所生成的令牌可以使用JWT的方式,进一步简化了微服务中的安全管理。

10.SpringCloud的其他子项目




SpringCloudEureka源码分析——Client端
5. 初始化InstanceInfo,根据配置设置InstanceInfo的属性。6. 创建ApplicationInfoManager,封装了注册到eureka的应用信息,包括实例信息、参数配置和实例状态等。7. EurekaAutoServiceRegistration类通过SmartLifecycle触发注册动作,发布实例注册事件。8. EurekaClient (CloudEurekaClient) 在构造过程中完成客户端注册...

如何使用Spring Cloud
使用Spring Cloud构建实际的微服务架构。基本概念:使用Docker进行集成测试 混合持久化 微服务架构 服务发现 API网关 Docker 使用Docker对每一个服务进行构建和部署。使用Docker Compose在一个开发机上进行端到端的集成测试。混合持久化 混合持久化其实就是说使用多种数据库来存储。不同的微服务实例都会使用它们...

Spring Cloud入门系列-前期准备
在写这一系列的文章之前,觉得很有必要阐述一下什么是Spring Cloud。不像Spring(Spring Framework),大体上能够理解为它是一个管理bean的容器。也不想SpringBoot,可以理解为它是加强版的Spring,集成了SSM和其它一些框架,并且大量支持和推荐注解开发。但是对于Spring Cloud,它是一个微服务架构的框架,...

Spring Cloud 常用组件梳理
整个支付订单的业务流程结束 一、Spring cloud组件 1、Spring Cloud核心组件:Eureka 注册中心 2、Spring Cloud核心组件:Feign  调用 3、Spring Cloud核心组件:Ribbon 负载均衡 4、Spring Cloud核心组件:Hystrix 熔断器 错误降级 防止雪崩 5、Spring Cloud核心组件:Zuul 网关 各端请求 统一处理...

Spring cloud netfix 新手教程(2021版)| 第一篇 注册中心Eureka Server...
为了开始构建基于Spring Cloud Netflix的项目,首先需要创建一个Maven父工程。我们采用的Spring Boot版本为2.7,Spring Cloud版本为2021,这是两者之间的对应关系。在父工程的配置文件中,确保所有子模块都能继承该工程的版本,以保持一致性和兼容性。接下来,针对创建Eureka Server子模块,首先编写其Maven...

Spring Cloud
本文中我们主要介绍微服务开发框架——Spring Cloud。尽管Spring Cloud带有"Cloud"的字样,但它并不是云计算解决方案,而是Spring Boot的基础上构建的,用于快速构建分布式系统的通用模式的工具集。Spring Cloud有以下特点:由上图可知,Spring Cloud是以 英文单词+SR+数字 的形式命名版本号的。那么英文...

32、Spring Cloud 服务跟踪总结
上两篇讲解了zipkin,这篇总结一下。其实Spring Cloud实施分布式跟踪解决方案所用的技术不仅仅是zipkin。在spring官网:http:\/\/spring.io\/projects\/spring-cloud-sleuth 有这么一段话:翻译过来:Spring Cloud Sleuth是Spring Cloud实施分布式跟踪解决方案,大量借用Dapper,Zipkin和HTrace。 对于大多数用户来...

SpringCloud整体构架设计介绍
SpringClound整体核心架构只有一点:Rest服务,也就是说在整个SpringCloud配置过程之中,所有的配置处理都是围绕着Rest完成的,在这个Rest处理之中,一定要有两个端:服务的提供者(Provider)、服务的消费者(Consumer)。SpringClound整体核心架构只有一点:Rest服务,也就是说在整个SpringCloud配置过程之中...

如何学习spring cloud
一、Spring cloud是什么?相信大家在看到cloud这个单词时首先想到的便是“云”或“云计算”,其实这里并不是这个意思,Spring cloud是以Spring boot为基础的快速构建分布式系统的工具集。它整合了各种各样的工具,以方便我们开发。由于它是在Spring boot的基础上构建的,因此Spring cloud拥有Spring boot所...

如何使用Spring Cloud
Spring Cloud项目的既定目标在于为Spring开发人员提供一整套易于使用的工具集,从而保证其轻松构建起自己需要的分布式系统方案。为了实现这一目标,Spring Cloud以Netflix OSS堆栈为基础将大量实现堆栈加以整合并打包。这些堆栈而后可以通过大家所熟知的各类基于注释的配置工具、Java配置工具以及基于模板的编程工具...

澜沧拉祜族自治县15114529445: spring cloud,基于什么实现 -
帛灵银丹: Spring Cloud的子项目,大致可分成两类,一类是对现有成熟框架”Spring Boot化”的封装和抽象,也是数量最多的项目;第二类是开发了一部分分布式系统的基础设施的实现,如Spring Cloud Stream扮演的就是kafka, ActiveMQ这样的角色....

澜沧拉祜族自治县15114529445: 如何使用Spring Cloud -
帛灵银丹: Spring Cloud项目的既定目标在于为Spring开发人员提供一整套易于使用的工具集,从而保证其轻松构建起自己需要的分布式系统方案.为了实现这一目标,Spring Cloud以Netflix OSS堆栈为基础将大量实现堆栈加以整合并打包.这些堆栈而后可以通过大家...

澜沧拉祜族自治县15114529445: 如何使用Spring Boot/Spring Cloud 实现微服务应用 -
帛灵银丹: Spring Cloud介绍 Spring Cloud是一个基于Spring Boot实现的云应用开发工具,它为基于JVM的云应用开发中的配置管理、服务发现、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态管理等操作提供了一种简...

澜沧拉祜族自治县15114529445: 西天取经,学 Spring - Cloud,到底什么是 Spring - Cloud -
帛灵银丹: Spring Cloud 是Pivotal提 供的用于简化分布式系统构建的工具集.Spring Cloud引入了云平台连接器(Cloud Connector)和服务连接器(Service Connector)的概念.云平台连接器是一个接口,需要由云平台提供者进行实现,以便库中的其他模块可以与该云平台协同工作.

澜沧拉祜族自治县15114529445: spring boot和Spring Cloud有什么区别? -
帛灵银丹: spring boot 下个项目会用,作为app的服务端框架,spring boot 我理解就是把spring spring mvc spring data jpa 等等的一些常用的常用的基础框架组合起来,提供默认的配置,然后提供可插拔的设计,就是各种starter,来方便开发者使用这一系...

澜沧拉祜族自治县15114529445: spring cloud环境怎么搭建 -
帛灵银丹: 1 创建Spring一个简单的Java项目 首先在JAVA项目下创建一个lib文件夹把需要的Spring需要的jar包:Commons-logging.jar Spring.jar包放入一般都在项目文件夹中,并至暖瓶状态. 这两个包分别位于: spring-framework-2.5.6\dist\spring.jar sprin.

澜沧拉祜族自治县15114529445: 什么是微服务架构? -
帛灵银丹: 试读结束,如需阅读或下载,请点击购买> 原发布者:和合文化 微服务架构技术交流大庆金桥信息技术工程有限公司2018年7月24日目录一、二、微服务架构模式SpringCloud三、四、五、SpringBoot微服务平台简介微服务平台示例单体架构(...

澜沧拉祜族自治县15114529445: Spring boot与Spring cloud 是什么关系 -
帛灵银丹: spring Cloud是一个基于Spring Boot实现的云应用开发工具,它为基于JVM的云应用开发中的配置管理、服务发现、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态管理等操作提供了一种简单的开发方式.spring boot 的优点是可以快速启动,快速构建应用程序,而不需要太多的配置文件.spring cloud 是分布式开发的解决方案,基于spring boot,在spring boot做较少的配置,便可成为 spring cloud 中的一个微服务

澜沧拉祜族自治县15114529445: 如何在Kubernetes上进行微服务部署 -
帛灵银丹: 使用Rancher来运行Kubernetes有很多优势.大多数情况下能使用户和IT团队部署和管理工作更加方便.Rancher自动在Kubernetes后端实现etcd 的HA,并且将所需要的服务部署到此环境下的任何主机中.在设置访问控制,可以轻易连接到现有...

澜沧拉祜族自治县15114529445: Spring是什么 -
帛灵银丹: Spring 是一个开源框架,是为了解决企业应用程序开发复杂性而创建的.框架的主要优势之一就是其分层架构,分层架构允许您选择使用哪一个组件,同时为 J2EE 应用程序开发提供集成的框架. 组成 Spring 框架的每个模块(或组件)都可以...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网