什么是SpringCloud
SpringCloud是什么
SpringCloud是关注全局的微服务协调整理治理框架,整合并管理各个微服务,为各个微服务之间提供,配置管理,服务发现,断路器,路由,事件总线等集成服务,他并不是一个单独的框架,是一个工具集,微服务全家桶,微服务整套解决方案
springCloud的五大组件
注册中心eureka
服务注册与发现
运行参数
1.注册:一次次反复注册直到成功
2.拉取:每30秒拉取一次注册表
3.心跳.每30秒发送一次心跳,如果eureka3次收不到心跳,就会删除该服务
4.自我保护模式:
由于网络不稳定,15分钟内内百分之85的服务器心跳异常
保护所有的注册信息,不删除
网络稳定后,可以自动推出保护模式,恢复正常
开发期间可以先关闭起来保护模式
eureka和zookeeper的区别
eureka:AP强调可用性
eureka:集群,对等结构
zookeeper:CP强调一致性
zookeeper集群,主从结构
负载均衡与重试ribbon
一般不直接使用ribbon而是在feign或者zuul中集成
1.负载均衡:添加依赖,RestTemplate 设置 @LoadBalanced
(1)@LoadBalanced 负载均衡注解,会对 RestTemplate 实例进行封装,创建动态代理对象,并切入(AOP)负载均衡代码,把请求分散分发到集群中的服务器
(2)访问路径设置为服务id
2.重试:添加依赖 配置重试参数
(1)MaxAutoRetries 单台服务器重试次数
(2)MaxAutoRetriesNextServer 更换服务器次数
(3)OkToRtryOnAllOperations 是否对所有类型请求都重试,默认只对Get请求重试
(4)ConnectTimeout 建立连接超时时间
(5)ReadTimeout 接受响应的超时时间
系统容错降级熔断Hystrix
1.配置 添加hystrix依赖 @EnableCircuitBreaker
2.降级
快速失败:即使服务出错也要快速响应给用户
@HystrixCommand(fallbackMethod=‘降级方法名’)
添加降级方法,实现降级响应
3.熔断
能保证在出现问题的时候,不会导致整体服务失败,避免级联故障,以提高分布式系统的弹性。
熔断默认就被实现了无需再配置
熔断条件
(1)10秒内20次请求
(2)在条件一满足的情况下百分之50执行失败执行降级代码
熔断之后会有半开状态,尝试发送一次请求,成功的话自动关闭断路器,恢复正常,失败,断路继续打开
监控工具Hystrix dashboard
利用springboot自带的健康检测actuator暴露监控数据 监控端点:hystrix.stream
如何对hystrix.stream进行监控利用hystrix dashboard仪表盘进行监控
1.添加hystrix dashboard依赖
2.主程序注解@EnableHystrixDashboard
聚合监控数据Turbine
Hystrix dashboard只能监控单个服务器的监控数据Turbine把多个服务器的监控数据聚合起来,同时监控
配置
1.yml文件中添加app-config:order-service,服务名,服务名
2.cluster-name-experession:new String(“default”)
3.@EnableTurbine
监控端点/turbine-stream
集成Ribbon和Hystrix提供声明式客户端Feign
声明式客户端:在类上添加@FeignClient(name=“item-service(服务名)”)
集成Ribbon:默认实现负载均衡和重试
集成hystrix(不推荐启用)
1.默认不启用Hystrix
2.添加Hystrix完整依赖
3.yml配置:feign.hystrix.enabled=true
4.EnableCircuitBreaker
降级@FeignClient(name=item-servicer,fallbak=itemFB.class)
1.降级类必须实现声明式客户端接口
2.name=服务名
3.fallbak=降级类.class
Hystrix dashboard
1.添加actuator依赖,hystrix依赖,@EnableCircuitBreaker注解
2.暴露监控端点:hystrix.stream