Kyoto Cabinet 基本规格书【转】 06月20日
如果你知道 Tokyo Cabinet ,那么就应该知道 Kyoto Cabinet,因为他们都是同一个作者(平林幹雄)开发出来的 Key-Value 数据库。
Kyoto Cabinet:a straightforward implementation of DBM,主页:http://fallabs.com/kyotocabinet/ ,演示文稿:http://www.slideshare.net/estraier/kyotoproducts-5886452 。
Tokyo Cabinet:a modern implementation of DBM,主页: http://fallabs.com/tokyocabinet/
以下Tokyo Cabinet简称为TC, Kyoto Cabinet简称为KC,本文主要对KC做介绍。
KC是TC的后继者或兄弟项目,因为KC在各方面都超过了,所以作者在TC的首页上的开头向所有人推荐使用KC(我也是这个推荐才开始关注KC的)。TC为C实现,为了更好的可维护性,KC采用C++实现。
以下内容的英文原文来自:http://fallabs.com/kyotocabinet/spex.html (更多…)
浅谈Facebook的服务器架构(组图)【转】 06月13日
导读:毫无疑问,作为全球最领先的社交网络,Facebook的高性能集群系统承担了海量数据的处理,它的服务器架构 [...]
- 分类:互联网技术
- 标签: facebook, facebook服务器
- 评论:3 条
- 浏览:3912
- 阅读全文
负载均衡《构建高性能web站点》 05月04日
由于单机性能是有限的,不管机器多么牛逼,最后都会受限于一些硬件和一些软件,在这个时候web的水平扩展变得非常重要。
常见的负载均衡的方式:
1.程序重定向
2.dns的A记录或者CNAME进行负载均衡
3.七层http反向代理负载均衡,也就是常见的nginx、HAProxy、varnish
4.四层负载均衡,在IP层实现的负载均衡 (更多…)
《构建高性能web站点》分布式缓存 05月02日
分布式缓存这个应该算是目前互联网技术上最热的地方,因为现在的网站,越来越偏向于全动态话,但是数据库不可能能抵抗住如此强悍的查询,所以不得不在db前面挡一层cache,这也便是目前互联网从业者最主要的设计点之一。
memory is another disk,这个是分布式缓存的最核心的地方,就是把数据放在内存里面。为什么放在内存里面,首先这个数据不能放在cpu以及及寄存器吧,其次磁盘太慢了,无法接受,就只能在这个中间的就是内存了,但是内存又一个天然的问题,就是宕机之后数据丢失,这个算是互联网架构师们最头疼的设计点之二。
当前最火web2.0 比如facebook、weibo,都采用了这种简单的架构,就是存储+cache+前端脚本的模式,而且,他们都不约而同地用了同一种技术memcached这种key-value的缓存方式。
key-value这种缓存方式最主要的好处就是它简单且高效,水平sharding非常容易,只要控制地好,啥问题都不会是大问题。
当前最主要的nosql 缓存开源软件,我的理解,nosql的东西,分两种,一种算数据库,一种算缓存,最大的区别就是是否把数据放到硬盘中,放到硬盘中就是数据库,否则就只能是cache。当然目前最流行的设计是数据库+cache,比如redis,就是自己维护一些内存的缓存,又写入的时候可选择定时写入硬盘或则事实写入硬盘。 (更多…)
《构建高性能web站点》web组件分离 05月02日
首先还是感叹一下http设计的牛逼之处,http是天然的分布式,它造就了互联网应用的扩展如此的容易,一个很小规模的应用可以很容易就扩展开来。
web组建分离就是把页面上的每个资源按照自己特有的属性分开,由不同的服务器来处理。分开的原因分服务器的原因和浏览器的原因,浏览器的原因是浏览器在统一个域名下并发请求数的限制,比如ie6是2,这个确实很2的,10年前设计自然跟不上现在的需求,服务器端主要资源的属性不一样,有的需要很多cpu计算,有的基本不用cpu,所以需要分开处理。 (更多…)
《构建高性能web站点》反向代理缓存 04月27日
反向代理缓存是目前互联网公司使用最常见的一种方式,像新浪这样的新闻网站,大多数的页面都是读的页面,而且要求速度,所以会用反向代理的方式来构建cdn,已达到最快的访问速度。
反向代理缓存依旧是基于HTTP的一种缓存方式,反向代理服务器和web服务器以及浏览器通过HTTP头来协商,哪些东西可以缓存,哪些应该缓存过期。
因为反向代理缓存是基于HTTP的,所以其工作在七层,常用的软件是古老的squid和新兴的varnish、nginx。 (更多…)
为什么上传文件的表单里要加个属性 enctype【转载】 04月27日
上传文件的表单中<form>要加属性enctype=”multipart/form-data”,很多人只是死记硬背知道上传表单要这么写,知其然而不知其所以然。那到底为什么要添加这个属性呢?它是什么意思呢?它又有什么其他可选值呢? 其实form表单在你不写enctype属性时,也默认为其添加了enctype属性值,默认值是enctype=”application/x-www-form-urlencoded”.这个属性管理的是表单的MIME编码,共有三个值可选:
①application/x-www-form-urlencoded (默认值)
②multipart/form-data
③text/plain (更多…)
《构建高性能web站点》浏览器缓存 04月25日
浏览器缓存,其实这个在浏览器出来的时候就有了,ie6有名的未知缓存让很多前端js开发人员叫苦不迭,常常看见一个ajax请求后面莫名其妙地跟了一个随机数,这个就是解决缓存的问题。
但是浏览器缓存总的来说,是利大于弊,因为网速有限,如果一个页面有10张1m的图片,用户的带宽是2m的,那也得花一分钟才能下载完成,如果他很不幸地点击了一次刷新,如果不用浏览器缓存的话,他将再等一分钟。
而且程序的需要,以前常见的js、image、css之类的静态文件缓存的需求已经远远达不到要求了,能和动态程序交互的就只有cookie了(当然还是有flash的flashcookie),但是容量太小,google曾今开发出一个gears的东西用来存更多的东西,但是这个东西还是无法推广起来,毕竟是一家的标准。最后在html5中,一个叫local storage的东西有望成为下一代的浏览器缓存的标准,这将解决目前浏览器缓存的一些瓶颈。
从某种意义上说,浏览器缓存是很环保的,合适的设计可以减少很多不必要的流量,节约不少的电能也更环保。 (更多…)
阅读IT大牛的博客 04月25日
《构建高性能web站点》动态脚本加速 04月24日
不可否认,动态脚本语言在互联网中占有举足轻重的地位,其最大的好处就是开发成本低、开发速度极快,这极大符合互联网 [...]