
关键字:机械盘、千万级、高并发
同时满足这三个条件可能很苛刻,机械盘对于大量小文件(1Mb 左右)高并发简直是噩梦,但 ssd 做静态服务器有点奢侈,这方面有没有开源的存储解决方案?
1 siyiye 2020-03-11 09:28:37 +08:00 支持千万级小文件存储&高并发但 ssd 做静态服务器有点奢侈。 所以我觉得你也不用折腾了 |
3 lcy630409 2020-03-11 09:33:16 +08:00 你这个需求不就是 CDN 正好解决的么.... |
4 janxin 2020-03-11 09:34:36 +08:00 全部读入内存,不加硬盘就加内存呗 |
5 sadfQED2 2020-03-11 09:34:47 +08:00 via Android 都到千万级了,ssd 的钱都给不起吗 |
6 FaceBug 2020-03-11 09:42:30 +08:00 看你并发量咯,如果持续很大,每个文件都是热文件,那就只能 SSD 了,都这个规模了还等啥br /> 如果每天都只是部分数据存取量很大,可以加个 SSD 的缓存盘 |
7 Xusually 2020-03-11 09:45:10 +08:00 必须机械盘的话,淘宝买点便宜的准系统,内存大些,cpu 无所谓,台数多一些,搭分布式的,比如 fastdfs 之类的,分散压力。 |
8 miclinux 2020-03-11 09:46:07 +08:00 via Android 硬盘不够内存来凑。。。 |
9 lvzhiqiang 2020-03-11 09:47:16 +08:00 拖拉机怎么优化也不可能快过法拉利吧。。 |
10 cydian 2020-03-11 09:49:05 +08:00 SSD 解君愁吧。 只读取大量小文件,机械硬盘不仅慢还寿命短。 两者算下来差不了多少。 |
11 alphatoad 2020-03-11 09:50:19 +08:00 via iPhone …page replacement algorithm? |
12 opengps 2020-03-11 09:52:15 +08:00 千万级小文件性能问题,这是对象存储能解决的问题。楼主可以搜下这个方向的关键词 |
13 tigerstudent 2020-03-11 10:01:39 +08:00 via Android SSD 现在还算奢侈品吗 |
14 rockyou12 2020-03-11 10:05:43 +08:00 软件反正是 minio 或者 ceph 这些?但机械硬盘小文件读写不管怎么样都很差,真压力大还是老实上 ssd 算了 |
15 90928yao 2020-03-11 10:09:05 +08:00 有个中国人写的基于 haystack 实现的对象存储 忘了叫啥了 |
16 z8zS4FW0JO2hWtFX 2020-03-11 10:25:53 +08:00 存 Mongodb 中试试,上家公司存图片就是这么玩的。 |
17 realpg PRO SSD 还奢侈? 我这种垃圾佬的服务器集群都全是 SSD 了…… 单台服务器成本几百元的巨量规模集群 |
18 nowgoo 2020-03-11 10:26:50 +08:00 |
19 realpg PRO 随便分层的解决问题 几十台垃圾的 768GB 内存的廉价服务器 然后二级热读缓存用光威 1.5TB/960GB/2TB 的分布式集群 密写一台服务器一块 PCI-E 密写分布 冷数据可靠存储用 8TB 乐视盘 这就是极端廉价(市价 1/10 )的超级存储集群 我这有 PB 级的集群 |
20 hutng 2020-03-11 10:38:57 +08:00 非企业级高性能 SSD 比机械也贵不了太多吧 |
21 carmark 2020-03-11 10:45:45 +08:00 |
23 qingpingbao 2020-03-11 10:57:50 +08:00 @90928yao go 写的 seaweedfs ?? |
24 carmark 2020-03-11 10:58:37 +08:00 |
25 zzzmh 2020-03-11 11:01:23 +08:00 要我说就别折腾了,找个便宜点的 oss 一步到位,服务器就安安心心放 html,估计访问量不大的时候一个月几十块一百块到顶了,访问量大的时候么你收入也起来了,例如申请个 adsense,绝对能抵消 oss 支出。目前性价比最高的应该是又拍云,加入又拍联盟能奖励一点流量费 |
26 Osk 2020-03-11 11:01:56 +08:00 via Android 不用 ssd 的原因? 如果是怕丢数据,且读操作占比多,可以用 ssd 缓存读,不缓存写,有很多现成方案,比如 lvm cache |
27 neurocomputing 2020-03-11 11:02:56 +08:00 高并发,高到多少? 每秒 1000 个文件(每个 1MB )的话( 1GB 10Gb ),机械硬盘(按 12Gb 算)的带宽都是问题了,组 raid 话,就算 raid 1,也顶多让并发能力增加不到 1 倍 |
28 zelin44913 2020-03-11 11:03:31 +08:00 考虑下 bcache + 软阵列 |
29 Reficul 2020-03-11 11:10:44 +08:00 BFS ? @realityone |
30 rockyou12 2020-03-11 11:23:56 +08:00 @carmark 直接看文档吧 https://docs.min.io/cn/distributed-minio-quickstart-guide.html 您说这些东西明显就是抬杠,对 minio 不了解。minio 本身就是兼容 aws 的 s3 对象存储接口,不存在什么改代码的,所有对象存储基本都是这套协议。至于其它的,所有系统都有这些问题,但看 minio 的用户量我觉得不会有实际的问题。 |
31 wmhx 2020-03-11 12:01:29 +08:00 hadoop 十分完美了. |
34 DonaidTrump 2020-03-11 13:05:38 +08:00 千万级的项目,ssd 费用都不给,这有点儿过分了 |
36 BlackBerry999 2020-03-11 13:41:57 +08:00 你这问题不在硬盘上,你需要多级的分布式缓存系统。 |
37 nrtEBH 2020-03-11 13:49:20 +08:00 单机的话 没戏 物理限制靠代码解决不了 多机分布式集群加 SSD 缓存是可以解决 很多方案 |
38 catcalse 2020-03-11 14:10:56 +08:00 试试阿里专门做的 小文件系统? |
39 encro 2020-03-11 14:18:40 +08:00 千万级 RMB/并发 /文件个数 /文件大小 /PV 还是其他? |
40 qiyuey 2020-03-11 14:20:23 +08:00 上云 |
41 rockyou12 2020-03-11 14:34:36 +08:00 @90928yao minio 的集群我确实也没深入研究,基本中用做 s3 网关,后端实际存储还是 nfs 或者 ceph 这些。但有状态服务的扩容基本上都挺麻烦的,生产要用基本是没有加个节点就完事的... 但总的来说 minio 已经是最快能搭建的存储服务了,ceph hdfs 这些光看架构设计都要昏了,实际部署更是要吐血 |
42 encro 2020-03-11 14:40:03 +08:00 Leveldb/Rocksdb/Accumulo 任何一个都支持 10 亿级别,支持压缩,快速读写。 几块企业机械盘,几千块都舍不得花? Leveldb/Rocksdb/Accumulo 简单比较 https://www.jianshu.com/p/4c57cd82ccde |
43 NeoChen 2020-03-11 14:41:14 +08:00 从楼主的标题里,看出了,业务很大,但是没钱,不但要机械硬盘,还要开源的免费解决方案。。。如果上 SSD 就要亏钱的节奏,那咱是不是考虑该放弃这个业务了。。。开个玩笑~ 看看业务上是不是还能再优化优化,如果小文件读写很多,机械盘物理条件不适配啊,否则只能想办法减少单盘的读写量了,能否区分高频低频,高频的用内存,中频用 SSD,低频用机械,分个轻重缓急。我觉得,就算有现成的开源解决方案也不一定适配你的业务需求,还是要从业务入手,分解需求,从而在降低费用的情况下,还保持较高的性能。 |
44 allenforrest 2020-03-11 15:56:26 +08:00 SeaweedFS |
45 Mithrandir 2020-03-11 16:29:43 +08:00 ceph 把块大小设置成 1m,然后使用 ssd 做个缓存即可 |
46 rrfeng 2020-03-11 16:30:22 +08:00 tfs 之流就是解决这个问题的。 |
47 pC0oc4EbCSsJUy4W 2020-03-11 17:05:27 +08:00 ceph,内存使劲加 |
48 fancy111 2020-03-11 17:10:23 +08:00 逗,千万级了都,你还用这机械盘?就算机械盘能支撑起来,带宽你也负担不起啊 |
49 kennylam777 2020-03-11 17:25:43 +08:00 了 Ceph 後,我也一句: SeaweedFS 及 Minio 都是玩具。 度用 ceph-ansible 一下 |
50 q149072205 2020-03-11 18:39:37 +08:00 可以 RAID 啊。做 RAID 10,再做分布式啊。完全无压力。 |
51 mumonitor 2020-03-11 19:01:35 +08:00 海量小文件只推荐用分布式文件系统,ceph/mogilefs 都可以,前面辅助于 nginx 就是比较通用的解法了。 |
52 Huozy 2020-03-11 19:09:05 +08:00 对象存储。机械硬盘存,ssd 是做类似缓存功能的 |
53 baixiangcpp 2020-03-11 21:01:35 +08:00 机械盘还想要高并发,搬搬手指头算一下也不可能 |
54 xyjincan 2020-03-11 21:40:36 +08:00 请求是随机的吗,hbase ? |
55 qibinghua 2020-03-11 21:51:51 +08:00 TFS 文件系统了解一下 |
56 dorothyREN 2020-03-11 23:34:16 +08:00 文件直接扔进内存里面,比 ssd 都快 |
57 1daydayde 2020-03-11 23:37:28 +08:00 via iPhone 都 50 多楼了还没有说 FastDFS 的,emmm 是现在用的人少了吗? |
58 abcdabcd987 2020-03-12 01:05:10 +08:00 |
59 xcstream 2020-03-12 01:45:35 +08:00 都千万级了,服务器硬件费用应该不算大头了 |
60 dongqihong 2020-03-12 09:41:53 +08:00 各大云厂商的对象存储才是你真正的靠谱选择 |
61 kejxp1993 2020-03-12 11:48:59 +08:00 via Android 按照 lz 单个文件 1m,千万个文件才 10t,所以最直接的办法,买几个廉价 ssd,最简单效果也最好,成本也比捣鼓服务器集群便宜。。 |
62 kejxp1993 2020-03-12 11:54:27 +08:00 via Android 如果文件读取有明显的热点的话,可以考虑大量机械硬盘加部分 ssd 缓存的方案。 |
63 gongxun0928 2020-03-13 09:14:13 +08:00 @kennylam777 seaweed 是玩具? 前两年在前司,seaweed 大概存储了几百亿的小文件,总的存储也有十多 p。 总体来说,比较稳定,0.76 版本。 |
64 gongxun0928 2020-03-13 09:23:19 +08:00 如果你对存储不是很熟悉,且不是强 posix 接口(open/read/wrtie)访问需求,譬如机器学习场景,需要 readdir 遍历的场景; seaweed 完美满足你的需求,且相对稳定。 ceph 这个东西庞大且不好维护,大部分人解决 ceph 出现问题的能力堪忧,举个例子,对新手来说,ceph 的 CRUSH 算法,在扩容的时候的不确定性,新手估计会踩坑(不平衡或者 io 被打满)。 当然如果你们有超过 3 个运维人员专职负责 ceph,你可以选择 ceph,毕竟大而全,ceph fs, ceph block, |