Druid索引好的数据存放在Historical节点中。随着数据规模扩大,分离数据的需求日益迫切。Druid提供Tier机制与数据加载Rule机制,可实现灵活的数据分布。
Tier机制将Historical节点分组,默认所有节点属于“_default_tier”,可通过配置文件中的“druid.server.tier”参数指定分组。Tier仅针对Historical节点,与datasource无关。
Rule机制是数据分离的基础,针对datasource生效。Rule分Load与Drop两大类,每类又分Period、Interval和Forever三种。应用Rule遵循两个原则:按顺序执行;每条数据只能应用一条Rule。
典型应用场景:
冷热数据分离:将热数据放在配置较好的机器,冷数据放在较差机器。通过Tier分组并配置Rule,近期数据加载到hot组,其余加载到默认组。同时可调整冷数据节点的缓存容量。
备份数据分离:为保证高可用,将数据分布到不同Tier的机器上,配置多副本Rule,避免单机架故障导致不可用。
业务数据分离:优先保障重要业务,将不同业务分配至不同Tier,重要业务配置更多机器资源。
加载部分数据:报表类业务通常只关注近期数据,可配置Rule仅保留最近数据,其余从Historical中删除(Deep Storage中数据保留,删除Rule后可重新加载)。注意Rule顺序,避免误删全部数据。
数据分离对查询效率的影响:Druid通过操作系统Buffer减少IO,并采用分布式查询树增加并行度。数据分离会降低Historical节点并行度,也可能破坏热数据常驻内存的原则,从而影响查询效率。尤其在集群规模较小时影响较大,因此分离数据需谨慎。