1. Spring Cloud
Spring Cloud 应用程序:云原生应用(Cloud Native Application)
非常适合在Docker或者PaaS(例如 Cloud Foundry)上部署;
2. 版本
版本号包含 英文单词(release train) + SRX(service release)(X:数字)
- release train:按伦敦地铁站名A-Z进行首字母迭代排序
- SR:一般表示当前修复BUG的版本编号
例:Camden SR4、Camden SR5、Dalston SR1
而大多数Spring项目都以“主版本号.次版本号.增量版本号.里程碑版本号”的形式命名版本号,例如 Spring Framework 稳定版本 4.3.5.RELEASE、里程碑版本 5.0.0.M4 等。
3. 组成
- 服务提供者(Provider):为其他Service提供服务的Service
- 服务消费者(Consumer):服务的调用方Service
- 配置中心(Config):Config Server为Config Client(可以是Provider或Consumer)提供配置信息
4. 组件
序号 | 名称 | 说明 |
---|---|---|
1 | Actuator | 监控端点,如 health:显示应用程序的健康指标,这些值由 HealthIndicator 的实现类提供; info:显示应用的信息,可使用 info.* 的属性自定义 info 端点公开的数据 |
2 | Eureka | Netflix开源的服务发现组件 本身是一个基于REST的服务,包含Server和Client两部分 |
3 | Ribbon | Netflix开源的负载均衡器 有助于控制HTTP和TCP客户端的行为,机遇负载均衡算法进行Consumer调用Provider,如轮询、随机等算法 |
4 | Feign | Netflix开源的申明式、模板化的HTTP客户端 将Consumer的Controller与Provider的Controller的监听路径URL进行解耦,所有的Consumer的相关服务请求URL由特定的Feign接口进行维护 |
5 | Hystrix | Netflix开源的延迟和容错库 用于隔离访问远程系统、服务或第三方库(相当于电路中的保险丝) 在跨服务访问异常时停止再发起无效请求,由Consumer直接处理请求并返回 |
6 | Hystrix Dashboard | 可视化的Hystrix监控平台 |
7 | Turbine | 聚合监控Hystrix监控平台 |
8 | RabbitMQ | 消息中间件,在微服务与Turbine网络不通时,收集消息等待处理 |
9 | Zuul | Netflix开源的微服务网关 核心是一系列过滤器: - 身份认证安全 - 审查与监控 - 动态路由 - 压力测试 - 附再分配 - 静态响应处理 - 多区域弹性 |
10 | Zuul过滤器 |
主要为4种标准类型: - PRE:在请求被路由之前调用 - ROUTING:这种过滤器将请求路由到微服务 - POST:在路由到微服务以后执行 - ERROR:在其他阶段发生错误时自信该过滤器 生命周期请看表格下方图片 |
11 | Sleuth | 为Spring Cloud 提供了分布式跟踪的解决方案,它大量借助了Google Dapper、Twitter Zipkin 和 Apache HTrace的设计。 Sleuth的术语:span(跨度)、trace(跟踪)、annotation(标注) |
分布式计算机的八大误区
Peter Deutsch 的文章 The Eight Fallacies of Distributed Computing 中提到:
1、 网络可靠;2、延迟为0;3、带宽无限;4、网络绝对安全;5、网络拓扑不会改变;6、必须有一名管理员;7、传输成本为0;8、网络同质化(由Java之父Golsing补充)