方案一:
- Segment元数据信息存储到mysql等关系型数据库时,针对每个Segment ID增加是否是热数据的字段。此外,设热数据判定规则,如近一天的数据,指定时间戳范围的数据,近几条数据或近几个segment等。
- Coordinator轮询zookeeper,获取新发布的segment,通过元数据存储的是否是热数据的segment信息,向不同的Historcial进行发布数据加载指令。如果为热数据,将segment一个副本加载到具备SSD的Historcial节点上,其他副本放到具备HHD的Historcial节点上。
- 当热数据变为冷数据的时候,再将热数据从SSD机器上迁移到HHD机器上。启用一个监控线程,当segment不满足热数据条件时,将元数据信息由true改为false,并通知持有该segment的historcial向存储冷数据的Historcial节点迁移。
方案二:
- middlemanager发布segment后,Coordinator轮询zookeeper,获取新发布的segment,判断该segment是否为热数据,如果该数据为热数据,其定向指定给某个Historcial节点加载和启用服务的指令。否则就指向其他Historcial节点。
- 当有新的热数据需要被加载到存储热数据的Historical节点上时,先将数据加载到该节点上,然后判断原有热数据是否仍具有热数据的条件,如果不具备,则将那些不具备热数据的segment迁移至其他Historcial节点上。
附件