facebook技术,本地精简版

   早上起来无事,随便百度了下,结果突然看到一篇关系facebook创新优化网站的技术文章,很是着迷,也有了一点体会,技术不是万能的神,我们要吸收,转化为对自己网站建设有用的东西,下面仅仅为本人的一写想法,仅供参考:

   1,看到facebook 采用了bigpipe大管道技术,就是加速网页加载速度的一种技术,其中就用到了平行处理html,js等,这个我们其实可以采用nginx的加强版 淘宝tengine就有类似的简单功能,我们小网站就不用考虑了直接选用tengine就ok,有自动合并处理ccs,html,js分发的功能。

  1,图片搜索优化,为了减低操作系统本身的搜索负担,facebook把多张图片+一个特殊的index程序=一个带索引功能的大文件。非常厉害的手段,这个可能不是一般人能设计出他们那么高效的程序的,我自己认为,只要合理的安排,控制,网站目录安排,控制一个文件夹中文件数量的大小就够了,毕竟本身的系统也是挺高效的,每次添加图片,超过规定的目录优化数量就,再添加一个新目录,追加下去。当然了,为了管理上的方便,可以加入到mysql中,但是最后还是要调用系统底层文件定位。至于一个目录放多少文件,一个文件多大为好呢,本人经验一个目录大文件5K左右,小文件10K左右,文件不管动态静态请控制在10K左右大小,不要超过100K,如果是视频文件请切割为25M左右,数据库文件则通过表数据决定,一般一个表不要超过100万条数据,日志文件则控制在100M增长,同时优化ext4,或者reiserfs文件系统!(咱么可以多参考那些大网站的文件大小)

   2,最狠就是facebook,竟然把php转换为c++(难道不能转换为汇编去!或者干脆使用fast-cgi c/c++写后台呢),其实这点我们没有必要,也没精力技术去整,我们只要开启zend.optim,apc,xcache等php编译加速,优化php语句,减少php使用就可以了,当然有条件还是使用收费的jsp把,性能能提高不少,毕竟php比jsp慢.

  3,还有就是数据库这块,大规模使用memcached nosql数据库,其实我们这点可以学习Twitter,把简单非事物类型数据全部放到memcached中去(小网站,数据不大,整个64G内存)数据库只是用作备份,刷新memcached用,多建立长连接,优化sql语句,或者你要喜欢直接mysql-nosql-HandlerSocket 插件了。

  4,前端facebook使用了varnish,这是个不错的代理,缓存软件,可以借用,除非你搞CDN,要不完全可以取代squid,如果你对nginx,深有钟情,可以之际使用nginx负责静态页面,反向代理,再加一个缓存!

  5,还有最重要的一点,就是他们把业务模块化,不是简单的php应用软件模块化,我们应该把这个思想应用到所有地方,包括内存,cpu,存储硬件资源分配上。经常使用的,大压力业务,全部放内存,分配更多的cpu,不常用的业务代码分配最少的资源!

  6,最后就是硬件了,不能跟facebook比,搞的科幻片终结者2018一样,整个就是一个智能化天网生态系统,我们还是借鉴淘宝吧,改花钱的地方,还是要花钱的,由于小企业,带宽有限,可以花钱整CDN,本地服务器最重要的硬件不能省,cpu不用说了,最少8核心吧,其次就是内存,绝对要超过网站内容,数据大小,其实如果要更快的话,直接上企业pcie-ssd了,别太相信硬盘,这个玩意真不可靠!虽然你raid了!

  说了那么多,其实可以看出来,那些大流量,大门户技术优化都是很看重细节优化的,平时我们光看中构架啊,全局了,没有仔细考虑那些小的东西,细节决定成败,是一句狭隘经典名句,开源万岁,向所有支持开源软件设计者,以及支持开源大公司facebook,淘宝致敬!!

 

本文出自 “清蒸BSD红烧LINUX” 博客,转载请与作者联系!

你可能感兴趣的:(tengine,web优化,facekboo构架)