• 请不要在回答技术问题时复制粘贴 AI 生成的内容
kisshere
V2EX  ›  程序员

机械硬盘架设静态服务器,支持千万级小文件存储&高并发,有没有开源的解决方案?

  •  
  •   kisshere · Mar 11, 2020 · 11188 views
    This topic created in 2435 days ago, the information mentioned may be changed or developed.

    关键字:机械盘、千万级、高并发

    同时满足这三个条件可能很苛刻,机械盘对于大量小文件(1Mb 左右)高并发简直是噩梦,但 ssd 做静态服务器有点奢侈,这方面有没有开源的存储解决方案?

    64 replies  •  2020-03-13 09:23:19 +08:00
    siyiye
    siyiye
    Mar 11, 2020❤️5
    1
    支持千万级小文件存储&高并发——但 ssd 做静态服务器有点奢侈。

    所以我觉得你也不用折腾了
    kisshere
    kisshere
    OP
    Mar 11, 2020
    2
    @siyiye 所以开贴求 V 站大神看有没有机械盘解决方案,实在不行只能上 ssd
    chengran630
    chengran630
    Mar 11, 2020❤️1
    3
    你这个需求不就是 CDN 正好解决的么....
    janxin
    janxin
    Mar 11, 2020❤️3
    4
    全部读入内存,不加硬盘就加内存呗
    sadfQED2
    sadfQED2
    Mar 11, 2020 via Android❤️1
    5
    都到千万级了,ssd 的钱都给不起吗
    FaceBug
    FaceBug
    Mar 11, 2020❤️1
    6
    看你并发量咯,如果持续很大,每个文件都是热文件,那就只能 SSD 了,都这个规模了还等啥

    如果每天都只是部分数据存取量很大,可以加个 SSD 的缓存盘
    Xusually
    Xusually
    Mar 11, 2020
    7
    必须机械盘的话,淘宝买点便宜的准系统,内存大些,cpu 无所谓,台数多一些,搭分布式的,比如 fastdfs 之类的,分散压力。
    miclinux
    miclinux
    Mar 11, 2020 via Android
    8
    硬盘不够内存来凑。。。
    lvzhiqiang
    lvzhiqiang
    Mar 11, 2020
    9
    拖拉机怎么优化也不可能快过法拉利吧。。
    cydian
    cydian
    Mar 11, 2020
    10
    SSD 解君愁吧。
    只读取大量小文件,机械硬盘不仅慢还寿命短。
    两者算下来差不了多少。
    alphatoad
    alphatoad
    Mar 11, 2020 via iPhone
    11
    …page replacement algorithm?
    opengps
    opengps
    Mar 11, 2020
    12
    千万级小文件性能问题,这是对象存储能解决的问题。楼主可以搜下这个方向的关键词
    Chichele
    Chichele
    Mar 11, 2020 via Android
    13
    SSD 现在还算奢侈品吗
    rockyou12
    rockyou12
    Mar 11, 2020
    14
    软件反正是 minio 或者 ceph 这些?但机械硬盘小文件读写不管怎么样都很差,真压力大还是老实上 ssd 算了
    90928yao
    90928yao
    Mar 11, 2020
    15
    有个中国人写的基于 haystack 实现的对象存储 忘了叫啥了
    z8zS4FW0JO2hWtFX
    z8zS4FW0JO2hWtFX
    Mar 11, 2020
    16
    存 Mongodb 中试试,上家公司存图片就是这么玩的。
    realpg
    realpg
    Mar 11, 2020
    17
    SSD 还奢侈?
    我这种垃圾佬的服务器集群都全是 SSD 了……
    单台服务器成本几百元的巨量规模集群
    realpg
    realpg
    Mar 11, 2020❤️3
    19
    随便分层的解决问题

    几十台垃圾的 768GB 内存的廉价服务器
    然后二级热读缓存用光威 1.5TB/960GB/2TB 的分布式集群
    密写一台服务器一块 PCI-E 密写分布
    冷数据可靠存储用 8TB 乐视盘

    这就是极端廉价(市价 1/10 )的超级存储集群
    我这有 PB 级的集群
    hutng
    hutng
    Mar 11, 2020
    20
    非企业级高性能 SSD 比机械也贵不了太多吧
    carmark
    carmark
    Mar 11, 2020
    21
    @rockyou12 这个 ceph 维护难度太大,minio 就是一个玩具

    @kisshere 海量小文件,上硬件当然可以解决一部分问题,但是从理论上需要分析具体场景,如果你这个小文件是类似图片场景的,那么有不少方案,比如 Haystack 架构,有不少实现比如 fastdfs 以及 seaweedfs,就是为这种场景设计的。

    不过这个是对象接口,不是文件接口,POSIX 文件系统对这种海量小文件就是噩梦。
    rockyou12
    rockyou12
    Mar 11, 2020
    22
    @carmark minio 可不是什么玩具,虽然是可以当玩具用,但是很完善的分布式存储方案
    qingpingbao
    qingpingbao
    Mar 11, 2020
    23
    @90928yao go 写的 seaweedfs ??
    carmark
    carmark
    Mar 11, 2020
    24
    @rockyou12 嗯,我说的不太严谨 。很早之前看过的,不知道现在的情况,想了解下:

    1. 目前哪家公司不改代码,直接上生产?
    2. 怎么做迁移?集群扩容?机器故障处理,磁盘故障处理?
    zzzmh
    zzzmh
    Mar 11, 2020
    25
    要我说就别折腾了,找个便宜点的 oss 一步到位,服务器就安安心心放 html,估计访问量不大的时候一个月几十块一百块到顶了,访问量大的时候么你收入也起来了,例如申请个 adsense,绝对能抵消 oss 支出。目前性价比最高的应该是又拍云,加入又拍联盟能奖励一点流量费
    Osk
    Osk
    Mar 11, 2020 via Android
    26
    不用 ssd 的原因?

    如果是怕丢数据,且读操作占比多,可以用 ssd 缓存读,不缓存写,有很多现成方案,比如 lvm cache
    neurocomputing
    neurocomputing
    Mar 11, 2020
    27
    高并发,高到多少? 每秒 1000 个文件(每个 1MB )的话( 1GB 10Gb ),机械硬盘(按 12Gb 算)的带宽都是问题了,组 raid 话,就算 raid 1,也顶多让并发能力增加不到 1 倍
    zelin44913
    zelin44913
    Mar 11, 2020
    28
    考虑下 bcache + 软阵列
    Reficul
    Reficul
    Mar 11, 2020
    29
    BFS ? @realityone
    rockyou12
    rockyou12
    Mar 11, 2020❤️2
    30
    @carmark 直接看文档吧 https://docs.min.io/cn/distributed-minio-quickstart-guide.html
    您说这些东西明显就是抬杠,对 minio 不了解。minio 本身就是兼容 aws 的 s3 对象存储接口,不存在什么改代码的,所有对象存储基本都是这套协议。至于其它的,所有系统都有这些问题,但看 minio 的用户量我觉得不会有实际的问题。
    wmhx
    wmhx
    Mar 11, 2020
    31
    hadoop 十分完美了.
    ericgui
    ericgui
    Mar 11, 2020
    32
    @realpg 老铁,你自己在家建服务器么
    realpg
    realpg
    Mar 11, 2020
    33
    @ericgui #32
    闹呢
    我有九个数据中心 不是九个房间,是九个建筑,分布在省内
    DonaidTrump
    DonaidTrump
    Mar 11, 2020
    34
    千万级的项目,ssd 费用都不给,这有点儿过分了
    90928yao
    90928yao
    Mar 11, 2020
    35
    @rockyou12 minio 集群扩容 确实有问题。。。只能通过增加集群的方式的,然后后端自己去路由到特地集群
    BlackBerry999
    BlackBerry999
    Mar 11, 2020
    36
    你这问题不在硬盘上,你需要多级的分布式缓存系统。
    nrtEBH
    nrtEBH
    Mar 11, 2020
    37
    单机的话 没戏 物理限制靠代码解决不了
    多机分布式集群加 SSD 缓存是可以解决 很多方案
    catcalse
    catcalse
    Mar 11, 2020
    38
    试试阿里专门做的 小文件系统?
    encro
    encro
    Mar 11, 2020
    39
    千万级 RMB/并发 /文件个数 /文件大小 /PV 还是其他?
    qiyuey
    qiyuey
    Mar 11, 2020
    40
    上云
    rockyou12
    rockyou12
    Mar 11, 2020
    41
    @90928yao minio 的集群我确实也没深入研究,基本中用做 s3 网关,后端实际存储还是 nfs 或者 ceph 这些。但有状态服务的扩容基本上都挺麻烦的,生产要用基本是没有加个节点就完事的...

    但总的来说 minio 已经是最快能搭建的存储服务了,ceph hdfs 这些光看架构设计都要昏了,实际部署更是要吐血
    encro
    encro
    Mar 11, 2020
    42
    Leveldb/Rocksdb/Accumulo

    任何一个都支持 10 亿级别,支持压缩,快速读写。

    几块企业机械盘,几千块都舍不得花?

    Leveldb/Rocksdb/Accumulo 简单比较
    https://www.jianshu.com/p/4c57cd82ccde
    NeoChen
    NeoChen
    Mar 11, 2020
    43
    从楼主的标题里,看出了,业务很大,但是没钱,不但要机械硬盘,还要开源的免费解决方案。。。如果上 SSD 就要亏钱的节奏,那咱是不是考虑该放弃这个业务了。。。开个玩笑~

    看看业务上是不是还能再优化优化,如果小文件读写很多,机械盘物理条件不适配啊,否则只能想办法减少单盘的读写量了,能否区分高频低频,高频的用内存,中频用 SSD,低频用机械,分个轻重缓急。我觉得,就算有现成的开源解决方案也不一定适配你的业务需求,还是要从业务入手,分解需求,从而在降低费用的情况下,还保持较高的性能。
    allenforrest
    allenforrest
    Mar 11, 2020
    44
    SeaweedFS
    Mithrandir
    Mithrandir
    Mar 11, 2020
    45
    ceph 把块大小设置成 1m,然后使用 ssd 做个缓存即可
    rrfeng
    rrfeng
    Mar 11, 2020
    46
    tfs 之流就是解决这个问题的。
    pC0oc4EbCSsJUy4W
    pC0oc4EbCSsJUy4W
    Mar 11, 2020
    47
    ceph,内存使劲加
    fancy111
    fancy111
    Mar 11, 2020
    48
    逗,千万级了都,你还用这机械盘?就算机械盘能支撑起来,带宽你也负担不起啊
    kennylam777
    kennylam777
    Mar 11, 2020
    49
    試過了 Ceph 後,我也說一句: SeaweedFS 及 Minio 都是玩具。

    維護難度用 ceph-ansible 減輕一下
    q149072205
    q149072205
    Mar 11, 2020
    50
    可以 RAID 啊。做 RAID 10,再做分布式啊。完全无压力。
    mumonitor
    mumonitor
    Mar 11, 2020
    51
    海量小文件只推荐用分布式文件系统,ceph/mogilefs 都可以,前面辅助于 nginx 就是比较通用的解法了。
    Huozy
    Huozy
    Mar 11, 2020
    52
    对象存储。机械硬盘存,ssd 是做类似缓存功能的
    baixiangcpp
    baixiangcpp
    Mar 11, 2020
    53
    机械盘还想要高并发,搬搬手指头算一下也不可能
    xyjincan
    xyjincan
    Mar 11, 2020
    54
    请求是随机的吗,hbase ?
    qibinghua
    qibinghua
    Mar 11, 2020
    55
    TFS 文件系统了解一下
    dorothyREN
    dorothyREN
    Mar 11, 2020
    56
    文件直接扔进内存里面,比 ssd 都快
    1daydayde
    1daydayde
    Mar 11, 2020 via iPhone
    57
    都 50 多楼了还没有说 FastDFS 的,emmm 是现在用的人少了吗?
    xcstream
    xcstream
    Mar 12, 2020
    59
    都千万级了,服务器硬件费用应该不算大头了
    dongqihong
    dongqihong
    Mar 12, 2020
    60
    各大云厂商的对象存储才是你真正的靠谱选择
    kejxp1993
    kejxp1993
    Mar 12, 2020 via Android
    61
    按照 lz 单个文件 1m,千万个文件才 10t,所以最直接的办法,买几个廉价 ssd,最简单效果也最好,成本也比捣鼓服务器集群便宜。。
    kejxp1993
    kejxp1993
    Mar 12, 2020 via Android
    62
    如果文件读取有明显的热点的话,可以考虑大量机械硬盘加部分 ssd 缓存的方案。
    gongxun0928
    gongxun0928
    Mar 13, 2020
    63
    @kennylam777 seaweed 是玩具? 前两年在前司,seaweed 大概存储了几百亿的小文件,总的存储也有十多 p。 总体来说,比较稳定,0.76 版本。
    gongxun0928
    gongxun0928
    Mar 13, 2020
    64
    如果你对存储不是很熟悉,且不是强 posix 接口(open/read/wrtie)访问需求,譬如机器学习场景,需要 readdir 遍历的场景; seaweed 完美满足你的需求,且相对稳定。 ceph 这个东西庞大且不好维护,大部分人解决 ceph 出现问题的能力堪忧,举个例子,对新手来说,ceph 的 CRUSH 算法,在扩容的时候的不确定性,新手估计会踩坑(不平衡或者 io 被打满)。 当然如果你们有超过 3 个运维人员专职负责 ceph,你可以选择 ceph,毕竟大而全,ceph fs, ceph block,
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   923 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 98ms · UTC 20:42 · PVG 04:42 · LAX 12:42 · JFK 15:42
    ♥ Do have faith in what you're doing.