好的服务器系统

Edward Guo在我的《放毒记》里与我探讨了一下他的不同意见,我觉得有必要收藏一下:

edguo 发表于2006-12-24 21:39:46
抱歉说几个不太同的观点:

1. Linux做服务器还行(以前的公司邮件服务器用FreeBSD是很不错),做桌面应用还差~5辈,RedHat7以前玩了一下,命令行倒是没什么已经, 但因为中WinGUI毒太重,觉得KDE/GNOME的思维很离奇,实在受不了,也许也是因为年纪大了转不过来;不过既然客户端要选用(无论你是乐意还是 被迫)就不如走一套路,否则成本很高。

2. 我觉得Windows Server现在已经足够稳定,足够我们大多数客户使用;聘请Windows管理员比较容易,除了补丁多以外我觉得没什么大毛病。我觉得GUI和内核分离 较稳定的说法和以前说要省1K内存是一样道理的,GUI内核会越来越稳定,非GUI内核会越来越不稳定,纯属本人个人看法。

3. 实用为王,不要太过程序员。
Raptor 发表于2006-12-26 13:55:28
1、我可没有说LINUX做桌面比WINDOWS强,只是比以前的LINUX强多了。

2、 对于要求不高的公司内部应用当然是没有问题,但是放到INTERNET上呢?大负载的应用呢?WINDOWS的TCO优势也就在于WINDOWS的管理员 容易找,但是技术上要差很多——系统的安全性和性能优化之类的工作不是打打补丁就行的,而技术好的WINDOWS管理员代价也不低。

至于GUI与内核的关系就让事实来证明吧。这跟1K内存根本是两码事。我的观点与你相反,GUI内核只会越来越不稳定。否则CPU也就没有必要弄个保护模式了——这无疑是要增加额外的开销的。

3、我这里说的都是针对程序员的,用户需要他们自己知道,便是错了那也是他们自找的,但是程序员应该知道怎么样才是对自己好。^O^
edguo 发表于2006-12-27 16:47:12  IP: 58.251.82.*
1. 还是那句:成本。服务器和客户端的技术路线不同,成本很高。

2. 我就知道招商银行网上银行相当大量采用了Windows服务器,大家可以去攻击一下(不过也许我很out他们已经换了也不一定),我们的客户(一省级部 门,)外网也使用WindowsServer 也没啥问题;大负载嘛,请大家上Microsoft.com去测试一下(今天地震影响不算,呵呵)。
Windows 管理真的不需要什么很高水平,当然你随便拿个街边货当管理员是不行的,你说的配置好的Windows服务器我真的觉得也是要求不高啊(也许是我自己水平 低)。以前单位见对面组的人搞IBM主机我就觉得他们的维护成本太高了。虽然我比较讨厌M$的霸道,但是该佩服的还是要佩服。

GUI和内 核分离是否越来越不稳定我无法证明,但是Windows越来越稳定大家可以看得见(那是设计的提升),不要认为我取巧,那是事实。大家当年省1K内存是有 用的,198x年,BillGates还说过640K内存足够任何的人使用,但是随着内存的极大扩充,你省那个1K就没什么意义了。如果我认为我跟定M $,如果不是在非常有必要的情况下,我不会考虑那么一点所谓的稳定性而去转用其他平台(除非足够吸引例如我使用Linux能赚客户更多的钱而客户觉得很值 得或者客户要求我一定要用Linux我没有办法)。我认为所谓的稳定与否绝大多数在乎你的软件设计水平,而不是操作系统或者编译器。

保护模式跟GUI没什么关系,如果可以,Linux不用保护模式而刚好跑一些垃圾软件不知道会否那么“稳定”。

3. 说太程序员嘛主要是看了那些跟贴不是针对猛兄。其实说这些废话我肯定不是有什么恶意的,也不用认为我走Windows路线就专门跟Linux过不去。举个 例子吧,我手下的程序员在我们对功能进行评审的时候,我问他如果客户要这样这样你现在的给出的界面功能应该怎么做,他回答我要A->B->C ->...->K,那样的结果往往是给我K的。我们干程序员这行这么久(以第一次靠写程序赚钱开始,我就12年),这里发表意见的人可能往往 也自得其乐技术上感觉比较良好(包括我),但是真的能当饭吃的才是好技术,而很多程序员(连我自己在内),很多时候总是畅游在技术享受之中,不把客户、项 目、产品的利益放在首位,往往是要吃亏的。大家都知道程序员吃青春饭,这种亏还真的想一直吃下去?

得罪之处万望海涵。

--
Edward Guo
Raptor 发表于2006-12-28 14:57:23  IP: 203.94.2.*
1、不知道你的意思,是指什么成本?服务端的成本本来就比客户端高啊

2、 既然都银行了,当然不介意用专业人士,我也承认WINDOWS配置得好,安全性一样可以不错。拿MICROSOFT的网站没什么好说的,WINDOWS都 是他们开发的,他们当然能够比别人用得好,但不是所有用户都有这样的实力——给你一个更好的例子:NASDAQ网站也是用WINDOWS服务器。但这没有 普遍意义,只要简单统计一下大的门户网站,这才是典型的大负载应用,有几个是用WINDOWS的呢?
你觉得要求不高那是因为你已经达到一定的程度,但事实上达到这种技术程度以后,去维护*NIX服务器也不会太困难,只是需要一个习惯的过程而已。
WINDOWS 越来越稳定,那是因为以前的WINDOWS太不稳定,但是跟*NIX相比还是有差距的。水平再高的人也难免犯错,而一旦出错,在WINDOWS下的风险就 明显要大一些,而相对来说,*NIX的保护更为全面。GUI与内核隔离只是其中一个方面,仅以这个方面来说,在*NIX下一个用户进程的GUI错误只会表 现为一个SOCKET CLIENT的问题,而WINDOWS下将可能导致GDI部分的严重错误。内存大小的问题和这个完全不是一类的问题,所以我另外举了保护模式为例,保护模 式出现的目的就是为了隔离OS内核与用户进程,当用户进程出错时,会引起保护中断,使系统内核能够及时控制状况,改进系统的稳定性。GUI与内核分离本质 上正是这一思路的延伸,而WINDOWS为了显示性能(桌面应用对此的需求很强烈)将二者紧密结合,这将会带来一定的风险是显而易见的。

3、 我靠写程序赚钱的时间没有你长,而且我不做专职程序员已经好几年了,现在身份相当于客户这边的系统维护人员。但如果哪个软件供应商做出的软件像你的手下那 样实现功能,那我也是要K他们的。不过如果你认为*NIX下的应用是如你所说的这样,那就是你的误解了。很多WINDOWS下要点N次鼠标的操作,在 *NIX下只要一行命令就可以搞定——唯一不同的只是操作方式上的不同。
界面好看,操作直观固然是客户利益的一个方面,但是这更多的还是表面现象,当一个系统在运行一段时间以后,客户却开始需要做一些如时不时重启一下之类的“维护操作”时,这时客户的利益已经不同了。
一个真正好的服务端,并不是一个维护起来简单的系统,而是一个在绝大多数时候根本不需要维护的系统。
edguo 发表于2006-12-29 10:40:51  IP: 58.251.85.*
成 本是指撇除设计等因素,单从开发和维护考虑,你可能要养四拨人,一拨在客户端要开发Windows程序或者页面,另一拨人要在服务器开发非Windows 程序(例如Linux),第三拨是维护服务器的人,第四拨是维护客户端的人(请不要告诉我B/S零维护,做的好点维护量其实大多都不是客户端本身),这里 面针对不同项目各个量不一样,不但涉及到成本管理(例如人员的可置换性),还涉及到员工的发展等其他问题,如果你能把其中一个或多个方面的成本显式降低那 才是高手。

不好意思,我又犯了以老卖老的毛病~~~ 其实我没那么老,因为第一次赚程序钱是在上大学的时候~~我应该属于程序员转型没做好的那种,现在还得兼行程序员角色,所以我力劝现在读大学的小舅子主修 Computer Science的同时应修管理、经济和人文等社科,那是程序员的软肋。

对此,令狐也给我发来了他的观点:

我没做过管理员,但是我用了一段时间的Linux,而我LP以前正好做过Windows的系统管理工作。因此我从使用的角度扯两句吧。
一 个好的Windows系统管理员,绝不是一件简单的工作。对一个公司上千台电脑进行管理时,编写自动化任务可以说是不可缺少的一件工作。而这时, Linux的难度比Windows要小很多,因为在Linux上你面对的仍然是你熟悉的命令,只是用Shell将他们组合一下而已,甚至远程执行也只需要 用ssh就可以搞定。而Windows下,你就不得不新接触一件叫做"Host script"的工具——而它既不同于控制台命令,又不同于窗口操作。这是一个额外的知识,需要额外的学习,学习是要成本的。—— 而我LP的朋友所在的另外一家公司,他们的系统管理员因为不了解这个,是一台一台手工操作的,有一次公司病毒发作,我LP的朋友因此连续通宵了N天。(这 是实际发生的事情)
更糟糕的是,Host script使用的是COM,如果系统里没有现成可用的组件而需要自己开发时,难度就比在Linux下开发一个命令行工具难度更加大了,出错的概率也要高 很多(因为COM模型本身的复杂性)——这通常不是一个系统管理员干得了的,于是又要请一个COM开发人员过来,这又是成本。
总之,我现在使用 Linux最大的感受,就是他的KISS原则。Windows把维护和开发分得太开了,要么就是傻瓜式的操作,要么就是API编程。而Linux下借助脚 本的强大黏合能力,就提供了一个很不错的中间层次,在这个层次上,你不需要很精通正儿八经的开发,而又可以做比"傻瓜式"复杂得多的事情。这样可以为管理 维护带来很大的方便。
另外,在安全性方面,Linux的确未必比一个良好配置的Windows更安全,但是Linux有个好处就是他把安全性一开 始就让你知道。如果你不了解什么叫做用户权限、用户组、所有者,很多事情就干不了,所以你不得不一开始就去把这些了解清楚。而Windows最可怕的一点 就是把这些复杂的概念隐藏在易用性的背后——你哪怕对这些一无所知,也不影响你使用这个系统。因此很多人对安全性毫无概念,却自以为对Windows已经 很熟悉了,这才是Windows安全性问题的来源,我觉得。而把Windows的相关概念完全了解清楚,其难度并不比熟悉Linux更低。
另外再补充一点刚刚没说的。
其 实现在我觉得作为桌面,Linux也并不比Windows更难用,甚至在某些方面比Windows更加方便(比如连接我的A1200手机,呵呵)。关键是 你不能用使用Windows的思路去使用Linux。在Windows下,如果我要干一件事情,而这件事情正好Windows干不了,我就会上网找一份软 件,也许他不是特别符合我的需求,那么,我就忍了;要么就打开开发工具自己从头写一个,但这个难度一般比较大,周期也比较长;而在Linux下,我就会找 一份能完成核心功能的程序(比如看图、编辑之类的基础功能,这些一般都能找到),然后写个脚本组合一下。通常写完脚本之后,用起来比Windows下更方 便。而写脚本这件事本身也比Windows下编程难度要低得多。

暂告一段。