Sentinel的原则非常简单:根据对应资源配置的规则来为资源执行相应的限流/降级/负载保护策略。在Sentinel中资源定义和规则配置是分离的。用户先通过SentinelAPI给对应的业务逻辑定义资源(埋点),然后可以在需要的时候配置规则。埋点方式有两种:try-catch方式(通过SphU.entry())。可以看出,实际上sentinel的核心原理就是:为每个资源创建一条链,链上包含一系列的slot,这些slot分两部分,前一部分slot用于做各种统计,后一部分slot基于前一部分slot的统计结果,做出相应的流控逻辑sentinel的数据统计是基于Node结构来做,首先看下四种Node的类结构。
Sentinel提供多种流量控制规则,如快速失败、WarmUp和排队等待,灵活调整系统响应策略。总之,Sentinel是一款强大且全面的流量控制和防护工具,确保微服务系统在高并发、大流量环境下稳定运行。完整代码可在仓库gitee.com/cunzaizhe/xia或github.com/tigerleeli/x查找。排队等待:匀速排队,让请求匀速通过流控模式之关联限流:关联的资源调用达到阈值时限流自己,如用户注册接口,需要调用身份证校验接口,如果身份证校验接口请求达到阈值,使用关联,可以对用户注册接口进行限流。Sentinel流量控制:关联模式、链路模式、预热。
原理:当主节点出现故障时,由RedisSentinel自动完成故障发现和转移,并通知应用方,实现高可用性。其实整个过程只需要一个哨兵节点来完成,首先使用Raft算法(选举算法)实现选举机制,选出一个哨兵节点来完成转移和通知任务,每个哨兵节点每,会向主节点和从节点发送info命令获取最拓扑结构图。对于RedLock实现原理是:超过半数Redis节点加锁成功之后才能算成功,否则返回false,和Zookeeper的
暂无评论内容