2006-6-17 于敦德 上次我们以LiveJournal为例详细分析了一个小网站在一步一步的发展成为大规模的网站中性能优化的方案,以解决在发展中由于负载增长而引起的性能问题,同时在设计网站架构的时候就从根本上避免或者解决这些问题。 今天我们来看一下在网站的设计上一些通常使用的解决大规模访问,高负载的方法。我们将主要涉及到以下几方面: 1、 前端负载 2、 业务逻辑层…
Recent News
从LiveJournal后台发展看大规模网站性能优化方法
于敦德 2006-3-16 一、LiveJournal发展历程 LiveJournal是99年始于校园中的项目,几个人出于爱好做了这样一个应用,以实现以下功能: 博客,论坛 社会性网络,找到朋友 聚合,把朋友的文章聚合在一起 LiveJournal采用了大量的开源软件,甚至它本身也是一个开源软件。…
imageMagick图片处理工具
ImageMagick是一套Linux下的开源图形处理工具,针对几乎所有的图片格式提供比较全面的图片处理功能。不像windows下的photoshop,先要双击运行,然后打开图片,然后才能对图片进行处理,ImageMagick可以直接在命令行下运行,加上几个参数,就可以得到想要的图片了,而大批量的处理图片也比photoshop简单的多,写个shell多循环几次就可以了。 假如我想给图片加个框,转一下,再加个阴影,输入以下的命令就可以了: convert -size 400×180 hatching.jpg -thumbnail ‘200×90>’…
Nyawer.my.id
bind dlz – 分布式系统的请求分发工具
bind dlz全称是bind dynamic loadable zones,是基于bind的提供的一个组件,作用看名字就知道了,支持动态域加载支持。 bind已经有很久的历史,目前是搭建DNS服务器的首选。对于一般网站来说,一个标准的bind已经完全可以完成所有dns解决的工作,但在海量域名数量的情况下,bind也确实存在着一些问题: 1、域名解析信息全部存储在文本文件中,这非常容易导致由于编辑出错导致的域名解析出错。 2、bind运行时将全部的解析信息放在内存里,如果数量巨大将可能出现内存不足的情况,同时解析信息重新加载时所耗费的时间也非常值得考虑,由于加载时间较长,所以基本可以不考虑动态的进行域名的调整。…
使用memcached进行内存缓存
旧文重发 2005.8.9 通常的网页缓存方式有动态缓存和静态缓存等几种,在ASP.NET中已经可以实现对页面局部进行缓存,而使用memcached的缓存比ASP.NET的局部缓存更加灵活,可以缓存任意的对象,不管是否在页面上输出。而memcached最大的优点是可以分布式的部署,这对于大规模应用来说也是必不可少的要求。 LiveJournal.com使用了memcached在前端进行缓存,取得了良好的效果,而像wikipedia,sourceforge等也采用了或即将采用memcached作为缓存工具。memcached可以大规模网站应用发挥巨大的作用。
CMS系统的演进
CMS即Content Management System,一般用于网站的内容组织发布。不严格的意义上来看,博客系统也可以算是一个小型的CMS系统。最近做了一个小的CMS系统,感悟不少。 CMS最基本的功能当然是文章发布系统,后台提供一个文章管理的功能,前面将文章显示出来,按照栏目进行组织。当然,栏目,用户,权限管理等基本功能也是必不可少。 开始文章的显示是动态的,每次有人看都执行一下,然后把页面显示出来。后来发布动态的发布虽然实现简单,但即有着一些天然的缺陷。例如抵御大规模的访问,虽然可以通过缓存来进行解决,但毕竟无法从根本上解决这个问题。还有就是文章浏览与管理集中,依赖于同一数据源,一台数据源出现问题两个服务都无法正常提供。在这个条件下很多CMS就提供了静态化的发布方式,文章以静态文件发布出去后与CMS系统没有直接的关系,无论是访问速度,还是可靠性都得到大幅的提高。 Content的指的是内容,并不单纯是文章,而互联网的逐步发展使用户已经不满足于简单的文本阅读,于是CMS又添加了图文混排的功能,开始是单图,然后进一步是组图。 图片加上了以后,很多网站发布每天发布这么多文章实际上有很多文章是转载来的,如果能够自动的将别人网站的文章抓过来,编辑打勾就可以直接发布效率就高的多了,于是各种抓站系统又成了CMS的标准配置。这里面值得称道的是donews的CMS系统,看到一个喜欢的网页,直接右键保存,系统可以自动分析html页面,并将关键数据取出,点一下确定就可以发布,实在是非常方便。而且可以自动取出关键字,并在文章之间根据关键词形成关联。 在这个过程中模板系统也逐渐产生了。以前的模板多是由技术人员手工开发。例如做一个首页,页面上各个区块的逻辑确定后都手动写代码,写死后很难改变。这样子倒没有错误,只是模板制作效率非常低下,新做或修改模板非常麻烦。在这个条件下就促使开发人员将模板做进一步处理。模板一般会被切分成碎片,碎片有几种类型,文本,图片,广告,列表。前面三种都是简单的对html进行分块处理,列表是动态的功能,负责在发布的时候动态的组织内容。这样子就很方便了,可以很快的做出一个模板,加上模板复制的功能就更加如虎添翼。…
Skype的主要功能-Skype通讯协议分析(3)
Skype的功能主要可以分为:初始化,登录,用户搜索,呼叫建立与终止,媒体传输和状态消息。 1、初始化 第一次安装后,Skype会发送一段HTTP 1.1的请求给中央服务器,包括关键字”installed”以及所装Skype的版本号。以后的每次登录Skype都会向中央服务器发送一小段包含关键字”getlatestversion”的HTTP 1.1请求,检查是否有新版本的Skype。
Skype的主要组成部分-Skype通讯协议分析(2)
1、端口 在Skype的连接属性对话框中可以设置监听的端口号,在安装的时候Skype会随机的选择一个端口作为监听的端口,这一点与HTTP协议等不同,Skype没有默认的服务端口。同时,它还会打开对80和443端口的监听。80是常见的HTTP服务默认端口,而443则是HTTPS服务的默认端口。 2、主机列表(HC,Host Cache) 这里的主机指的是可以提供踏板及广播服务的Super Node(SN)。通常它被存储在注册表里的:HKEY_CURRENT_USER / SOFTWARE…
Skype通讯协议分析(1)
晚上在看Salman A. Baset和Henning Schulzrinne写的《An Analysis of the Skype…
awk学习笔记
awk是一种用于处理数据和生成报告的编程语言。 一般的使用格式是: awk ‘{pattern + action}’ {filenames} pattern指在每一行中进行匹配的条件,action指针对符合条件的行进行的操作,filenames是输入的文件名。…