@boothsun
2018-05-01T10:41:39.000000Z
字数 1603
阅读 1409
面试题
远程调用,往往是伴随着微服务化改造的过程产生的。
服务端在启动时 可以按照指定格式在ZK上创建节点临时节点,连接断开后,节点自动删除。
客户端在方法调用时,可以先从本地缓存中查询服务端IP和端口,查找失败,即向ZK注册中心查找。查找到时,可以对该目录节点建立一个watcher监听 监听删除或者新增事件。 监听到删除事件时将 该节点从可用列表中清除。监听到新增事件时,去注册中心再拉取一次最新服务提供者列表信息。
分流、降级、限流
负载均衡算法,英文名称为 Load Balance,通过某种负载分担技术,将外部发送过来的请求均匀分配到对称结构中的某一台服务器上,而接收到请求的服务器独立地响应客户端。
应用级限流:
1. 限流总并发或连接数
2. 限流总资源数:线程池。
3. 限流某个接口的总并发数或请求数。:AtomicInteger Semphore
4. 限流某个接口的时间窗口请求数:过期清除(redis java 定时线程池 guava的本地缓存)
5. 平滑限流:Guava的令牌算法和漏桶算法。SmoothBursty:平滑限流 令牌算法 和平滑预热限流(SmoothWarmingUp 流速是梯形递增的 冷启动时会以一个比较大的速率慢慢达到平均速率,然后趋于平均速率 梯形下降到平均速率)实现。
6. 分布式限流:redis + LUA 或 Nginx + LUA
自动降级:
1. 超时或者接口故障降级:不展示 或者 展示默认数据 缓存数据 或者同步改异步(下单 黑名单校验,服务异常,改由后台异步校验黑名单,在做补偿)
2. 统计失败次数降级:收银台三方支付渠道,那个服务失败次数多,就把他往下隐藏。
3. 限流降级:排队等待页面、错误页等。
4. 读写降级:读兜底数据 默认数据,或者不读 直接进入错误页 或者页面静态化。
5. 写服务降级:写DB,再写Redis,假如Redis 性能故障,还有异步写Redis。MQ 定时JOB等,最终数据一致性,
6. Hystrix 熔断,健康度统计。
人工降级:
1. 配置中心 打开降级开关。
2. 摘除集群。