惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

L
LINUX DO - 热门话题
Engineering at Meta
Engineering at Meta
GbyAI
GbyAI
Microsoft Security Blog
Microsoft Security Blog
月光博客
月光博客
Jina AI
Jina AI
博客园_首页
Google DeepMind News
Google DeepMind News
T
Tailwind CSS Blog
博客园 - 司徒正美
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
腾讯CDC
Recorded Future
Recorded Future
大猫的无限游戏
大猫的无限游戏
G
Google Developers Blog
D
Docker
罗磊的独立博客
美团技术团队
爱范儿
爱范儿
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
云风的 BLOG
云风的 BLOG
宝玉的分享
宝玉的分享
J
Java Code Geeks
U
Unit 42
Hugging Face - Blog
Hugging Face - Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
SecWiki News
SecWiki News
T
Troy Hunt's Blog
H
Heimdal Security Blog
The Cloudflare Blog
Webroot Blog
Webroot Blog
aimingoo的专栏
aimingoo的专栏
Security Archives - TechRepublic
Security Archives - TechRepublic
F
Full Disclosure
AI
AI
Recent Commits to openclaw:main
Recent Commits to openclaw:main
Last Week in AI
Last Week in AI
T
The Exploit Database - CXSecurity.com
V
V2EX
Spread Privacy
Spread Privacy
M
MIT News - Artificial intelligence
量子位
Y
Y Combinator Blog
阮一峰的网络日志
阮一峰的网络日志
NISL@THU
NISL@THU
Hacker News: Ask HN
Hacker News: Ask HN
The GitHub Blog
The GitHub Blog
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
N
News and Events Feed by Topic
Attack and Defense Labs
Attack and Defense Labs

博客园 - Q.Lee.lulu

aProxy: 带认证授权和权限控制的反向代理 Nginx做前端Proxy时TIME_WAIT过多的问题 Cubieboard通过aria2和minidlna来架设家庭媒体中心 与IT&码农有关的电影和记录片 golang与node.js的http模块性能对比测试(go1) 用OpenCv来做人脸识别 linux下SublimeText的中文输入法问题之解决方案 golang与node.js的http对比测试 作为Web开发人员,我为什么喜欢Google Chrome浏览器 sqlalchemy在web.py中的session使用 web.py大文件下载 Python和Node.js支持尾递归吗? 一道JavaScript面试题(setTimeout) 用Eclipse调试Node.js代码 Javascript中的类数组对象 Javascript正则分组命名 抛弃Fastcgi,用uwsgi来部署你的Django程序吧 Node.js:用JavaScript写服务器端程序-介绍并写个MVC框架 FaWave(发微)-Chrome上的多微博全能插件
小文件、nginx、Redis、Moosefs
Q.Lee.lulu · 2011-07-13 · via 博客园 - Q.Lee.lulu

现在有3KW的数据,单条数据都很小的,如果按key-value来看的话,key就是32位的MD5字符串,value按平均算大概是100字节左右。

现在需要将这些数据做缓存以在高并非的时候依然可以快速响应。
因为这些数据基本没有冷热数据之分,所以需要将全部数据都放到缓存中。

1、直接生成静态文件,利用nginx对静态文件的高效做静态缓存。

    • 当时服务器硬件资源有限,所以就采用这种方式,一直源用至今。
    • 服务器间通过NFS来共享
    • 太多小文件,不方便管理
    • NFS不方便运维与扩展
    • 文件内容很小(100字节左右),3KW大概就是2.5G大小左右
      • 不过文件存储的时候和硬盘分区的族大小有关,在这里磁盘分区的族大小为8K,所以尽管文件内容只有100字节,但是实际存储到磁盘上的时候单个文件其实是8K
      • 所以3KW的文件世界占的磁盘空间大约为:200G左右(严重浪费空间啊

2、Redis(V2.2.11)【KV数据库】

    • 听同事说开启VM会使性能急剧下降,所以基本无视VM,数据全放内存。
    • key为32位MD5字符串
    • 测试数据:10W数据大概占内存20M
    • 测试数据:500W数据大概占内存1G,持久化的rdb数据文件大概350M
    • 推算3KW数据:内存6G,持久化的rdb数据文件大概为2G(压缩了?)
    • 因为Redis在持久化的时候内存会加倍,和考虑到数据的增长,所以需要1台20G内存的机器基本就没问题了(容灾啥的另算)。
    • Redis非常快,如果硬件条件没问题,基本选这个最好了。

3、Moosefs(MFS)【分布式文件存储系统】

    • mfs支持NFS的方式mount到本地直接操作(如使用mfs,则现在的架构基本不用改)
    • 最基本的需要一台主控服务器(Master Server)、一台数据服务器(Chunk Server)
    • 文件和目录的索引需要全部加载到主控服务器的内存中,所以对主控服务器的内存有一定的要求
    • 写入30W文件,到20W的时候写入就开始下降得厉害了(我的5400转的笔记本硬盘)
    • 30W文件,4W目录,主控服务器占用大概120M内存
    • 文件存储方式貌似和普遍的文件一样单个存储的(不确定),30W文件大概占了2.4G的磁盘空间(同样是8K一个文件)。
    • 小文件一样很多,不方便维护与迁移(不知是否我设置不对?)。
    • 内存、硬盘都占用得比较多,而且性能相对来说不是很出众。
    • 所以这个基本不考虑了。