spring cloud是什么?

Spring Cloud是微服务系统的一站式解决方案

Spring Cloud本身不是一个框架,他是一系列框架的合集,他可以利用Spring Boot的开发便利性可以快速的完成分布式项目的基础搭建。


Spring Cloud 常用五大组件:

  • Eureka : 注册中心,用于服务的注册和发现
  • Ribbon/Feign : 负载均衡/服务调用
  • Hystrix :断路器,提高分布式系统的弹性
  • GateWay/Zuul :网关管理,由GateWay 网关转发请求给对应的服务,服务同一的转发,以及权限管理和过虑
  • SpringConfig:分布式配置中心

什么是服务注册中心?

所谓服务注册中心就是在整个的微服务架构中单独提出一个服务,这个服务不完成系统的任何的业务功能,仅仅用来完成对整个微服务系统的服务注册和服务发现,以及对服务健康状态的监控和管理功能。

常用的注册中心:

springcloud支持的多种注册中心Eureka(netflix)、Consul、Zookeeper、以及阿里巴巴推出Nacos组件。这些注册中心在本质上都是用来管理服务的注册和发现以及服务状态的检查的。

Eureka自我保护机制:

  • 官网地址: https://github/Netflix/eureka/wiki/Server-Self-Preservation-Mode
  • 默认情况下,如果Eureka Server在一定时间内(默认90秒)没有接收到某个微服务实例的心跳,Eureka Server将会移除该实例。但是当网络分区故障发生时,微服务与Eureka Server之间无法正常通信,而微服务本身是正常运行的,此时不应该移除这个微服务,所以引入了自我保护机制。Eureka Server在运行期间会去统计心跳失败比例在 15 分钟之内是否低于 85%,如果低于 85%,Eureka Server 会将这些实例保护起来,让这些实例不会过期。这种设计的哲学原理就是"宁可信其有不可信其无!"。自我保护模式正是一种针对网络异常波动的安全保护措施,使用自我保护模式能使Eureka集群更加的健壮、稳定的运行。

CAP原则:

CAP定理又称CAP原则,指的是在一个分布式系统中,一致性(Consistency)、可用性(Availability)、分区容错性(Partition tolerance)。、这三个要素最多只能同时实现两点,不可能三者兼顾。

一致性(C):
在分布式系统中的所有数据备份,在同一时刻是否同样的值。(等同于所有节点访问同一份最新的数据副本)

可用性(A):
在集群中一部分节点故障后,集群整体是否还能响应客户端的读写请求。(对数据更新具备高可用性)

分区容忍性(P):
就是高可用性,一个节点崩了,并不影响其它的节点(100个节点,挂了几个,不影响服务,越多机器越好)

Eureka特点 :

  • Eureka中没有使用任何的数据强一致性算法保证不同集群间的Server的数据一致,仅通过数据拷贝的方式争取注册中心数据的最终一致性,虽然放弃数据强一致性但是换来了Server的可用性,降低了注册的代价,提高了集群运行的健壮性。

Consul特点:

  • 基于Raft算法,Consul提供强一致性的注册中心服务,但是由于Leader节点承担了所有的处理工作,势必加大了注册和发现的代价,降低了服务的可用性。通过Gossip协议,Consul可以很好地监控Consul集群的运行,同时可以方便通知各类事件,如Leader选择发生、Server地址变更等。

zookeeper特点:

  • 基于Zab协议,Zookeeper可以用于构建具备数据强一致性的服务注册与发现中心,而与此相对地牺牲了服务的可用性和提高了注册需要的时间。

服务间的通信方式

接下来在整个微服务架构中,我们比较关心的就是服务间的服务改如何调用,有哪些调用方式?

基于Feign的服务调用

  • https://cloud.spring.io/spring-cloud-openfeign/reference/html/
  • Feign是一个声明式的伪Http客户端,它使得写Http客户端变得更简单。使用Feign,只需要创建一个接口并注解。它具有可插拔的注解特性(可以使用springmvc的注解),可使用Feign 注解和JAX-RS注解。Feign支持可插拔的编码器和解码器。Feign默认集成了Ribbon,默认实现了负载均衡的效果并且springcloud为feign添加了springmvc注解的支持。

.Hystrix组件使用:

Hystrix主要为我们解决服务雪崩,他为我们提供了服务熔断和服务降级的功能,提供了分布式系统的弹性。

那么什么是服务雪崩、服务熔断、服务降级呢?

服务雪崩:在微服务之间进行服务调用是由于某一个服务故障,导致级联服务故障的现象,称为雪崩效应。雪崩效应描述的是提供方不可用,导致消费方不可用并将不可用逐渐放大的过程。

服务熔断:当服务中某一个服务单元出现错误(短路)后,通过断路器的故障监控(类似熔断保险丝),立刻返回一个错误信息,而不是让其他关联的服务长时间等待,避免了故障在分布式系统中蔓延。

服务降级:当服务的访问量过高的时候,抛弃业余业务,从而保证核心业务的资源分配,如淘宝在双十一的时候访问量巨大,就会为了核心业务(下单,付款等),而抛弃掉业余业务(修改资料,退款等)。

熔断和降级的区别:熔断必会触发降级,所以熔断也是降级一种,区别在于熔断是对调用链路的保护,而降级是对系统过载的一种保护处理

Gateway组件使用

什么是服务网关?

1.说明

  • 网关统一服务入口,可方便实现对平台众多服务接口进行管控,对访问服务的身份认证、防报文重放与防数据篡改、功能调用的业务鉴权、响应数据的脱敏、流量与并发控制,甚至基于API调用的计量或者计费等等。

  • 网关 = 路由转发 + 过滤器
    路由转发:接收一切外界请求,转发到后端的微服务上去;在服务网关中可以完成一系列的横切功能,例如权限校验、限流以及监控等,这些都可以通过过滤器完成

2.为什么需要网关

  • 1.网关可以实现服务的统一管理
  • 2.网关可以解决微服务中通用代码的冗余问题(如权限控制,流量监控,限流等)

Config组件使用

什么是config组件?

  • config(配置)又称为 统一配置中心顾名思义,就是将配置统一管理,配置统一管理的好处是在日后大规模集群部署服务应用时相同的服务配置一致,日后再修改配置只需要统一修改全部同步,不需要一个一个服务手动维护。

1.统一配置中心组件流程图

更多推荐

Spring cloud是什么?他的五大组件有哪些?