这里将会首先简单介绍一下Spring Cloud 。
其Logo 以下架构
Spring Cloud 是一系列有序框架的集合,其主要的设施有,服务发现与注册,配置中心,消息总线,负载均衡,断路器,数据监控等,经过Spring Boot的方式,能够实现一键启动,和部署。
Spring 没有从新造车轮,只是把各家的应用给综合起来。最后给开发者遗留下了一个足够简单的,至关容易部署的,至关容易学习的Spring 体系。
至于为何要学习Spring Cloud的体系,由于原先的体系过于复杂了,致使开发的环境艰难,正是因为开发的环境的艰难,Spring Cloud 的是Spring体系的简化版,简化了原有的复杂,使得开发变的更加的简单快速。
其核心以下:
Spring Cloud Config、Spring Cloud Netflix(Eureka、Hystrix、Zuul、Archaius…)、Spring Cloud Bus、Spring Cloud for Cloud Foundry、Spring Cloud Cluster、Spring Cloud Consul、Spring Cloud Security、Spring Cloud Sleuth、Spring Cloud Data Flow、Spring Cloud Stream、Spring Cloud Task、Spring Cloud Zookeeper、Spring Cloud Connectors、Spring Cloud Starters、Spring Cloud CLI
这里将会一一的介绍。负载均衡
其英文名称为 Spring Cloud Eureka,为Spring Cloud Netflix 子项目的核心组件之一,主要用于微服务的服务治理与发现。
在微服务的架构中,每每都有一个注册中心,每一个微服务都会向注册中心,注册本身的微服务,注册中心,维护着,服务名称与服务实例对应的关系,每一个微服务都会定时的从注册中心,获取注册列表,同时汇报本身的运行状况,这样当有其余服务须要调用该服务的时候,就能够向本身获取到的列表中,获取地址进行调用,Eureka实现了这套机制。即服务注册与发现。框架
其为微服务架构体系中最为核心的一点,用于其余微服务注册到该注册中心,配合路由能够实现路由的转发。经过寻找,遍历出其微服务。
同类型产品的还有Apahe Zookeeper 相对于高可用来讲,zk 将不会保证,服务的可用性,当节点挂掉之后,须要进行Leader 选举,选举的时候会出现短暂的挂掉。而 eureka 当一个节点宕机之后,会进行自动的转移。因此其高可用性比zookeeper 相比更高。分布式
伴随着配置的增加,服务也有不少个配置,每一个配置文件都各个不相同,其中,许多配置文件都是能够共用的,若是每一个服务都去管理这些配置,会带来极大的麻烦,这个时候,须要引入基于Git的配置中心,去配置这个服务,例如Spring Cloud 体系中的,Spring Cloud Config,可是服务之间如何通讯,这里使用 Spring Cloud Bus,即消息总线,做为配置中心,通知到配置体系中。微服务
这里是至关经典的生产者,消费者模型,经过生产者,和消费者,统一进行布置,经过Spring Cloud Feign 远程调用,实现服务消费者,和生产者之间的相关联。实现经典的服务消费者和生产者之间的关系。工具
当调用服务出错之后,服务如何保证整个体系不崩塌,这里就须要使用服务容错进行处理。这里称为服务雪崩,当出现服务雪崩的时候,整个服务链路会出现调用崩塌的状况。
Spring Cloud 组件中的 Spring Cloud HyStrix 实现了这种服务降级,与故障隔离。学习
网关为整个系统,提供路由,鉴权,监控,负载均衡等功能,Spring Cloud 为此提供的解决方案有Zuul,与Gateway。测试
伴随着整个服务链路的增加,服务愈来愈多,排查问题,监控指标的时候,服务追踪变的至关的重要,Spring Cloud 体系提供的是,Sleuth,对整个服务链路进行追踪,并以图表的形式表现出来。spa
在微服务体系中,一个服务可能会依赖其余的服务,这里使用服务测试来使用。经过Mock数据,实现服务的测试。
这里使用的是 Spring Cloud Contract
Spring Cloud Security 的安全工具包,用于对Spring Security 提供基本的RBAC服务。
用于进行相关的日志收集,实现分布式追踪的一种解决方案。
用于进行大规模的数据处理。
事件触发的机制,让其实现事件触发。
调度工做,定时任务,须要使用 Task
同属于 注册中心 Zookeeper 体系。
利用 Spring Cloud Connectors 实现云平台的搭建。
开箱即用,能够实现Boot形式的启动项目。
同上,使用命令行的方式实现开箱即用。