博客

  • nginx lighttpd apache的比较

    对于访问量特别巨大的网站,选择一个CPU占用率低,而且响应快速的轻量服务器是一个好注意。

    目前相对于最流行的服务器老大哥apache,还有两个人气快速上升,小型的免费服务器。

    一,相关资料

    1. lighttpd(http://www.lighttpd.net/

    Lighttpd是一个具有非常低的内存开销,cpu占用率低,效能好,以及丰富的模块等特点。lighttpd是众多OpenSource轻量级 的web server中较为优秀的一个。支持FastCGI, CGI, Auth, 输出压缩(output compress), URL重写, Alias等重要功能。

    Lighttpd使用fastcgi方式运行php,它会使用很少的PHP进程响应很大的并发量。

    Fastcgi的优点在于:

    · 从稳定性上看, fastcgi是以独立的进程池运行来cgi,单独一个进程死掉,系统可以很轻易的丢弃,然后重新分配新的进程来运行逻辑.

    · 从安全性上看, fastcgi和宿主的server完全独立, fastcgi怎么down也不会把server搞垮,

    · 从性能上看, fastcgi把动态逻辑的处理从server中分离出来, 大负荷的IO处理还是留给宿主server, 这样宿主server可以一心一意作IO,对于一个普通的动态网页来说, 逻辑处理可能只有一小部分, 大量的图片等静态IO处理完全不需要逻辑程序的参与(注1)

    · 从扩展性上讲, fastcgi是一个中立的技术标准, 完全可以支持任何语言写的处理程序(php,java,python…)

    2.apache(http://httpd.apache.org/)

    apache是世界排名第一的web服务器, 根据netcraft(www.netsraft.co.uk)所作的调查,世界上百分之五十以上的web服务器在使用apache.

    1995年4月, 最早的apache(0.6.2版)由apache group公布发行. apache group 是一个完全通过internet进行运作的非盈利机构, 由它来决定apache web服务器的标准发行版中应该包含哪些内容. 准许任何人修改隐错, 提供新的特征和将它移植到新的平台上, 以及其它的工作. 当新的代码被提交给apache group时, 该团体审核它的具体内容, 进行测试, 如果认为满意, 该代码就会被集成到apache的主要发行版中.

    apache 的特性:

    1) 几乎可以运行在所有的计算机平台上.

    2) 支持最新的http/1.1协议

    3) 简单而且强有力的基于文件的配置(httpd.conf).

    4) 支持通用网关接口(cgi)

    5) 支持虚拟主机.

    6) 支持http认证.

    7) 集成perl.

    8) 集成的代理服务器

    9) 可以通过web浏览器监视服务器的状态, 可以自定义日志.

    10) 支持服务器端包含命令(ssi).

    11) 支持安全socket层(ssl).

    12) 具有用户会话过程的跟踪能力.

    13) 支持fastcgi

    14) 支持java servlets

    3.nginx(http://wiki.nginx.org/Main)

    Nginx是俄罗斯人编写的十分轻量级的HTTP服务器,Nginx,它的发音为“engine X”, 是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP 代理服务器.Nginx是由俄罗斯人 Igor Sysoev为俄罗斯访问量第二的 Rambler.ru站点开发.

    Nginx以事件驱动的方式编写,所以有非常好的性能,同时也是一个非常高效的反向代理、负载平衡。其拥有匹配 Lighttpd的性能,同时还没有Lighttpd的内存泄漏问题,而且Lighttpd的mod_proxy也有一些问题并且很久没有更新。但是 Nginx并不支持cgi方式运行,原因是可以减少因此带来的一些程序上的漏洞。所以必须使用FastCGI方式来执行PHP程序。

    nginx做为HTTP服务器,有以下几项基本特性:

    处理静态文件,索引文件以及自动索引;打开文件描述符缓冲.

    无缓存的反向代理加速,简单的负载均衡和容错.

    FastCGI,简单的负载均衡和容错.

    模块化的结构。包括gzipping, byte ranges, chunked responses,以及 SSI-filter等filter。如果由FastCGI或其它代理服务器处理单页中存在的多个SSI,则这项处理可以并行运行,而不需要相互等待。

    Nginx专为性能优化而开发,性能是其最重要的考量,实现上非常注重效率。它支持内核Poll模型,能经受高负载的考验,有报告表明能支持高达 50,000个并发连接数。

    Nginx具有很高的稳定性。其它HTTP服务器,当遇到访问的峰值,或者有人恶意发起慢速连接时,也很可能会导致服务器物理内存耗尽频繁交换,失 去响应,只能重启服务器。例如当前apache一旦上到200个以上进程,web响应速度就明显非常缓慢了。而Nginx采取了分阶段资源分配技术,使得 它的CPU与内存占用率非常低。nginx官方表示保持10,000个没有活动的连接,它只占2.5M内存,所以类似DOS这样的攻击对nginx来说基 本上是毫无用处的。就稳定性而言,nginx比lighthttpd更胜一筹。

    Nginx支持热部署。它的启动特别容易, 并且几乎可以做到7*24不间断运行,即使运行数个月也不需要重新启动。你还能够在不间断服务的情况下,对软件版本进行进行升级。

    三,服务器占有率变化

    1. Apache (46.30%↓)
    2. Microsoft (21.94%↓)
    3. qq.com (13.40%↑)
    4. Google (6.29%↑)
    5. nginx (5.09%↑)
    6. lighttpd (0.90%↑)

    二,服务器选择

    因为lighttpd听说有内存溢出问题,而且更新也不是很活跃,就暂且放弃。

    而Nginx通过实际使用,基本上和apache的安装配置相比,nginx的执行非常傻瓜。通过使用PHP FastCGI,可以很好的支持PHP后台。

    当然,他也可以通过PHP转发给apache,而自己专心发挥响应快的优势,对于一些静态的访问直接返回就可以了。

    对于今后的高负荷优化,是使用nginx,还是nginx+apache,还是apache,其实目前的开发都不会受其影响。而根据以后测试阶段的实际情况,采取适合的服务器结构,也不失是明智之举。


  • JS的另外一片天空

    这几天一直在考虑MobageTown的应用设计

    虽然OpenSocial的基本流程是理解的。

    但是具体是如何实现的,一直没法子建立起具体的概念来。

    之前开发的动态网站,无论使用什么样的框架,基本流程都是B/S的Request/Response的交互。而现在的OpenSocial的所有请求,都必须通过中间的Gadget容器服务器来传递。

    也找了一些资料,还是不得要领。普通的HelloWorld实在是太简单了,一个Gadget XML就可以轻易实现。但是如何前台交互,后台交互却还是一片模糊。

    最后还是Google OpenSocial的wiki比较好,它的一个实例是制作一个朋友间相互赠送礼物的应用。从最简单的HelloWorld级别,不断迭代,直到第八轮的完善Widget。不过就这么一个简单Sample,我已经很深刻地感触到,JS在OpenSocial的重要性。由于相对于后台的间接访问,前台的直接操作更加快速。OpenSocial提供了一大堆的JS API,可以提供很多信息操作,比如取得用户的朋友列表等。

    但是JS的大量使用的同时,也带来一个问题,就是JS的编成模式和以往的后台动态网页语言,或者是简单的前台的JS很不一样,而且Debug,测试也相当不简单。还记得之前解析RTM的JS架构,发现它已经是一个拥有的XML配置文件,类层次结构的完整的系统模块。这次似乎也是如此,看来不能再简简单单的把JS看作Onclick,也不能停留在Jquery等Ajax工具的语法使用上,而是需要从根本上把JS也看成一套完成的系统语言啦。

  • 低碳的生活

    长假基本都窝在家里了.也算是为低碳作了贡献.

    其间出去过几回.

    一天,过九华山隧道,珠江路到丹凤街购买手机.

    一天,早上驾车跨玄武湖,穿中山陵过灵谷寺,晚上又碾转湖南路.

    特别是后面一次,仿佛全城的车子都在中山陵,车行速度低于人走的速度.而且进退为难,只能顺着车流随波逐流.后来索性就在路边停下了,徒步到达到了大草坪.

    经过这两次的教训,最后一天去龙江看电影,我死活不愿意开车了.于是乘坐11路,直达于龙江金润发.一路上看看报纸,吹吹凉风,无限的惬意.看来敌碳的生活其实也是一种享受.因为是终点站,回来的时候空座位也是满满的,感觉像是舒舒服服的享受了包车一般.

    虽然中山陵的堵车和龙江的顺畅不一定有可比性.但是我想,终究有一天,出行的人们都会首选公共交通,而不是私家车.因为那才是文明的下一个进步.

  • 长假的随想

    长假的第四天,一个人在家,觉得该是安安心心地把家里收拾一下的时候咯。

    中国的两个长假时间都特别合适,一个差不多是春夏之交,一个是夏秋之交。这个时节,天气不错,人的心情也不错,再加上长假,总是给人很向往的感觉。这个时节,除了外出游玩,也是大家把上个季节的衣服洗刷洗刷,收纳收纳的时候。我也忙着把夏天的衣服塞到箱底,把秋天和冬天的衣物放到衣柜外边来。还意外地发现有好多已经被自己都遗忘的衣服呢。

    把地板上个香精油,地砖抹一遍,不觉大半天就过去了。不过收拾完了,看着明亮的客厅,心情总是无比舒畅的。

    最近发现,灰尘以没有前几年刚搬入时候的多,想来要么是南京环境确实变好了,要么就是周边的建设渐渐少了,工地扬尘也少了的缘故。

  • 提案书的吸引力

    最近,越来越反感标准的,约定俗成的东西。

    作了几个提案,最开始都希望挖掘出客户的特别需要,提出最有针对性的提案。所以自己可以说是刻意地回避以前曾经的做法。因为我一直深信,提高敲门砖的命中率,必须突出重点和用户的个性。而各个客户的个性又是如此的千差万别,如果之前曾经用过的,那么八成这次肯定不能用了。

    不过问题也出在这里。交出来的初稿,常常自己信心慢慢。而随着一轮一轮的讨论,每个人各抒己见。作为折衷的结果,一些个性的提法去掉了,一些省略的补充了,一些含糊的详细了。。。最后重点不再突出,个性不再鲜明,成了一个面面俱到的平庸的提案了。

    我倒是对这些意见本身没有什么反感。我只是想,最开始一个吸引人的平面广告,比一个面面俱到,翔实的说明书,可以更容易打动自己都说不清楚要什么的那些用户吧。

    发了一点牢骚。还是用心做事咯。回到提案书的吸引力。我很崇尚视觉上的冲击,所以每次我多喜欢加入形象的图表说明。不过每次,花了大把的时间,最后的效果还总是那么差强人意。谁叫我不是专业的呢。近日扒了一下google,结果发现Google自己的介绍图片就是如此的与众不同。留着看看,对今后的图表设计,或许会有启示。

  • 密码保护:同事离职时寄语,没有背叛,只有祝福

    此内容受密码保护。如需查阅,请在下方输入密码。

  • DB设计的利器

    最近做一个后台管理画面(基本上都是数据库管理,30个页面左右),通常需要1.5个月左右,不过使用了以下功能,能压缩到1到2周左右。

    环境:Apache 2 +php 5 + Mysql5 + symfony 1.4

    工具:Excel + Mysql Workbench + Toad for Mysql + NetBeans IDE(php)

    基本流程是

    1. 使用Excel,初步设计DB的草图

    2. 使用Mysql Workbench 建立初步的Table结构,这时候关键是表名字,PK/FK定义好了就可以了。不过FK的设定都要设定完全。再将其自动做成ER图,做进一步分析

    3.大的结构确认完毕后。使用Mysql Workbench建立详细的Table机构,注意要把Comment全部填好。

    4.使用Mysql WorkBench的 DB Synchronize 把做好的表同步到数据库服务器上。

    5.使用Toad for mysql的Report功能,生成DB设计书。(因为之前填好了Comment,所以DB设计书相当精美)

    6.和客户确认DB设计书和ER图

    7.建立Symfony的Project,从DB结构建立Doctrine DB Schema。并使用Fixtures,导入测试数据。

    8.通过Symfony Doctrine命令,建立Model和Form(7,8要顺利,需要最初的DB设计符合第三范式。比如外键一定要设定好)

    9.通过Symfony的Admin Generator自动做成一览页面和详细编辑页面。

    10.修改自动生成选项和一些Action事件,画面基本就可以完成了。因为使用了成熟的Design,页面表现漂亮,功能强大,而且bug很少。

    11.如果用户要求文档式的画面说明。可以使用Balsamiq Mockups,逆向工程做草图说明。

  • LazyBook的Design设计

    一直是仿造Remember the milk来做LazyBook的。这主要基于几点

    1. 在线记账和在线备忘录,核心功能都很简单
    2. 使用必须非常简单,只能占用很少的时间,从而促进使用者长期坚持使用
    3. 都要求界面简单,入手快速
    4. 都要求随时随地可以记录,所以需要最开始的手机应用

    那RTM是怎么解决这些问题的呢。

    1. 界面非常简单,但却有复杂全面的帮助信息系统
    2. 只需要最简输入,然后Enter一下,就可以完成一个Task记录
    3. 使用了大量的Ajax功能,简化用户的操作
    4. 提供手机的应用程序

    所以,学习RTM的界面,是实现我们的口号“随时随地,快速记账”的一个最快捷径。

    不过困难也是显然的。因为用了自己的Ajax的js,我只能使用Firefox Firebug来实时地获得动态做成的HTML程序。即使如此有些功能还是需要变通的。

    1)在输入框里面输入 #这些符号的时候,会在光标后现实一个选择的下拉框。这个如果按照最原始的方法,截获keypress事件,然后现实一个div,同时支持上下选择等。是相当费事的。所以我选在了Jquery UI的Auto compleate功能,把#后面要显示的选项设为 #aaa #bbb等等。这样子用户输入了#就可以有个 #aaa,#bbb的下拉框了。不过相比下来,还有不足,一个是下拉框每次都和text box平齐,而不是和光标平齐。还有一个就是下拉框里面显示的是#aaa而不是aaa。另外目前还遇到一个很严重的冲突。我希望截获textbox的enter事件,但是firefox的auto compleate的下拉框的Enter选择,也会激活textbox的enter key。不过IE中是好的。现在还在考虑中,实在不行,就只能回到传统,加入一个确认按钮。

    2)RTM里面有一个很实用的功能,就是修改task具体信息的时候,只要按那个信息或者后面的小图标,就会从Label变成一个textbox,而且输入了项目之后,不用按按钮,只有enter,或者是鼠标按到其他位置,就可以自动提交。为了防止按错,会出现一个消息框,里面包括一个取消Link。不过我实际做起来确实很烦人,每个项目都要截获click事件,还有自动替换html的tag,最后还有在多个触发点激活更新。现在索性回到原点,用户选择一个项目后,详细信息就是输入框,直接修改就可以了。

    3)不过仿造的过程中,也学习了不少jquery的方法和jquery的插件效果

    比如选择日期期间的  Date Range Picker

    动态浮动层 scrollfollow

    计算器选择 jQuery Calculator

    信息提示  jQuery UI Notify

  • Lazzybook的Design设计

    最近花了点时间,设计了一下懒人记账的页面。这次页面原型设计使用了Balsamiq.Mockups,一个不错的手绘Mockup制作工具。比较大半天下来的原型和实际画面,觉得原型又要快速,又要表现力丰富,Balsamiq真是个不错的选择。至于Axure,对于复杂画面,还想直接自动生成HTML的Case,还是适用的。不过那个自动做成的HTML也就只是可以演示而已,开发的时候免不了要全部重新修整一番的。

    [wp-imageflow2]

  • 中文Linux先驱陨落:10年前市值达4亿美元(转)

    新闻高才遇到3个电脑奇才

    蓝点软件是中文Linux先驱。1996年,Linux操作系统进入中国。1999年7月,蓝点的几个年轻的创业者最早在全球发布了在 framebuffer上进行汉化的中文Linux版本BluepointLinux。1999年9月7日,蓝点软件技术(深圳)有限公司创立。2000 年3月7日,蓝点神奇地在美国三板市场挂牌上市。上市首日,股价暴涨400多倍,市值超4亿美元。创造这个奇迹的,是4位没任何外资背景的小伙子——康 哲、邓煜、廖生苗、李凌。当时,他们都才20多岁。

    除蓝点的董事长康哲外,蓝 点的总经理邓煜、技术总监廖生苗和研发部经理李凌都是电脑奇才。他们来自不同的城市,性格迥异,却有着共同的梦想。其中的灵魂人物,便是最年轻、学历最浅 却最富传奇色彩的邓煜。13岁时,邓煜随父母从南昌迁到深圳,1997年加盟深圳数据局下属的龙脉公司,负责网络规划、实施和调试,并在网上结识了深圳万 用网专攻Linux的廖生苗。随后又在bbs上认识了毕业于华中理工大学计算机专业、在校时便获得高级程序员证书的李凌。颇有远见的邓煜认为,他们几个人 都是技术型人才,但一个项目要成功推向市场,需要一个把技术商品化、市场化的人。邓煜选择了盛润网络系统公司的康哲。

    和他们三人不同,在广东潮州长大的康哲,创业前走的是另一条路。1990年他考入武汉大学新闻系,在《经济日报》实习时就拿到了全国首届韬奋新苗奖一等 奖,毕业时曾同时接到《经济日报》、《南方日报》、《深圳特区报》、《证券时报》四家报社的接收函,但当时他没有选择深圳。邓小平南方谈话掀起改革开放新 热潮。1993年,康哲放弃了在北京的工作,来到了《深圳特区报》。他希望自己能在改革开放的最前沿释放自己的潜能——他递了一份“商业计划书”给当时的 特区报社长吴松营,获得认可。之后,他独自一人撑起了特区报4个版的《电脑时代》,版面办得有声有色。

    上世纪90年代末,中国拉开信息技术时代的序幕。康哲觉得,“与其做一个旁观者或者评论者,不如投身到时代变革的大潮中。”于是,1999年3月,他从 深圳特区报社辞职,加盟盛润网络系统公司——这是中国第一批从硅谷拿到风险投资的互联网企业。正是在这里,他认识了邓煜。

    1999年4月28日,康哲、邓煜、廖生苗、李凌在深圳名典咖啡厅聚会,开始郑重筹划公司的成立问题——4个人就这样被命运的红线牵到了一起。

    蓝点上市首日股价暴涨400%

    1999年7月下旬,公司第一次筹备会议在深圳一家菜馆的餐桌上举行。在这次会议上,公司的商业计划书和远景规划包括公司的框架、每人所占的股份、规章 制度等都确定下来,为今后事业的发展奠定了坚实的基础。按照这个规划,4人的分工是这样的:康哲为董事长,负责蓝点的企业发展策略规划;邓煜出任总经理, 主持全面工作;廖生苗任技术总监,李凌为研发部经理,两人负责技术开发。康哲还叫来了好友、毕业于北京外经贸大学财会专业的曾颖帮忙。9月7日,他们5人 自筹资金20万元,注册成立公司,并在深圳赛格科技园租了一间不到30平方米的办公场所,开始了艰苦的创业。

    1999年10月1日,蓝点发布了Linux1.0RC版,在IT界引起轰动,并被深圳市政府列为高交会11大推荐项目之一。蓝点软件早期以做内核汉化 的中文发行版为主,很快在业界享有相当高的技术地位,在个人OEM版市场占有率、零售市场都是国内第一,也是当时国内最早实现赢利的Linux公司。

    2000年3月7日,蓝点成功在美国OTCBB市场(俗称三板市场)“借壳上市”,股票代码为“BLPT”。上市第一天,股价一天之内暴涨了400%。 这意味着蓝点的市值一夜之间达到了4亿美元。《三联生活周刊》当时撰文报道他们,题目用的是《小鬼当家》(他们中康哲和廖生苗1971年生,李凌1974 年生,邓煜1975年生)。

    蓝点公司未能熬过股灾

    天有不测风云。就在蓝点上市一个月后,席卷全球的股灾骤然爆发。当时美国三板市场崩盘,以及随后接踵而来的“9·11”事件,使资本市场突然间失去融资 的能力,当时的网易还一度停牌,蓝点股价在美国三板市场也一路狂泻——蓝点当时主要盯住技术前沿做高端研发,商业模式主要是以收取上游客户的执照和代理开 发为主。危机发生后,上游产业合作伙伴的海外订单突然消失,原有赢利的桌面版本的收入此时已难以支撑蓝点高额的研发费用了。而与此同时,国内某些国资背景 的Linux公司,从国内获取了巨大的资金支持,开始在蓝点挖人。“内外夹攻,整个市场格局已难以容纳作为民营企业的蓝点生存了。”

    其后,蓝点主要股东把部分股权转给一家在香港上市的汽车仪器企业的股东,这一公司成了蓝点新主人。

    鲜为人知的一段往事是,当时,华强北赛格工业园里有两家以企鹅为公司标志的企业,那便是楼上楼下的腾讯和蓝点,两家公司的人员私交不错,蓝点早于腾讯上 市,搬家时,照例买了乳猪,赛格工业园里不少创业者都跑来吃烤猪喝啤酒庆祝乔迁之喜。从高端研发人才储备和技术研发影响力而言,也许当时的蓝点还强于腾 讯。但最终的差别在于,腾讯这只企鹅成功度过了那个互联网的冬天。采写《马化腾的腾讯帝国》的中国著名IT观察人林军曾提及,当时楼上的马化腾也一起来吃 烤猪,一位腾讯当时的创业元老还曾和林军感慨,说最开始腾讯的目标是超越蓝点。

    “在深圳,激情容易被点燃”

    十多年过去了,康哲回头看这段往事,这样评价自己的这段岁月:“从上世纪90年代初到深圳以来,我有幸和深圳这座城市以及中国高新技术产业一起脉动,一 起成长。我有幸与一班青年才俊去建功立业,一起奋斗,一起努力,亲手去创造历史。回首往事,如果用一个词形容我的感受,那就是‘自在’”。

    如今,蓝点创始人之一的邓煜,在北京做一个企业客户管理的营销软件通卡公司,并获得深圳创新投资。而康哲,先后成立了卡诺能源公司、天盛弘泰顾问公司等 企业,主要为企业及政府提供科技咨询顾问服务,参与有关公共政策的制定工作,为众多高新技术企业提供高端培训咨询服务。