HBase限流机制源码分析

本文深入剖析了HBase的限流机制,从MasterQuotaManager的启动与监听,到Quota的创建、缓存管理和更新。介绍了quota如何在namespace、table和user层面生效,以及RegionServerQuotaManager如何维护和检查配额。当请求超过限额时,系统会抛出ThrottlingException异常。限流规则主要针对单位时间的请求数和请求量,配额会在特定间隔自动refill。建议根据实际需求调整限流策略,如区分Read和Write,限制Scan请求,以及优化client配置以减轻服务端压力。
摘要由CSDN通过智能技术生成

master启动的时候会初始化MasterQuotaManager,并启动该manager;

MasterQuotaManager实现了RegionStateListener接口,可以监听region的状态变化,RegionStateListener接口中定义了三个事件,分别是onRegionSplit,onRegionSplitReverted,onRegionMerged。

MasterQuotaManager中包括了三把锁,分别是namespaceLocks、tableLocks和userLocks。

MasterQuotaManager中包括一个namespaceQuotaManger,namespaceQuotaManger用于在namespace下的table以及table region发生变化时,能够保持住namespace的quota不变。

用户的setQuota请求是路由到master上去执行的。

MasterQuotaManager负责quota表的创建管理,并根据用户命令在quota表中新增、修改或者删除数据,主要的方法就是setQuota(final SetQuotaRequest req),方法中由于使用NamedLock,因此对同一namespace、table和user,同一时刻只有一个修改可被执行。

Quota是被缓存在cache(一个ConcurrentHashMap的数据结构)中的,分别是namespaceQuotaCache、tableQuotaCache和userQuotaCache,由QuotaCache类管理,这个类的成员变量QuotaRefresherChore继承了ScheduledChore,会定期调度,默认的调度周期是5分钟(REFRESH_DEFAULT_PERIOD),

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值