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