我有服务端 A 每天半夜需要从 mysql 加载大量数据到内存 数据格式大约为 map<int64, set<int32>> 加载完数据大概要 5,6 分钟
如果程序挂逼 也需要花费 5,6 分钟加载数据 相当于会停止服务 5,6 分钟
为了解决这个问题,另外搞了一个小服务 B 作用就是每天半夜把 mysql 的数据生成到内存映射文件(5 个 GB 左右)
服务 A 需要加载数据时就直接加载内存映射文件 速度快 然后服务 A 直接操作内存映射文件
一直运行 也没出过什么错误 但想想 好像没必要使用内存映射文件:
- 映射文件只读不修改
- 数据只有 5G 左右,完全可以放到物理内存
我现在的想法是:服务B生成内存映射文件, 服务A从内存映射文件加载数据物理内存,然后关闭文件