spring cloud的概念
spring cloud框架
- spring cloud是一个分布式微服务框架。以下是我对此框架的一个理解
微服务框架主要是有服务的消费者,服务中介,服务提供者三者之间的关系。服务消费者在现实生活中服务使用者,这考虑我需要什么样的服务。然后将自己所需的服务告诉服务中介,如果服务的提供者在服务中介处注册了此服务,则将此服务的访问接口返回给我服务消费者。则完成一次服务的消费过程。
- 服务发现的框架:Eureka(实现负债均衡和中间层服务故障转移)。Eureka框架自带一个基于Java的客户端实现负载均衡。
Register(服务注册):Eureka的客户端发一个注册请求到Eureka的服务器,在请求中包含了自身的元数据(IP地址,端口号等)
Renew(服务续约):Eureka 客户端没30s向服务器端发一个心跳续约请求,如果连续90s没有收到某一个客户端发送的心跳续约则将此客户端的信息删除。
Fetch Registries(获得注册列表信息):Eureka客户端从服务器端获得注册表信息,并将信息缓存到本地。客户端通过此信息查找服务,从而进行远端的调用。该注册列表没30s更新一次。
Cancel(服务下线):Eureka客户端向服务器端发一个关闭请求,该客户端实例信息将从服务器的实例注册信息中删除。
Eviction(服务剔除):在客户端连续90s未向服务器端发送心跳续约请求,则服务器端将该实例从注册列表中删除。可充当服务发现的组件有:Zookeeper,Consul,Eureka
- 负载均衡:Ribbon VS Nginx
Ribbon是一个在消费者端进行的负载均衡。消费者发送的请求通过负载均衡将请求发送到服务系统上,减少将所有的请求都发送到同一个系统上,导致响应速度慢和服务奔溃。
Nginx是一个集中式的负载均衡,所有的请求都发送待nginx上,通过nginx的负载均衡算法将请求分发出去。
- Open Fegin是在HTTP中的映射
RestTemplate是Spring提高的一个访问HTTP服务的客户端类。
通过使用@FeignClient注解来指定提供者的名字。
- Hystrix的熔断和降级
熔断:
在上图的一个链式的服务调用关系中,如果C服务因为请求量过大而出现阻塞,则B服务无法得到C服务的响应而出现服务雪崩
熔断则是解决服务雪崩的有效方法。当指定时间窗中的请求失败率达到一定的阈值,系统则通过断路器直接将此请求断开,通过@HystrixCommand注解来标注方法,当调用时间超过默认值时,断路器将会中断这个方法的调用。
降级:如果B服务调C服务的方向出现熔断,则降一级调用B服务中的一个提示方法。
- 微服务网关——Zuul
通过对提供统一的网关接口路径进入网关,在网关中通过过滤得到真实的服务地址,
- Spring Cloud的配置管理—Config
Sping Cloud Config 能将各个应用模块的配置文件统一放到一个地方进行管理。
- Spring Cloud Bus——消息总线
用于将服务和服务实例与分布式消息系统链接到一起的事件总线。