SpringCloud主要框架

服务发现——Netflix Eureka

服务调用——Netflix Feign

熔断器——Netflix Hystrix

服务网关——Netflix Zuul

分布式配置——Spring Cloud Config

消息总线  —— Spring Cloud Bus

总结


服务发现——Netflix Eureka

在许多分布式系统架构中,都需要去获取机器的物理地址(微服务实例部署的服务器地址及端口)。这一认知在分布式系统架构开始的时候就已经存在,而等到分布式计算出现的时候,被正式称为服务发现(service discovery)。

服务发现可以做一些简单的事情,比如维护一个带有所有远程服务地址的属性文件,或一个UDDI(Universal Description, Discovery and Integration)存储库。


服务调用——Netflix Feign

Eureka作为服务注册中心,在服务启动后,各个微服务会将自己注册到Eureka server。那么服务之间是如何调用?

但是在实际开发中,项目中会有很多的服务间的调用,对于服务的调用不可能是一处。所以我们针对各个服务自行封装一些客户端类来包装这些依赖服务的调用。

      SpringCloud Feign就在这个基础上做了封装,他可以帮助我们定义接口。开发时候只需要定义接口并添加相应的注解,大大的简化了使用ribbon的开发量。


熔断器——Netflix Hystrix

在分布式架构中,一个应用依赖多个服务是非常常见的,如果其中一个依赖由于延迟过高发生阻塞,调用该依赖服务的线程就会阻塞,如果相关业务的QPS较高,就可能产生大量阻塞,从而导致该应用/服务由于服务器资源被耗尽而拖垮。

另外,故障也会在应用之间传递,如果故障服务的上游依赖较多,可能会引起服务的雪崩效应。就跟数据瘫痪,会引起依赖该数据库的应用瘫痪是一样的道理。

Netflix Hystrix是SOA/微服务架构中提供服务隔离、熔断、降级机制的工具/框架。Netflix Hystrix是断路器的一种实现,用于高微服务架构的可用性,是防止服务出现雪崩的利器。


服务网关——Netflix Zuul

服务网关是微服务架构中一个不可或缺的部分。通过服务网关统一向外系统提供REST API的过程中,除了具备服务路由、均衡负载功能之外,它还具备了权限控制等功能。Spring Cloud Netflix中的Zuul就担任了这样的一个角色,为微服务架构提供了前门保护的作用,同时将权限控制这些较重的非业务逻辑内容迁移到服务路由层面,使得服务集群主体能够具备更高的可复用性和可测试性。


分布式配置——Spring Cloud Config

Spring Cloud Config为服务端和客户端提供了分布式系统的外部化配置支持。配置服务器为各应用的所有环境提供了一个中心化的外部配置。它实现了对服务端和客户端对Spring Environment和PropertySource抽象的映射,所以它除了适用于Spring构建的应用程序,也可以在任何其他语言运行的应用程序中使用。作为一个应用可以通过部署管道来进行测试或者投入生产,我们可以分别为这些环境创建配置,并且在需要迁移环境的时候获取对应环境的配置来运行。

置服务器默认采用git来存储配置信息,这样就有助于对环境配置进行版本管理,并且可以通过git客户端工具来方便的管理和访问配置内容。当然他也提供本地化文件系统的存储方式。

使用 spring Cloud 进行集中式配置管理,将以往的配置文件从项目中摘除后放到Git 或svn中集中管理,并在需要变更的时候,可以通知到各应用程序,应用程序刷新配置不需要重启。


消息总线 —— Spring Cloud Bus

Spring Cloud Bus将分布式系统的节点与轻量级消息代理链接。这可以用于广播状态更改(例如配置更改)或其他管理指令。一个关键的想法是,总线就像一个分布式执行器,用于扩展的Spring Boot应用程序,但也可以用作应用程序之间的通信通道。目前唯一的实现是使用AMQP代理作为传输,但是相同的基本功能集(还有一些取决于传输)在其他传输的路线图上。


总结

SpringCloud主要框架_第1张图片
图片发自App

      我们使用Spring Cloud Netflix中的Eureka实现了服务注册中心以及服务注册与发现;而服务间通过Ribbon或Feign实现服务的消费以及均衡负载;通过Spring Cloud Config实现了应用多环境的外部化配置以及版本管理。为了使得服务集群更为健壮,使用Hystrix的融断机制来避免在微服务架构中个别服务出现异常时引起的故障蔓延。

      在该架构中,我们的服务集群包含:内部服务Service A和Service B,他们都会注册与订阅服务至Eureka Server,而Open Service是一个对外的服务,通过均衡负载公开至服务调用方,这种公开当时是通过服务网关——Netflix Zuul。

你可能感兴趣的:(SpringCloud主要框架)