关键字:机械盘、千万级、高并发
同时满足这三个条件可能很苛刻,机械盘对于大量小文件(1Mb 左右)高并发简直是噩梦,但 ssd 做静态服务器有点奢侈,这方面有没有开源的存储解决方案?
1
siyiye 2020-03-11 09:28:37 +08:00 5
支持千万级小文件存储&高并发——但 ssd 做静态服务器有点奢侈。
所以我觉得你也不用折腾了 |
3
lcy630409 2020-03-11 09:33:16 +08:00 1
你这个需求不就是 CDN 正好解决的么....
|
4
janxin 2020-03-11 09:34:36 +08:00 3
全部读入内存,不加硬盘就加内存呗
|
5
sadfQED2 2020-03-11 09:34:47 +08:00 via Android 1
都到千万级了,ssd 的钱都给不起吗
|
6
FaceBug 2020-03-11 09:42:30 +08:00 1
看你并发量咯,如果持续很大,每个文件都是热文件,那就只能 SSD 了,都这个规模了还等啥
如果每天都只是部分数据存取量很大,可以加个 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
oahzuw 2020-03-11 10:25:53 +08:00
存 Mongodb 中试试,上家公司存图片就是这么玩的。
|
17
realpg 2020-03-11 10:25:56 +08:00
SSD 还奢侈?
我这种垃圾佬的服务器集群都全是 SSD 了…… 单台服务器成本几百元的巨量规模集群 |
18
nowgoo 2020-03-11 10:26:50 +08:00
|
19
realpg 2020-03-11 10:28:23 +08:00 3
随便分层的解决问题
几十台垃圾的 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 2
@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
tulongtou 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
0312birdzhang 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,
|