SpringCloud简介与常用组件

什么是springcloud?

springcloud是基于springboot实现微服务的框架,将一系列优秀的组件进行了整合。

Eureka 服务注册中心

Eureka作为服务注册中心,可以把开发的服务注册到服务注册中心上面
所有服务之间的调用都通过服务注册中心,通过服务的方式进行调用(不使用http直连)
构成Eureka的体系包括服务注册中心,服务提供者,服务消费者

Ribbon 客户端负载均衡,特性有区域亲和,重试机制

Ribbon主要提供客户端负载均衡的作用
如果说Eureka只是维护了服务注册中心,服务提供者,服务消费者之间的关系,那么真正的服务消费者调用服务提供者是通过Ribbon实现的

Feign 声明式服务调用,本质就是Ribbon+Hystrix

如果使用Ribbon调用服务的话,就可以感受到使用Ribbon的方式还是有点复杂,因此Feign应运而生
它是一个声明式web服务客户端,使得编写web服务客户端更容易
使用Feign只需要创建一个接口,并对它进行注解
springcloud集成Eureka和Ribbon提供的负载均衡的http客户端Feign,简单的可以认为Feign的出现使得Euraka和Robbon的使用更为简单

Hystrix客户端容错保护,特性有服务降级,服务熔断,请求缓存,请求合并,依赖隔离

又称断路器,保险丝
例如:当一个服务出现故障,而服务的调用方不知道服务出现故障,若此时调用方的请求不断的增加,最后就会等待出现故障的依赖方,相应形成任务的积压,最终导致自身服务的瘫痪。Hystrix正是为了解决这种情况的,防止持续对某一故障的服务持续进行访问

Config分布式配置中心,支持本地仓库,SVN,Git,Jar包内配置等方式

对于微服务还不是很多的时候,各种服务配置的管理还相对简单,但是当成百上千的微服务结合起来的时候,服务配置的管理变得会复杂起来。
分布式系统中,由于服务数量巨多,为了方便服务配置文件统一管理,实时更新,所以需要分布式配置中心组件。
配置可以放在本地内存中,也支持放在远程的Git仓库中

Zuul API服务网关,功能有路由分发和过滤

Zuul是一个开源的API gateway网关,本质上是一个web sevelet应用
Zuul在云平台上提供动态路由监控,弹性,安全等边缘服务的框架

Bus消息总线

我们如何要去更新所有微服务的配置,在不重启的情况下去更新配置,只能依靠springcloud Config了
但是,我们要一个一个服务去发送post请求,这其实还是非常麻烦。
但是通过Bus消息总线,只需要在springcloud config的server端发出refresh,就可以触发所有微服务的更新了

SpringCloud架构图

1 微服务需要到Eureka服务中心注册
2 各微服务之间可以通过Feign相互调用
3 外部应用想要调用微服务需要
3.1 通过Zuul做初步的健全过滤
3.2 Ribbon做负载均衡
3.3 Hystrix做一系列的保护
3.4 最后到Eureka服务中心找到对应的服务名和路径
3.5 拿到路径才可以访问具体的微服务

你可能感兴趣的:(SpringCloud简介与常用组件)