Ribbon主要为客户一侧提供软件负载均衡算法,客户端组件包括连接超时、重试、重试算法等等,并带有可插拔/定制的负载均衡组件策略,并集成一些功能,比如使用Archaius完成运行时配置。
需要注意的是这里的负载均衡是客户端LB,和我们用Ng或者Haproxy做的LB是有本质区别的,可以理解为细粒度的LB。
API网关微服务网关,介于客户端与服务器之间的中间层,所有的外部请求都会先经过微服务网关。客户端只需要与网关交互,只知道一个网关地址即可。
- 将所有API调用统一接入到API网关层,由网关层统一接入和输出。
- 一个网关的基本功能有:统一接入、安全防护、协议适配、流量管控、长短链接支持、容错能力。
- 有了网关之后,各个API服务提供团队可以专注于自己的的业务逻辑处理,而API网关更专注于安全、流量、路由等问题。
配置中心就是把项目中各种配置、各种参数、各种开关,全部都放到一个集中的地方进行统一管理,并提供一套标准的接口。
当各个服务需要获取配置的时候,就来配置中心的接口拉取。当配置中心中的各种参数有更新的时候,也能通知到各个服务实时的过来同步最新的信息,使之动态更新。
Spring Cloud Config将配置信息中央化保存, 配置Spring Cloud Bus可以实现动态修改配置文件,整体基于观察订阅的设计模式,当然,也可以使用zookeep来实现
熔断熔断:这一概念来源于电子工程中的断路器(Circuit Breaker)。在互联网系统中,当下游服务因访问压力过大而响应变慢或失败,上游服务为了保护系统整体的可用性,可以暂时切断对下游服务的调用。这种牺牲局部,保全整体的措施就叫做熔断。一般熔断的时候,会提供对应的熔断策略。
spring-cloud-netflix-hystrix 对 Hystrix 进行封装和适配,使 Hystrix 能够更好地运行于 Spring Cloud 环境中,为微服务间的调用提供强有力的容错机制。
雪崩客户端访问A服务,而A服务需要调用B服务,B服务需要调用C服务,由于网络原因或者自身的原因,如果B服务或者C服务不能及时响应,A服务将处于阻塞状态,直到B服务和C服务响应。此时若有大量的请求涌入,容器的线程资源会被消耗完毕,导致服务瘫痪。
服务与服务之间的依赖性,故障会传播,造成连锁反应,会对整个微服务系统造成灾难性的严重后果,这就是服务故障的“雪崩”效应。
断路器将远程方法调用包装到一个断路器对象中,用于监控方法调用过程的失败。 一旦该方法调用发生的失败次数在一段时间内达到一定的阀值,那么这个断路器将会跳闸
在接下来时间里再次调用该方法将会被断路器直接返回异常,而不再发生该方法的真实调 用。 这样就避免了服务调用者在服务提供者不可用时发送请求,从而减少线程池中资源的 消耗,保护了服务调用者。
虽然断路器在打开的时候避免了被保护方法的无效调用,但是当情况恢复正常时,需要外部干预来重置断路器,使得方法调用可以重新发生。 所以合理的断路器应该具备一定的开关转化逻辑,它需要一个机制来控制它的重新闭合
链路追踪随着微服务架构的流行,服务按照不同的维度进行拆分,一次请求往往需要涉及到多个服务。互联网应用构建在不同的软件模块集上,这些软件模块,有可能是由不同的团队开发、可能使用不同的编程语言来实现、有可能布在了几千台服务器,横跨多个不同的数据中心。因此,就需要对一次请求涉及的多个服务链路进行日志记录,性能监控即链路追踪。
Spring Cloud Sleuth主要功能就是在分布式系统中提供追踪解决方案,并且兼容支持了zipkin。
Spring Cloud的技术实现Spring Cloud的子项目,大致可分成两类.
一类是对现有成熟框架”Spring Boot化”的封装和抽象,也是数量最多的项目;
二类是开发了一部分分布式系统的基础设施的实现,如Spring Cloud Stream扮演的就是kafka,ActiveMQ这样的角色。对于我们想快速实践微服务的开发者来说,第一类子项目就已经足够使用。
- Spring Cloud Netflix是对Netflix 开发的一套分布式服务框架的封装,包括服务的发现和注册,负载均衡、断路器、REST客户端、请求路由等。
- Spring Cloud Config将配置信息中央化保存,配置Spring Cloud Bus可以实现动态修改配置文件
- Spring Cloud Stream分布式消息队列,是对Kafka,MQ的封装
- Spring Cloud Security对Spring Security的封装,并能配合Netflix使用Spring Cloud Zookeeper对Zookeeper的封装,使之能配置其它Spring Cloud的子项目使用
- Spring Cloud Eureka是Spring Cloud Netftix微服务套件中的一部分,它基于Netflix Eureka 做了二次封装,主要负责完成微服务架构中的服务治理功能。
- 不同的应用可以通过gateway进行交互。
- 也可以通过gateway为前端提供接口。
- 微服务引擎(Cloud ServiceEngine,CSE),是用于微服务应用的云中间件,为用户提供注册发现、服务治理、配置管理等高性能和高韧性的企业级云服务能力。
- CSE可无缝兼容Spring Cloud、ServiceComb等开源生态。
- 用户也可结合其他云服务,快速构建云原生微服务体系,实现微服务应用的快速开发和高可用运维。
- CSE一般和数据库、缓存和消息中间件同时使用,完成业务功能的开发。
- AOM、APM、LTS等工具,则为业务提供运维能力,帮助检测业务故障、分析故障原 因。