点击蓝色“ 乔志勇笔记 ”关注我哟
加个“ 星标 ”,第一时间获取推送的文章哦
对于复杂业务,虽然服务发布时预定义好接口的各种配置,但在引用的服务消费者众多且同时访问的时候,可能会引起网络风暴。这种情况下,比较保险的方式是,把接口的各种配置放在服务引用配置文件里
每订阅一个服务就单独用一个线程来处理,这样的话即使遇到个别服务节点连接超时,其他服务节点的初始化连接也不受影响,最慢也就是这个服务节点的初始化连接耗费的时间,最终所有服务节点的初始化连接耗时控制在了30秒以内
对于下线机器、节点销毁的场景,通过调用注册中心提供的批量反注册接口,一次调用就可以把该节点上提供的所有服务同时反注册掉,从而避免了“僵尸节点”的出现
ELK加Prometheus
Pinpoint或SkyWalking
心跳开关保护机制— 通知10%
服务变更信息增量更新
服务节点摘除保护机制——不超过20%
人工修改节点时通知
做法:每隔一段时间(1分钟)获取客户端同每个服务节点之间调用的平均性能统计
按照这个性能统计对服务节点进行排序,对排在性能倒数20%的那部分节点赋予一个较低的权重(3),其余的节点赋予正常的权重(5)
试用场景:
服务节点数量众多,且性能差异比较大;
服务节点列表经常发生变化,增加节点或者减少节点时有发生;
客户端和服务节点之间的网络情况比较复杂,有些在一个数据中心,有些不在一个数据中心需要跨网访问,而且网络经常延迟或者抖动。
规则:条件路由、脚本路由
应用场景 : 灰度发布、读写分离、分组调用、流量切换
限流、降级、切流量
超时:P99
重试:超时后重试
双发:备份请求,设置P90(不等超时返回的重试),设置最大重试比例为15%
熔断:Hystrix断路器基于滑动窗口算法
隔离:线程池隔离、信号量隔离
应用场景:资源服务化 、业务动态降级、分组流量切换
选型:Apollo
近期文章:
5种分布式锁实现的对比?
Java并发编程学习体系
java8 Stream 史上最全总结
Java 网络编程"初探"
redis 知识点总结
java 核心技术学习总结 (一)
spring中"投机取巧"地限制 用户同时登陆
如果你喜欢本文
请长按二维码,关注 乔志勇笔记