2018-07-31spring cloud
组合注解
@SpringCloudApplication
eureka 高可用
a->b->c->....->a
@enableserver
@enablediscoveryclient
RestTemplate http请求
Ribbon负载均衡
RestTemplate上添加@loadbalance
default原理:自增器x x%count 取余数判断访问哪个接口
random原理: random*count
负载均衡策略 Rule 根据架构自定义
hystrix断路器
分布式,机器通过网络通信,不是组合成一个超级计算机,而是把一个应用分成多个模块放在多台机器,以此来提高性能,由于在多台机器上,所以容易因为物理因素(网络等)单个功能出现问题,采用熔断机制防止雪崩发生
@EnableCircuitBreaker
降级:当发生异常的处理方式
类
@defaultProperties(allbackMethod = "")
方法
@HystrixCommand(fallbackMethod = "")
hystrix dashboard 服务监控
开发环境下修改超时时间
熔断三种状态:
closed 关闭 正常访问
open 打开 不低于20次访问失败比例超50%(默认)
half open 半开 打开后默认进入休眠,释放部分请求通过,若通过则关闭断路器,否则继续关闭等待下次唤醒 默认间隔5s
Feign
基本 整合RestTemplate,Ribbon,hystrix 伪装
spring-cloud-feign @FeignClient 客端端访问
@EnableFeignClients
启动Feign
@FeignClient("serverid")
添加在接口上
@GetMapping("url")
添加在方法上
熔断
feign:
hystrix:
enable:true
zuul路由(发送请求不同)
对比负载均衡(发送相同请求)
权限控制(为了安全)
@EnableZuulProxy 启动zuul组件
基本功能等同nginx
针对eureka 将zuul注册为client,默认将服务名转发serverid路径
过滤器ZuulFilter
filterType 过滤器类型 pre 前置 routing 路由 post 结束 error 异常
filterOrder 值越小,优先级越高
shoudFilter boolean true 执行run
run 过滤器逻辑 获取RequestContext 拦截 setSendZuulResponse(false) 不转发 setResponseStatusCode(401) 身份未认证
spring-cloud-config 通用配置
在线更新配置 客户端添加@RefreshScope
更新所有客户端配置 spring-cloud-bus + RabbitMQ 给所有客户端
分发所有消息
eureka 服务管理
spring-cloud-data 共享资源 @RepositoryRestResource
docker自动化部署
事务协调器Tc