知识点排查

一、sentinel限流底层原理
(1)资源的封装Entry
(2)每个资源对应一个责任链slotChain,通过chainMap存储对应关系
(3)NodeSelectorSlot,收集资源的调用路径,以树状结构存储起来,也是调用链的根节点
(4)ClusterBuilderSlot,生成统计数据结构ClusterNode并传给StatisticSlot,ClusterNode保持资源运行统计信息以及原始调用者统计信息列表
(5)StatisticSlot,用于统计所有的实时数据,是后面链路上slot的数据基础
(6)调用FlowSlot,DegradeSlot等拦截Slot进行降级和熔断等策略判断
(7)对于StatisticSlot实现,利用滑动时间窗口,通过一个环形数组,以数组元素的形式分割成多个时间片,对每个时间片进行统计,并可以聚合汇总成一个时间段
在这里插入图片描述
二、一致性hash算法
传统hash算法通过对key的hash运算得到一个hash值,对服务器数取模后得到服务器编号,但当服务器数量变化时,会导致缓存全部不可用。
一致性hash创建了一个hash环,上面有2的32次方个槽点,将key的hash值与2的32次方取模,结果映射到hash环上,从该点出发,顺时针遇到的第一个服务器即存储服务器。此时增加服务器数量时,只会使新节点和前一个节点之间的数据失效。
为解决hash偏斜的问题,通过增加节点数量,解决服务器节点分布不均的问题,即为服务器创建虚拟节点,使落下虚拟节点上的数据,存入对应的服务器上。
三、布隆过滤器
主要用于解决缓存穿透问题,用来判断元素一定不存在或者可能存在。实际上是一个大型二进制数组和+多个无偏hash函数(能把元素hash值计算的比较均匀),存放元素时,计算出三个无偏hash函数,映射到二进制数组上,比如将位置置为1,。查询元素时,同样计算出三个无偏hash函数,如果对应位置上都是1,则元素可能存在,如果有0,则元素肯定不存在。
四、http三次握手,
(1)客户端发送SYN报文,并置发送序号为X,进入SYN-SENT状态
(2)服务端收到后发送SYN+ACK报文,并置发送序号为Y,确认序号为X+1,进入SYN-RCEIVED状态
(3)客户端检查ACK是否为X+1,并发送ACK报文,ACK置为Y+1,服务端检查ACK为Y+1后建立连接,进入ESTABLISHED状态
五、http四次挥手
(1)客户端发送FIN报文,进入FIN_WAIT_1状态
(2)服务端返回一个ACK,进入CLOSE_WAIT状态
(3)服务端发送一个FIN,进入LAST_ACK状态
(4)客户端收到后,进入TIME_WAIT状态,等待两个最长报文生存时间后,发送ACK给服务端,进入CLOSED状态
六、四次挥手等待2MSL的作用
保证所有已失效的报文都消失,防止关闭连接前发出的失效报文对新连接造成影响
七、Gateway底层原理
本质上是一个过滤器,是一种以Reactor为基础的响应式Web服务,基于WebFlux框架,请求调用是异步非阻塞的,减少的IO阻塞时间,提高了系统吞吐量。默认的容器是NettyWebServer。
八、倒排索引
通过值去找文件,主要由单词词典和倒排文件组成。单词词典由文档集合中出现的所有单词构成的字符串集合,记录了指向倒排列表(单词的关联文档)的指针,倒排文件是存储倒排列表的物理文件。ES中的词典用的就是FST(有限向量转换器)
九、ShardingShpere原理
(1)SQL解析,解析成抽象语法树,标记出可能需要改写的位置
(2)查询优化
(3)SQL路由,根据库表的分片策略,生成路由路径,携带分片键走分片路由,不携带则走广播路由
(4)SQL改写,将用户面向逻辑库表的SQL语句,改写为在真实数据库上可以正确执行的语句
(5)SQL执行
(6)结果归并
十、SPI(Service Provider Interface)机制
作用:获取接口下的所有实现类
使用:META-INF/services/目录下创建一个以服务接口全路径命名的文件,文件里添加接口实现类的全路径名,然后通过ServiceLoader.load方法获取接口所有实现类
十一、NIO
https://blog.csdn.net/dingchengyu/article/details/115586229
十二、高可用性保障
(1)kafka,每个Partion存在一主多副本,所有broker会选择出一个Controller,负责Partion的Leader选举以及Replica的重新分配。当Broker故障时,在ZK上对应的znode会自动被删除,zk会触发controller注册在该节点的watcher,controller从ZK上获取宕机Broker上的所有Partition,并从ISR中选择幸存的Broker作为新的Leader,并通知给所有Broker
(2)redis
1、哨兵模式下,哨兵检测到master宕机,检测到的哨兵发起投票,选择出一个哨兵执行主备切换操作,根据slave的优先级,同步进度等
2、集群模式,slave发现自己的master变为Fail状态时,发起选举,广播消息给集群中的其他节点,其他节点收到后,只有master响应,收到过半master的同意后视为选举成功。通过随机延迟避免slave同时发起选举,同步数据越新的slave,理论上会优先发起选举。
(3)mongo
具有投票权的节点之间两两互相发送心跳
当5次心跳未收到时判断为节点失联
如果主节点失联,从节点会发起选举,选出新的主节点
如果从节点失联,不发生新的选举
选举算法:RAFT一致性算法。成功的必要条件是大多数投票节点存活
副本集中最多可以有50个节点,但具有投票权的节点最多7个
十三、Kafka
(1)KafkaProducer
1、获取 topic 的分区列表,如果本地没有该topic的分区信息,则需要向远端 broker 获取。
2、根据分区负载算法计算本次消息发送该发往的分区。
3、将消息追加到缓存区,如果当前缓存区已写满或创建了一个新的缓存区,则唤醒 Sender(消息发送线程),将缓存区中的消息发送到 broker 服务器,最终返回 future。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值