[RocksDB剖析系列]|[RocksDB剖析系列] Remote Compaction
【[RocksDB剖析系列]|[RocksDB剖析系列] Remote Compaction】参考:
- https://github.com/facebook/r...
- https://zhuanlan.zhihu.com/p/...
文章图片
Schedule 第一步是数据库触发Compaction,它不会在本地进行Compaction,而是在
CompactionService
中发送 Compaction信息。用户需要实现CompactionService::Start()
,来发送Compaction信息给远端进程,从而调度CompactionCompact remote的Compaction Worker需要运行使用发来的Compaction信息运行
DB::OpenAndCompact()
。Worker会在只读模式下进行Compact,它不能修改LSM Tree,而是将Compact的结果放在一个暂时的位置。Return Result 当Compaction结束后,需要向原先的那台db返回结果,包含Compact的SST的元数据和一些internal的信息,与调度环节中类似的,此处两台机器的通信需要被实现。
Install & Purge 原db通过
CompactionService::WaitForComplete()
等待结果返回,结果应该传入该函数并返回。在这之后,如果暂时工作区和db不在同一个文件系统上,需要先把暂时工作区的文件copy过去,然后再做重命名。文章图片
推荐阅读
- 【欢喜是你·三宅系列①】⑶
- 你不可不知的真相系列之科学
- 人脸识别|【人脸识别系列】| 实现自动化妆
- 2018-06-13金句系列7(金句结构-改编古现代诗词)
- Unity和Android通信系列文章2——扩展UnityPlayerActivity
- 乡野村趣系列之烧仙草
- Java内存泄漏分析系列之二(jstack生成的Thread|Java内存泄漏分析系列之二:jstack生成的Thread Dump日志结构解析)
- 15、IDEA学习系列之其他设置(生成javadoc、缓存和索引的清理等)
- 【年终激励系列】之五(年终奖如何与考核紧密相连)
- Spring|Spring 框架之 AOP 原理剖析已经出炉!!!预定的童鞋可以识别下发二维码去看了