spring cloud小结
spring cloud小结
Spring Cloud为开发者提供了在分布式系统(如配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性Token、全局锁、决策竞选、分布式会话和集群状态)等微服务组件
服务注册中心
注册,续约(心跳机制,防止剔除),下线
服务提供者
服务消费者:负载均衡
feign 默认打开了ribbon(负载均衡),以及hystrix(熔断).
client的一套规则(选择服务提供者),默认线性选择
RandomRule,随机规则。并发修改upList导致取出的server为空。
RoundRobinRule:线性轮询,current++%serverCount
RetryRule:依赖RoundRobinRule选择,加上重试时间的choose
WeightResponseTimeRule: 根据响应时间,计算权重区间。计算随机权重,看看落到哪个区间,调用哪个服务
ClientConfigEnableRoundRobinRule
BestAvailableRule
PredicateBasedRule
AvailabilityFilterRule,
ZoneAvoidanceRule
feign 依赖ribbon实现服务的均衡调用。
Eureka:高可用,多示例
hystrix:断路器,依赖aop实现
服务降级,
configcenter
多环境配置
zuul
- 动态路由
- 监控
- 安全
- 认证鉴权
- 压力测试
- 金丝雀测试
- 审查
- 服务迁移
- 负载剪裁
- 静态应答处理
sleuth
数据收集,存储,展现
收集流程
业务示例
zipkin具有存储展现能力,内存型存储和mysql、es和cassadra
日志收集涉及到一个采样频率
数据存储涉及到一个日志跟踪问题。traceId
http://tech.lede.com/2017/04/19/rd/server/SpringCloudSleuth/sleuthZipkinHttp.png
分布式锁
db实现,主键不重复,行锁,selectForUpdate
唤醒机制:
连接池耗费完的问题,事务超时
redis:setNx
没有唤醒机制,自带失效删除。
zookeeper ,创建节点,其他现在通过watch机制来唤醒 ,羊群效应,因为watch机制,接收了很多无关信息。
系统上线问题
代码级别:记录超时的log
com.alibaba.common.lang.diagnostic.Profiler