Spring Cloud为开发人员提供了快速构建分布式系统中的一些通用模式(例如配置管理,服务发现,断路器,智能路由,微代理,控制总线,一次性令牌,全局锁,领导选举,分布式 会话,群集状态)。 分布式系统的协调致使了锅炉板模式,而且使用Spring Cloud开发人员能够快速地站起来实现这些模式的服务和应用程序。 它们能够在任何分布式环境中正常工做,包括开发人员本身的笔记本电脑,裸机数据中心和受管平台,如Cloud Foundry。html
目前实现采用spring cloud 全家桶解决方案实现的服务发现主要是,Eureka 或 Consule 2种方案。java
Eureka 是一个RESTFul服务,由两个组件组成:Eureka服务器和Eureka客户端。Eureka服务器用做服务注册服务器。Eureka客户端是一个java客户端,用来简化与服务器的交互、做为轮询负载均衡器,并提供服务的故障切换支持。Netflix在其生产环境中使用的是另外的客户端,它提供基于流量、资源利用率以及出错状态的加权负载均衡。nginx
Consul 是一个支持多数据中心分布式高可用的服务发现和配置共享的服务软件,由 HashiCorp 公司用 Go 语言开发, 基于 Mozilla Public License 2.0 的协议进行开源. Consul 支持健康检查,并容许 HTTP 和 DNS 协议调用 API 存储键值对。 一致性协议采用 Raft 算法,用来保证服务的高可用. 使用 GOSSIP 协议管理成员和广播消息, 而且支持 ACL 访问控制。 参考: http://cloud.spring.io/spring-cloud-consul/#quick-startweb
这个仍是静态的,得配合Spring Cloud Bus + AMQP 实现动态的配置更新。算法
Ribbon,主要提供客户侧的软件负载均衡算法。 Ribbon客户端组件提供一系列完善的配置选项,好比链接超时、重试、重试算法等。Ribbon内置可插拔、可定制的负载均衡组件。下面是用到的一些负载均衡策略:spring
Ribbon中还包括如下功能:docker
断路器能够防止一个应用程序屡次试图执行一个操做,即极可能失败,容许它继续而不等待故障恢复或者浪费 CPU 周期,而它肯定该故障是持久的。断路器模式也使应用程序可以检测故障是否已经解决。若是问题彷佛已经获得纠正,应用程序能够尝试调用操做。 断路器增长了稳定性和灵活性,以一个系统,提供稳定性,而系统从故障中恢复,并尽可能减小此故障的对性能的影响。它能够帮助快速地拒绝对一个操做,即极可能失败,而不是等待操做超时(或者不返回)的请求,以保持系统的响应时间。若是断路器提升每次改变状态的时间的事件,该信息能够被用来监测由断路器保护系统的部件的健康情况,或以提醒管理员当断路器跳闸,以在打开状态。vim
相似nginx,反向代理的功能,不过netflix本身增长了一些配合其余组件的特性。服务器
参考网络