搜狐首页 科技 宫主大人2

手机搜狐

SOHU.COM

Druid数据规划

Druid索引好的数据放在Historical中,随着数据规模的扩大,分离数据的需求逐渐变得迫切。Druid提供了Tier机制与数据加载Rule机制,通过它们能很好的将数据进行分离,从而达到灵活的分布数据的目的。

Tier机制

Tier机制的作用是将Historical节点进行分组。默认情况下所有的Historical节点属于语默认的“_default_tier”分组。但是我们能通过Historical配置文件中的“druid.server.tier”参数来指定分组。另外请注意Tier只针对Historical节点,而与datasource无关。

数据加载Rule机制

设置了Tier之后,再给Tier添加对应的数据加载Rule,就能实现数据分离的目的。数据加载Rule机制是进行数据分离的基础,也是本文的重点。

Rule主要分两大类Load与Drop,每个大类有细分为Period、Interval和Forever三种。其中Period的意思是最近的一段时间,比如最近一天,随着时间的推移这段时间内的数据也会更迭。Interval和Forever分别指固定时间段与整个数据源的生命周期。

与Tier不同,Rule都是针对datasource的。比如我们给datasource1设置了一些Rule,这些Rule只针对datasource1的数据生效,对其它datasource没有影响。

Druid应用Rule遵循两个原则:(1)按顺序;(2)数据只能应用一条Rule。为了更好的解释它们,请看以下示例:

上例中分别应用了三条Rule到三个Tier中,这三条Rule组合后的意思是:将最近一天的数据加载到hot分组中,后两天的数据加载到cold分组中,剩下的数据加载到default分组中。

第一天(当前天)的数据很好理解应用Rule1,数据被加载到hot分组所在的Historical中。因为第一天的数据已经被应用了Rule1,所以Rule2对第一天的数据失效,所以只有第二第三天的数据被加载到cold分组的Historical中。同理前三天的数据已经应用了Rule,只有剩余的数据应用Rule3,加载到了default分组的Historical中。

随着时间的推移,新的一天的数据变成了第一天,它们被加载到hot分组的Historical中,老的第一天数据被迁移到cold分组的Historical中,同理cold分组前移一天的数据到default分组的Historical中。

精选