Spring Cloud简介

Spring Cloud是java语言的微服务框架,依赖于SpringBoot,有快速开发、持续交付和容易部署等特点。Spring Cloud的首要目标就是通过一系列开发组件和框架,帮助开发者快速搭建一个分布式的微服务系统。

微服务具有的特点

  • 1、按照具体业务来划分服务,单个服务代码量小,业务单一,易于维护;
  • 2、每个微服务都有自己独立的基础组件,例如数据库、缓存等,且运行在独立的进程中;
  • 3、每个微服务之间的通信都是通过HTTP协议或者消息组件,且具有容错能力;
  • 4、微服务有一套服务治理的解决方案,服务之间不耦合,可以随时加入或剔除服务;
  • 5、单个微服务能能够集群化部署,并且有负载均衡的能力;
  • 6、整个微服务系统应该有一个完整的安全机制,包括用户验证、权限验证、资源保护等;
  • 7、整个微服务系统有链路追踪能力;
  • 8、有一套完整的实施日志系统;

微服务的主要功能体现

1、服务的注册与发现

微服务系统是由很多个单一职责的服务单元组成。由于微服务系统的服务粒度较小,服务数量众多,服务之间相互依赖成网状,所以微服务系统需要服务自注册中心来统一管理微服务实例,方便查看每一个微服务实例的健康状态。
服务注册是指向服务注册中心注册一个实例,服务提供者将自己的服务信息告知服务注册中心。服务发现是指当服务消费者需要消费另外一个服务时,服务注册中心能够告知服务消费者它所要消费服务的实例信息。通常情况下,一个服务既是服务提供者,也是服务消费者。
服务注册中心会提供服务健康检查方案,检查被注册的服务是否可用。

2、服务的负载均衡

微服务架构中,服务之间相互调用一般是通过HTTP通信协议来实现的。网络具有不可靠性,为了保证服务的高可用,服务单元一般是集群化部署的。
服务注册中心拥有每个服务的应用名和IP地址等信息,同时每个服务也会获取所有服务注册列表信息。服务消费者集成负载均衡组件,该组件会向服务消费者获取服务注册列表信息,并每隔一段时间刷新获取该列表。当服务消费者消费服务时,负载均衡组件获取服务提供者所有的实例注册信息,并通过一定的负载均衡策略,选择一个服务提供者的实例,并向该实例进行服务消费,这样就实现了负载均衡。

3、服务的容错

微服务中服务往往非常多,服务张子健的相互依赖性也是错综复杂的,一个网络请求通常需要调用多个服务才能完成。如果一个服务不可用,会影响到依赖这个不可用服务的其他服务。为了解决分布式系统的雪崩效应,分布式系统引进了熔断器机制。当一个服务的处理用户请求的失败次数在一定时间内小于设定的阈值,熔断器处于关闭状态,服务正常;当失败次数大于设定的阈值时,说明服务出现了故障,打开熔断器,这时所有的请求会执行快速失败,不执行业务逻辑。当处于打开状态的熔断器时,一段时间后会处于半打开状态,并执行一定数量的请求,剩余的请求会执行快速失败,若执行的请求失败了,则继续打开熔断器;若成功了,则将熔断器关闭。
熔断器机制不仅能解决分布式的雪崩效应,还能进行资源隔离、服务降级、自我修复等。

4、服务网关

微服务系统通过将资源以API接口的形式暴露给外部来提供服务。在微服务系统中,API接口资源通常是由服务网关统一暴露,服务内部不直接对外提供API资源的暴露。API网关通常有请求转发的作用,也可能负责一定的安全验证。一般情况下,网关层以集群方式存在。
网关的意义:
● 网关将所有服务的API接口资源统一聚合,对外统一暴露,外界系统调用的API接口都是网关对外暴露的API接口。外界系统不需要知道微服务架构中各个服务相互调用的复杂性,微服务系统也保护了其内部微服务单元的API接口,防止被外界直接调用以及服务的敏感信息对外暴露;
● 网关可以做一些用户身份认证、权限认证,防止非法请求操作API接口,对内服务起到保护作用;
● 网关可以实现监控功能,实时日志输出,对请求进行记录;
● 网关可以用来做流量监控,在高流量情况下,对服务进行降级;
● API接口从内部服务分离出来,方便做测试;
最常用的网关组件有zuul和Nginx。

5、服务配置的统一管理

在开发过程中,每个服务都有大量的配置文件,并且配置在不同的环境中是不一样的。随着服务数量增加,配置文件的管理也会越来越复杂,需要由统一管理配置文件的组件。

6、链路追踪

微服务系统按照业务来划分服务单元,一个微服务有很多个服务单元。由于微服务中服务单元多且业务调用复杂,一旦出现错误很难定位。所以在微服务架构中必须实现分布式链路追踪,去跟进一个请求到底有哪些服务参与,参与顺序又是怎样的,从而使每个请求链路清晰可见,除了问题能快速定位。

Spring Cloud的常用组件

1、服务注册与发现组件Eureka

Eureka组件提供了服务的健康监测,以及界面友好的UI。通过提供的UI可以随时了解服务的运行情况。

2、熔断组件Hystrix

Hystrix除了基本的熔断器功能外,还能实现熔断降级、服务限流的功能。同时Hystrix提供了熔断器的健康监测,以及熔断器健康数据的API接口。

3、负载均衡组件Ribbon

Ribbon通常和Eureka、Zuul、Feign组合使用。Ribbon和Zuul配合,和容易实现负载均衡,将请求根据负载均衡策略分配到不容的服务实例中。

4、路由网关Zuul

Zuul有智能路由和过滤功能。内部服务的API接口通过Zuul网关统一对外暴露,内部服务的API接口不直接暴露,防止内部敏感信息对外暴露。

5、Spring Cloud Config

Spring Cloud Config组件提供了配置文件统一管理的功能。包括Server端和Client端,Server端读取本地仓库或远程仓库的配置文件,所有的Client想Server读取配置信息,从而达到配置文件统一管理的目的。

6、Spring Cloud Security

Spring Cloud Security是对Spring Security组件的封装,该组件向服务单元提供了用户验证和权限认证。

7、Spring Cloud Sleuth

Spring Cloud Sleuth是一个分布式链路追踪组件,它封装了Dapper、Zipkin和kibana等组件,通过它可以知道组件间的相互依赖关系,并实时观察链路的调用情况。

8、Spring Cloud Stream

Spring Cloud Stream是Spring Cloud框架的数据流操作包,可以封装RabbitMQ、ActiveMQ、Kafka、Redis等消息组件,利用该组件可以实现消息的接收和发送。

9、Feign

声明式远程调用组件。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

尘风-随手记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值