主要组成如下:
服务发现——Netflix Eureka 服务调用——Netflix Feign
熔断器——Netflix Hystrix 服务网关——Netflix Zuul
分布式配置——Spring Cloud Config 消息总线 —— Spring Cloud Bus
服务发现组件:eureka
eureka client注册到eureka服务端上,不管服务提供者还是服务消费者都要注册。
eureka服务端和客户端有心跳机制,默认30秒。90秒没有收到,就会剔除掉这个客户端。
服务消费者客户端上有服务注册表缓存,eureka服务端down之后,也能找到服务提供者。
客户端负载均衡组件:ribbon
三种方式:轮循
,随机
,根据响应时间加权
默认策略是轮循
。
可以自定义
eureka包含有ribbon的jar包
feign:命名式的http client
整合了ribbon和eureka 支持springMVC的注解
包含feign encoder ,feign decoder,feign contract
hystrix:断路器和超时机制的组件
没有保护应用会导致雪崩效应
超时机制
断路器模式:依赖的服务有大量超时,不去请求,快速失败
断路器状态:关闭,打开,断开
打开,直接返回状态不可用
半开,尝试请求,成功率达标,断路器关闭,反之打开
关闭,正常请求
1.监控,总共请求多少次,有多少失败,失败率达到标准,断路器打开
2.断路器状态
3.半开时,分流
4.自我修复,断路器状态切换
当对特定服务呼叫,hystrix默认5秒钟失败20次,打开断路器
回退机制,fallback,可以由开发人员提供
health indicator健康指标
hystrix.stream 监控
turbine 监控整个集群
zuul 实现比较好的api gateway
反向代理所有注册在eureka上的服务
Sidecar 支持使用其他语言的微服务
spring cloud config统一管理微服务配置的组件
集中管理
动态调整
不同环境不同配置
自动刷新
config server
连上GIT
config client
获取git上的配置
spring cloud bus
基于mq
trace追踪