SpringCloud五大组件:
注册中心组件(服务治理):Netflix Eureka;
负载均衡组件:Netflix Ribbon,各个微服务进行分摊,提高性能;
熔断器组件(断路器):Netflix Hystrix,Resilience4j ;保护系统,控制故障范围;
网关服务组件:Zuul,Spring Cloud Gateway;api网关,路由,负载均衡等多种作用;
配置中心:Spring Cloud Config,将配置文件组合起来,放在远程仓库,便于管理;
服务注册:只有一个服务注册到注册中心,才可能被其他服务发现并调用;
服务发现:即一个服务通过注册中心发现了其他服务;
负载均衡:客户端维护一份从注册中心获取的Provider列表清单,根据自己配置的Provider负载均衡选择算法在客户端进行请求的分发。
服务调用:一个服务对另一个服务进行调用;
隔离、熔断与降级:通过Hystrix的线程池去访问服务,不同的服务通过不同的线程池,实现了不同的服务调度隔离;如果服务出现故障,通过服务熔断,避免服务雪崩的问题 ;并且通过服务降级,保证可以手动实现服务正常功能;
网关路由:如果前端调用后台系统,统一从网关进入,通过网关转发请求给对应的服务;
在微服务架构系统中,由于各服务单元颗粒度较小、数量众多,相互之间呈现网状依赖关系,因此需要服务注册中心来统一管理微服务实例,维护各服务实例的健康状态。Spring Cloud Eureka是Spring Cloud Netflix微服务套件的一部分,基于Netflix Eureka做了二次封装,主要负责完成微服务实例的自动注册与发现,这也是微服务架构中的核心和基础功能。
Spring Cloud 提供了多种注册中心的支持,如:Eureka、Consul、ZooKeeper 等,Netflix Eureka 本身是一个基于 REST 的服务,包含两个组件:Eureka Server 和 Eureka Client,前者用作服务注册服务器,后者是java客户端,简化与服务器的交互,同时负载均衡。
Eureka Server的主要功能为服务注册表维护和服务健康检查,各个节点启动后,会在 Eureka Server 中进行注册,这样 Eureka Server 的服务注册表将会存储所有可用服务节点的信息,服务节点的信息可以在界面中直观的看到;
Eureka Server 之间通过复制的方式完成数据的同步,Eureka 还提供了客户端缓存机制,即使所有的 Eureka Server 都挂掉,客户端依然可以利用缓存中的信息消费其他服务的 API;
Eureka Client:生产者或消费者,主要功能为服务注册、心跳续约与健康状况查询;在应用启动后,Eureka Client 将会向 Eureka Server 发送心跳,默认周期为 30 秒,如果 Eureka Server 在多个心跳周期内(默认 90 秒)没有接收到某个节点的心跳,Eureka Server 将会进入自我保护机制;
服务提供者的服务注册和心跳续约一般都会通过注册中心客户端组件来完成。注册中心客户端组件还有服务发现和实例缓存的功能;Eureka Server 的设计一开始就考虑了高可用问题,将自己作为服务向其他服务注册中心注册自己,这样就可以形成一组互相注册的服务注册中心,以实现服务清单的互相同步,达到高可用的效果。