各位大佬好,目前小弟手上有百万级的 Hash,约十亿个元素,格式如下:
00000001
|-key=a, val=2 字符:[1-20]-crc32 字符:整数 1:整数 2
|-key=b, val=2 字符:[1-20]-crc32 字符:整数 1:整数 2
...
|-key=z, val=2 字符:[1-20]-crc32 字符:整数 1:整数 2
00000002
|-key=aa, val=2 字符:[1-20]-crc32 字符:整数 1:整数 2
|-key=bb, val=2 字符:[1-20]-crc32 字符:整数 1:整数 2
...
|-key=zz, val=2 字符:[1-20]-crc32 字符:整数 1:整数 2
...
一个元素代表一个文件:
2 字符:代表所在的机器
[1-20]-crc32:代表目标所在文件
整数 1:代表目标在文件的起始位置
整数 2:代表文件长度
---例子---
ab:9-cbdg3323:1200:500
每个 Hash 的 key 大概在 100-5000 个。
目前场景读大于写(读约 500/s,写约 200/s ),方案用的是 ssdb,
ssdb 单线程 compact 的时候对服务影响太大,经常 loadavg 过载
加上另外,leveldb 层面似乎更适合读大于写的场景(还有部署机器也不一定是 SSD 硬盘)。
对比过市面上类似产品:Pika\Ledis\redix(主要对比了不同存储引擎),似乎效果相差不大。
成本问题,目前 ssdb 已经快 100G 了,
再加上要求分布式的话,如果能把这 十亿个元素 x5 倍 存在可观的 Redis 中,也可以考虑。
SO. 求大佬推荐一下适合的产品(或技术方案)。
按 id 水平拆表存 mysql,将元素里的数据拆开来存储、索引.
再加前置缓存...
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.