________________________________已废止文章,留存仅作纪念,其中观点尚属幼稚——————————————————————————
—————————————————————————————————————————————————————————————————
一、 工欲善其事必先利其器
1. 高性能操作系统
FreeBSD和Linux是可选择的对象,做服务器,选择windows的好处实在不多:正版要钱、执行速度缓慢、网络模型落后、文件系统落后、漏洞百出。但是有一个天大的好处:简单。比FreeBSD和Linux简单太多了,特别适合从来没有走出过windows家门的同志们。其实不得不说,简单真的很多时候就是力量——大道至简。但windows的简单仅仅体现在使用上了。有人提出过这样一条人们使用OS的路线图(仅供参考):
MacOS
—— 有钱的同志们、幸福的白领们……苹果的东西“简洁、易用、美观、时尚”,出门越货、泡妞装B、抗Boss、拉仇恨 必备啊!
windows
—— 没钱,初学电脑的,多半直接跳过MacOS来到了windows。这货,有一定可塑性:
嫌桌面不漂亮的 :
美化软件一大堆(推荐 Rainmeter ,前提英文还是要过得去;英文没整好的,360桌面 吧!)
嫌系统管理复杂的:
管理软件一大堆(推荐 360,Advanced System Care 做得比这两个好的没发现!)
嫌系统漏洞太多 :
杀毒软件一大堆(推荐 avast杀毒+360木马,嘻嘻 360 无所不在啊!卡巴金山就不多介绍了)
最强项娱乐 :
音乐(苹果的要好些,win也不差)、电影(迅雷……)、图片、游戏(最强、没有之一)
综合建议是:
不玩PC大游戏的 + 喜欢简单生活的
==》强烈建议退回 MacOS,在中国是跨入MacOS,拥抱乔帮主!绝对比windows滋润!
玩游戏的
==》哪儿也别去了,就这里吧,玩PS、wii游戏都有模拟器,全能游戏平台!
学计算机 + 编程序的
==》强烈建议进入下一阶段,做一辈子windows人,就打一辈子windows工啊!
Linux —— 这是一个自由的世界、开源精神主导的世界、计算机文化主导的世界!
从这里,你开始 真正体会什么是计算机!
从这里,你开始 明白计算机没那么多自动智能的东西,都是背后的程序员的智慧!
从这里,你开始 区分什么是简单、复杂;什么是完美、妥协;什么是权衡、取舍!
FreeBSD—— It 's a piece of elegance,a piece of wisdom,a piece of philosophy,a piece of art.
Unix —— 现在Unix只运行在一些关键的领域了,如电信通信金融等。能熟练操作Unix大型机是可以直接找到一份专职工作的!
综上,服务器选型尽量Linux、FreeBSD吧,个人偏爱FreeBSD!
二、高性能的服务器软件
如果OS选的windows,那么 IIS 吧,唯一运行在内核模式的windows web server!其实有空可以看看新兴的G-WAN,但不成熟,加上被微软封杀后,作者对微软颇有怨言!至于为什么封杀呢,那是因为G-WAN是这么多年来唯一运行在用户模式还在性能上击败IIS的服务器,且作者一再攻击微软仅将自家服务器运行在内核模式的做法,语言挺狠的!为此,作者甚至专门搞了个测试,证明"G-WAN/Linux and C scripts do the job with 5.8 million times less servers than Microsoft IIS + C#",当然其实这纯属作者气微软而已。但其最有趣的特性还是这个服务器直接运行C script,就是C语言的脚本,速度居然和编译的C程序差不多,实在是精巧! 超高性能 + C script 还是很吸引人的。缺点是:1.作者目前不准备开源 2.还是实验性质居多 3.windows版本停止开发了
官网:http://trustleap.com/,注意不要用IE打开了,作者对windows成见很深,网页都不兼容IE,IE打开是乱的,用FireFox、Chrome吧,国内双核浏览器切换到高速模式就可以了!
如果是FreeBSE 或者 Linux,那么可选择的空间就大了,和程序开发平台的关系也挺大的,这就催生了无数的组合可能性:
1.Apache + PHP
2.Tomcat + JSP
3.Nginx + perl CGI
4.Lighttpd + Fast CGI
以及他们的混合方式:比如 Nginx(前端静态)+ Apache(动态内容代理)+ PHP;比如:Apache(前端静态)+ Tomcat(动态内容代理)+ JSP等等,可组合的方式很多。这里就不介绍这些基础的组合了。这里重点说的就的“动静分离+全程缓冲”策略:
1.什么是动静分离,就是静态内容(HTML、CSS、Img)和 动态内容(数据库查询)的服务器分离,这是因为专门的静态服务器的静态服务能力要远远好于一些复合型服务器(如Tomcat),动静分离可以最大化的利用服务器的特性。静态处理能力——
G-WAN(试验品) >> cherokee~Nginx~Lighttpd >> apache >> tomcat
究竟差别有多大呢?是一份比较详细的测试数据:http://nbonvin.wordpress.com/2011/03/24/serving-small-static-files-which-server-to-use/
2.什么是全程缓冲,如果说程序的性能来自于编程语言和代码质量的话,那么架构的性能绝对来自缓冲。其实大家对缓冲应该都不陌生:数据库连接池、页面缓冲、数据持久层缓冲……那么究竟需要多少缓冲呢?答案是,有接口的地方就可以有缓冲!
客户端 申请静态页面 ------> http服务器 -----> 磁盘文件
客户端 申请动态数据 ------> http服务器 -----> 代理服务器 ----> 数据库
3.静态内容选用缓冲服务软件 varnish、memcached、squid(他们的性能比较以后会补充)。
总结起来就是三步走:1.选好主中间件技术的服务器,如 PHP apache、ASP IIS 、JSP Tomcat等——其实主中间件的服务器就可以有很多的选择!
2.开始动静分离:将静态内容分离处理交给 Nginx、Lighttpd、cherokee处理
3.执行缓冲策略:将频繁访问数据放到缓冲服务器中,如varnish、memcached、squid中去
三、选择好的数据库软件
数据库似乎被四个老江湖牢牢占据着,超小型网站Access、小中型网站MySql、大型网站——没钱喜欢开源东西的继续MySql、开始关注性能不介意盗版的SQL server、超有钱的Oracle!
但是我的观点是:一、SQL不适合web2.0或者3.0的网站开发 二、NoSQL不适合企业级数据管理
直白一点儿:
做服务性网站,如搜狐、163、天涯、博客、论坛……以及一系列的网络应用,SQL类的东西都“沉重,过时,死板,低效”了,如果做这些还用SQL那么真的该你那么累,尤其是JSP,配Hibernate、iBatis不烦吗?
做企业网站,如果大众、蒙牛、联想、中国电信、工商银行,NoSQL安全性目前都还达不了标的,工商银行服务器宕一次机,亏个几个亿,丢失数据还难恢复,还伤信誉度,用NoSQL还是太冒险了。还有NoSQL多用内存缓冲,断电丢数据很正常!
SQL数据库没什么选择空间。这里只推荐NoSQL数据库:
MongoDB、Redis、cassandra
MongoDB现在发展最热,C++写成,基于BSON、B-tree, 推荐原因:高性能,特性丰富
Redis由C写成,支持树形、链表、集合类型的数据插入, 推荐原因:超高性能,简洁
cassandra由java写成,是facebook原先开发的 推荐原因:热,沾face的都热
我看好Redis,理由C开发,优雅简洁。
最后给出两个我喜欢的的服务器软件组合:
1.SQL版
FreeBSD + varnish + Nginx -->处理静态内容
+ 中间件服务器(如tomcat) + memcached + MySql -->处理动态内容
2.NoSQL版
FreeBSD + varnish + Nginx -->处理静态内容
+ Lighttpd + FastCGI + C CGI + Redis -->处理动态内容
你最喜欢的组合是什么?
________________________________已废止文章,留存仅作纪念,其中观点尚属幼稚——————————————————————————
—————————————————————————————————————————————————————————————————