shan
2023-09-25
来自河南
分层存储总结 分层存储指的是冷热数据分开存储,在数据写入的时候将数据写入本地,然后通过一定策略将一部分数据上传到远程分布式文件系统中,在消费的时候,再从远程拉取数据到本地,以此降低本地磁盘的负载压力和存储成本。 不过远程存储存在以下问题: (1)远程存储性能比本地硬盘低; (2)引入第三方存储,会影响系统的稳定性; 至于是否需要分层存储,一般结合业务场景,如果是大流量、对稳定性要求不高的场景中,分层存储是一个很重要的优化手段,如果对可靠性、稳定性要求较高的场景,则不适合分层存储。 分层存储需要关注的几个地方 1. 远程文件系统选择 各个云厂商提供的对象存储服务比较适合分层存储,稳定性和成本都比较有优势,如果自建服务,一般选择HDFS。 2. 生产性能优化 如果异步写入,对于生产端一般影响不大。如果是同步写入,性能会受到影响。 3. 消费者 消费者主要的问题在于,如果消费的数据不在本地,需要从远程获取,一般有以下两种方案: (1)远程文件先下载到本地(可以设计一个预读算法,将数据提前下载到本地),消费时从本地读取; (2)数据在本地就在本地读取,在远程就直接流式从远程读取; 4. 隔离性 隔离性指的是避免远程上传下载文件过度挤占资源,影响正常消息的生产与消费。有以下几点可以参考: (1)CPU进行绑核操作,比如将上传下载文件的线程绑定到一个固定的CPU上; (2)对于内存方面,可以通过堆外内存、DirectID等手段控制,避免占用过多内存; (3)对于网卡方面,可以控制同一时间上传上线文件的速度,避免网卡带宽资源用光; (4)硬盘IO方面,可以通过扩容存储空间解决; 5. 回滚 回滚指的是当远程存储出现问题时,需要将集群切回到非分层的状态,对于消息有以下两种处理方案: (1)新增数据不再上传到远程存储,保存在本地; (2)消费的数据在远程存储时,给出提示,保证只允许消费在本地的数据;
展开