Spring Cloud由众多子项目组成,如Spring Cloud Config、Spring Cloud Netflix、Spring Cloud Consul 等,提供了搭建分布式系统及微服务经常使用的工具,如配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性token、全局锁、选主、分布式会话和集群状态等,知足了构建微服务所需的全部解决方案。html
服务发现——Netflix Eurekajava
客服端负载均衡——Netflix Ribbonnginx
断路器——Netflix Hystrix算法
服务网关——Netflix Zuul服务器
分布式配置——Spring Cloud Config负载均衡
一个RESTful服务,用来定位运行在AWS地区(Region)中的中间层服务。由两个组件组成:Eureka服务器和Eureka客户端。Eureka服务器用做服务注册服务器。Eureka客户端是一个java客户端,用来简化与服务器的交互、做为轮询负载均衡器,并提供服务的故障切换支持。Netflix在其生产环境中使用的是另外的客户端,它提供基于流量、资源利用率以及出错状态的加权负载均衡。框架
Ribbon,主要提供客户侧的软件负载均衡算法。运维
Ribbon客户端组件提供一系列完善的配置选项,好比链接超时、重试、重试算法等。Ribbon内置可插拔、可定制的负载均衡组件。下面是用到的一些负载均衡策略:异步
简单轮询负载均衡分布式
加权响应时间负载均衡
区域感知轮询负载均衡
随机负载均衡
Ribbon中还包括如下功能:
易于与服务发现组件(好比Netflix的Eureka)集成
使用Archaius完成运行时配置
使用JMX暴露运维指标,使用Servo发布
多种可插拔的序列化选择
异步和批处理操做(即将推出)
自动SLA框架(即将推出)
系统管理/指标控制台(即将推出)
断路器能够防止一个应用程序屡次试图执行一个操做,即极可能失败,容许它继续而不等待故障恢复或者浪费 CPU 周期,而它肯定该故障是持久的。断路器模式也使应用程序可以检测故障是否已经解决。若是问题彷佛已经获得纠正,应用程序能够尝试调用操做。欢迎你们一块儿学习研究相关技术愿意了解源码的朋友直接求求交流分享技术:2147775633
断路器增长了稳定性和灵活性,以一个系统,提供稳定性,而系统从故障中恢复,并尽可能减小此故障的对性能的影响。它能够帮助快速地拒绝对一个操做,即极可能失败,而不是等待操做超时(或者不返回)的请求,以保持系统的响应时间。若是断路器提升每次改变状态的时间的事件,该信息能够被用来监测由断路器保护系统的部件的健康情况,或以提醒管理员当断路器跳闸,以在打开状态。
流程图
相似nginx,反向代理的功能,不过netflix本身增长了一些配合其余组件的特性。
这个仍是静态的,得配合Spring Cloud Bus实现动态的配置更新。
更多详细源码参考来源:http://minglisoft.cn/honghu/technology.html