Spring Cloud为开发人员提供了一整套的快速构建分布式应用的工具,入服务注册、服务发现、熔断、负载均衡、路由等,提供了开箱即用的各种依赖以及良好的可扩展机制。
目前在Spring Cloud的中文官网中列出了很多优质项目:
Spring Cloud没有重复的制造轮子,它吸取了很多家公司的优秀项目框架,通过Spring Boot的快速整合,屏蔽了复杂的配置,方便开发者快速构建自己需要的服务。
目前Spring Cloud为我们可以提供以下服务:
下面我们介绍几个常用的Spring Cloud下的服务组件。
1. Eureka
Netfilix公司出品(大佬为Spring Cloud生态提供了很多服务治理的组件)。
服务发现是微服务架构的原则之一,用于定位你在本地可提供的服务。Eureka是一个基于REST的云端服务发现的应用,当客户端注册Eureka服务时,提供了一系列自身的元数据,入主机、健康指示符URL等参数,Eureka服务器接收心跳消息维持这种服务。
2. Hystrix
熔断器,容错管理工具,旨在通过熔断机制控制服务和第三方库的节点,从而对延迟和故障提供更强大的容错能力。
加入你目前的软件架构如下:
当ServiceB出现服务故障,并达到一定的阈值(Hystrix的默认是5秒内出现20次故障),则出现熔断机制,启用回退机制:
fallback机制可以是启动替代服务,也可以是让该服务下线。
3. Spring Cloud Config
配置中心,可以把配置放到远程服务器,进行集中化管理分布式环境下的配置,支持Git和SVN。
4. Spring Cloud Bus
事件、消息总线,用于在集群(例如,配置变化事件)中传播状态变化,可与Spring Cloud Config联合实现热部署。
5. Spring Cloud Zookeeper
Spring Boot抱紧ZK的大腿。
6. 和Spring Boot的关系
Spring Boot是快速开发Spring应用的脚手架,Spring Cloud是一个基础Spring Boot实现的云应用开发工具集合。
7. 结尾语
Spring Cloud特别适合中小型公司,因为它们往往没有足够的财力开发各种基础设施,而Spring Could提供了一站式解决方案,大大减少了开发成本。对于大公司,Spring Could也方便构建核心系统之外的微服务,甚至抽丝剥茧般地对原来的巨型核心系统解耦。因此笔者相信Spring Cloud可成为下一代服务端框架的重要选择。