Selector
介绍
什么是 Selector?顾名思义,它允许用户从给定的 namespace 和 context 中选择 Items。有一个相关的 trait,也叫做 Selector,其定义可以在这里找到。
在 Metasrv 中存在一个特定的场景。当 Frontend 向 Metasrv 发送建表请求时,Metasrv 会创建一个路由表(表的创建细节不在这里赘述)。在创建路由表时,Metasrv 需要选择适当的 Datanodes,这时候就需要用到 Selector。
Selector 类型
Metasrv 目前提供以下几种类型的 Selectors:
LeasebasedSelector
LeasebasedSelector 从所有可用的(也就是在租约期间内)Datanode 中随机选择,其特点是简单和快速。
LoadBasedSelector
LoadBasedSelector 按照负载来选择,负载值则由每个 Datanode 上的 region 数量决定,较少的 region 表示较低的负载,LoadBasedSelector 优先选择低负载的 Datanode。