从京东架构谈到,windows与linux优劣
去年发的一篇文章,应该比较符合主题,纯个人观点,多多交流。 原文冯大辉谈技术性创业团队的技术选型提到了天涯,好吧!站在一个天涯从事6年运维工作的角度,我就多说几句,天涯属于破釜沉舟要摆脱这种束缚的这一类。原因不用多说,文中提到的问题天涯多少都有碰到或存在。目前已全面拥抱开源技术,这不是一时头脑发热所做出的决定。根据现状、未来的发展策略理性来选择的。Windows服务器很难做到大规模的部署、管理
1)为什么京东选Win/.NET平台
2)选Win/.NET平台行不行?
3)京东的系统的问题是什么?
1)为什么京东选Win/.NET平台?
————————————————
我觉得京东用.NET的原因应该很简单: 一开始他就用.NET/Windows了,所以长期就这样了。
那么,为什么他会一开始用.NET呢?这个东西就只能我就只能推理了。Windows的东西门槛低,而且有很多媒体为Windows做宣传,所以,在这个大多数人是井底之蛙的国度里,大多数人都会用Windows平台的。(10年前,这个社会上非Windows的工作很难找,几乎全是Win的天下,我在CSDN上写了一些文章来告诉大家其实Unix/Linux比Windows要好得多。当时没人理解,现在大家可能能够理解了)
所以,我估计京东的选型用.NET的最一开始是报着这样的心态:
1) 随便找几个程序员帮写一下,越快越好,所以可能是那几个程序员觉得熟悉Win/.NET,可以快速搞起来。
2) 觉得业务比技术重要,技术无所谓,做出来了就好了。
这是我觉得最有可能选择Win/.NET的原因,是无心去选择的。
2)选Win/.NET平台行不行?
————————————————
接下来的问题是选 Windows和选Linux有没有哪个更好,我想说的是,都还不错,不要以为选Windows就不好。但选 Windows 的好处并不一定在技术方面,而是在服务方面。
很多金融机构都是用Windows的平台(你可能会和我争吵国内的银行都不是Windows的平台,都是Unix的平台,是的,我也是在银行里做过的,中国的银行几乎都是IBM/SUN/ORACLE的领地,所以,那里都是AIX、RISC600,Solaris,Java,C/C++的地方),但是国外很多金融机构却更多用的是Windows。为什么呢?
金融机构并不在乎钱,他们有的是钱,他要的是稳定,不出错,出了问题能得到最好的售后服务,以及赔偿。这里我说一个我的亲身经历,我的上一家公司是做金融的,他们用的是Windows,有一天在生产线上,因为升级McAfee把Windows搞蓝屏了,dump了一个16GB的dmp文件(内存16GB)。打电话找微软,开了一个0级的ticket,于是,微软的工程师每一个小时都给我打一个电话,告诉我他们的进度,并让我帮他们收集信息,相当的专业,直到很晚很晚,我问他们什么时候下班?他们说,0级的问题他们无法下班,7x24小时,每一个小时要做出响应,不能睡觉,直到问题解决。这是我第一次享受微软的技术支持,我觉得相当地满意。
另外,关于Windows的性能,我在上一个公司用Windows 2008 R1,发现UDP的I/O性能相当差,我们10GB的光纤带宽用了不到1GB,CPU 0的利用率就顶到天了,还是内核级的,我们怎么优化我们的程序都不行,发现这是Windows的问题,UDP的驱动性能太差,而且操作系统总是会把内核级的程序绑死在CPU0上,我们知道,对于多核的CPU,CPU0有调度的作用,如果CPU 0性能被占满了,这意味着这个CPU上的其它核的性能也不行了。后来,问题报给了微软,Windows 2008 R2解决了这个问题,解决地非常好。
从上面的我的经历,我想说:
- Windows的服务是很不错的,只要你愿意花钱。
- Windows平台的性能有很多问题,但是可以看到MS在很努力很努力地解决。
这是我想回答的第二个问题, 京东的问题和用Windows没有关系。但是作为超低利润的零售业来说,能用Windows这个平台真是大手笔啊。
3)京东的系统的问题是什么?
——————————————
京东的系统的问题,明显是自己架构和管理的问题。这个东西不能说得太细,不然就泄露机密了。 呵呵。
1)首当其冲是管理者的问题。不觉得技术重要,不听技术人员的建议,急功近糙,超,快,猛。
2)其次是开发团队的人的问题,乱来。当然,有客观条件和上级逼着他们不得不乱来。
总之, 我并不觉得这是技术问题,这分明就是管理问题,管理上的问题则暴露的是人的问题。
下面有些个人观点:
1)有些人说有问题就有机遇,还有些人说花高薪招人吧。我觉得这还得要看是什么情况,如果公司注重技术,那么就会有机遇。但是重视技术绝不仅仅是用高薪请人,向技术部多投钱,这是肤浅的认识。所谓重视技术,就一定要能让技术部门有话语权,没有话语权的技术部门,是不可能有机遇一说的。(京东已经在花高薪挖人了,花相当的高的钱,但是如果不注重技术,一切都是白搭)对此,我觉得不换高管,别无他法。
2) 有些人让京东换架构。是的,很明显这个架构太差了。但是你真的无法对一辆正在高速行进的车更换(核心)零部件。你必需得让车停下来!而且,还得需要像F1那样的设计,那才能很快地更换部件。从这点来说,我觉得京东除了重新开发一套,别无他法。
以上回复,不见得对,仅供参考。(谢谢)
1. Windows Server授权费太贵,Linux免费,如果你有上千台服务器需要买上千台Windows授权......
2. Windows不但贵,性能还远远不如Linux,注意这里说的是服务器端性能,跟桌面一点关系都没有
3. 许许多多无数的开源、高端服务器组件只有Linux/Unix版本,移植到Windows上的基本是半残品
4. 许许多多优化技术、高性能分布式缓存、数据库、NoSQL解决方案等等,仅针对Linux
5. 你需要的一切组件和技术几乎都可以在Linux平台上找到免费、稳定而且高性能的东东,如果是Windows平台,你需要祈祷微软赶快开发出来
6. 在虚拟化的今天,一台高性能服务器可以跑十几台虚拟机,用Linux,你得到的是免费、稳定的虚拟机,用Windows,你一台服务器的授权费将 x N。
总之,立志做大型互联网应用的企业,绝对绝对绝对不可以用Windows Server做平台。
京东一开始估计招了会.Net的人,开发效率高不意味运营效率高,一开始大方向错了,越往后越难改。
== 补充一点 ==
不是不看好.Net语言本身,而是这是Windows Server和Linux平台的对决,要先选对平台,再考虑具体用什么语言开发。平台选错了,无论你怎么努力,都不可能最终成功,因为Windows不是你控制的,你也无法修改Windows,而全世界最优秀的开发人员每天都在为Linux添砖加瓦。
做互联网要抛弃大企业那种IT外包/“给微软OracleIBM付费即可做好IT服务”的思想,一切均要靠自己!
去年发的一篇文章,应该比较符合主题,纯个人观点,多多交流。
原文冯大辉谈技术性创业团队的技术选型提到了天涯,好吧!站在一个天涯从事6年运维工作的角度,我就多说几句,天涯属于破釜沉舟要摆脱这种束缚的这一类。原因不用多说,文中提到的问题天涯多少都有碰到或存在。目前已全面拥抱开源技术,这不是一时头脑发热所做出的决定。根据现状、未来的发展策略理性来选择的。Windows服务器很难做到大规模的部署、管理与维护。打个比方,一个中级工程师可以很轻松维护500~700台Linux服务器,相比之下300台windows服务器就能让管理员力不从心了。原因是windows平台在集群管理方面还是很弱,只能自己开发一套工具或购买商业软件来实现,这样一来无疑给公司带来了高成本。另一点是Windows OS/Service本身就不便宜,具体价格请拨打MS-800。经常有朋友问,windows服务器操作简单,动动几下鼠标就可以完成一项任务。而Linux需要敲N多命令才能完成相同的操作。告诉我为什么说windows管理成本比Linux高呢?这个得从Windows适用的场景说起,比如较低的技术门槛、中小规模集群等。很难想像通过鼠标在1000台服务器上去完成一项任务,这也是windows2008中引入PowerShell的原因吧。再说说天涯目前使用开源技术现状,已经在包括前端缓存、应用代理、WEB服务、数据库服务、开发框架、Nosql、负载均衡器、运维工具等方面大量被使用,涉及到天涯整个技术体系的每个角落。运用开源技术架构,给应用平台提供了高性能、可扩展、高可用性的解决方案,同时也大大节约了成本。另一个好处是碰到问题总能找到解决方案。交流空间、个人视野都得到了开阔。天涯是一个使用开源技术并回馈开源的公司。虽然 不能贡献顶级的开源项目,至少可以尽自己一份微薄之力。在2009~2010期间,天涯共开源了8个项目,涉及运维管理、Nosql等。包括“天涯LVS管理系统”、"天涯服务器管理系统(C/S版)"、"SDR1.0-Linux主机集中管理"、"Varnish缓存推送平台V1.0"、"高性能数据引擎Memlink"等等。这些项目得到诸多同行及网友的支持,收到大量的反馈建议。部分项目已被第三方公司所使用或进行改良升级。希望更多热衷于开源技术的朋友加入,一起学习,一起提高 。
下面给准备从微软技术转开源的一些建议,任何技术平台的变迁都需要付出代价。除了前期做大量的技术储备外,还应根据自身的应用及技术特点选择合适的开源架构。天涯一路走来,不断在尝试->失败->回滚->再尝试的过程。如何给企业选择适合的开源技术构架呢?
一、开发语言
如果是web2.0的网站,注重快速开发、快速实现。我们看到web2.0是数据组织结构在不断变迁,从最典型的SNS到目前炙手可热的微博。个人建议选择敏捷开发或胶水语言,如php、python、ruby等。它们都具有开发速度快、入门门槛低、功能强大等优势。web2.0的兴起带动了这类技术的普及,招人已经不成问题。经常有朋友问,说脚本语言会不会很慢?我相信很多人都存在这样的困惑。可以肯定的是95%的应用平台的瓶颈不会在语言的运算上,建议花更多的时间在代码算法、缓存、数据库及网络结构的优化上,这才是比较务实的做法,相信你会得到意想不到的效果。对于电子商务型的网站,注重安全、稳定、高效等,java作为主流电子商务开发技术为首选。凭着成熟的中间件技术、跨平台性,可复用性高、多层架构等优势,在国内大型电子商务平台普遍使用,如网上银行、在线支付、在线购物、证卷等业务。
二、数据库&Nosql
MS SQLServer转开源数据库,Mysql是所有开源数据库中最活跃的,具有体积小、高性能、稳定性高及跨平台等特点,提供大部分编程语言API。在web2.0网站中大量被使用,Nosql是2010年IT界的技术亮点。与关系型数据库的关系是相辅相成的,不存在代替的关系,所适用的场景也不一样,Nosql的诞生是为了解决关系型数据库存在的缺陷,比如高密集的IO、大量数据的存储及查询、数据的扩展、分布式等等。个人推荐Mysql+memlink/Mongodb的组合,相互可以弥补各自的不足,将需要事务的数据让关系型数据库来存储,非关键且大存储数据全部丢给Nosql,这样的好处是可以保证数据的一致性的同时提供高效的数据查询。随着业务量的不断增长,需要更多的处理节点加入集群,个人推荐集群模式为多组One-Master->Multi-Slave,可以减少数据同步出现的延时及应用的复杂度,便于维护。组的划分是根据应用业务层进行,这样有非常好的扩展性。大致结构为:App Layer <--->Routing layer<--->LVS<--->Slave note。以最简单的策略满足复杂的需求,因为简单就是美。
三、负载均衡
我们的原则是高并发、逻辑简单走4层架构,比如LVS。7层架构着重在流量不高、规则要求比较灵活的应用中部署。例如URL哈希、过滤、路由、拆分等等。个人推荐Haproxy、Nginx。好的URL规则可以提高30~60%的缓存命中率。参考架构:F5/LVS<--->Haproxy<--->Squid/Varnish<--->AppServer。
四、运维平台
运维是一项复杂、细致的工作,我们可以借助大量的开源工具来实现监控、操作、分析、部署等工作。Cacti、Nagios作为监控、分析的佼佼者,是运维人员的必备工具。现重点讲一下我们在“操作”这块是如何实现管理成百上千台服务器的,以Func、Cfengine作为基础平台,在此基础平台上进行开发、扩展日常操作管理模块。包括“天涯LVS管理系统”、"天涯服务器管理系统(C/S版)"、"天涯服务器管理系统(HTTPS版)"都是基于该平台引伸出的项目。
除了以上所述,还有缓存技术、全文检索、分布式存储、云计算等都有非常成熟的开源解决方案,希望开源技术架构能给您多一种选择。
如大家有什么疑问或感兴趣的话题可以通过weibo与我交流:http://t.qq.com/yorkoliu
我来换一个角度谈这个问题。
1.战略
Amazon的今天就是中国电商的未来。电子商务的波峰低谷中会把自己的计算能力卖出去,也就是那群server farm里面的闲置及其。这需要整体架构更加是水平扩展和灵活性。硬件负载均衡+PC SERVER Farm的方式最为方便。Linux+Java的方式最能够解决这个问题。
关于技术战略,大型电商一定不能走IT services和outsourcing的路子。因为电子商务的快速灵活决定了IT和业务是紧密结合的。所以, http://suning.cn一定会受到WCS的束缚。所以,一个强大的技术团队是电商的核心竞争力。技术是为了业务服务,未来如果京东转向内容提供呢?这些都需要快速的技术平台转型。
2.性能
我不想比.net和Java或PHP之类的技术谁更加性能好,因为这些技术问题总是可以克服,就看代价如何。我们看看google, 本质上google的最底层技术文件系统是提高搜索的关键。而电商为了提高性能,势必走上定制OS、APP Server、DB的道路。 这样看,Linux, Java等一套开源和近似开源的平台就更加有优势。不要跟我谈大公司的技术先进,我不认为这些高档技术在电商环境中有什么用。
3. 费用
.net的授权费用是一个大问题,尤其是电商体系架构是水平和垂直扩展,也就是小崽子机器成群的情况下。而如果京东最终从Linux, 汤姆猫下手,完全可以不用RH那些发行版,而自己定制这些关键组件,费用减少不少,且性能会有保证。但前提是管理层认可技术是电商核心竞争力。另外的费用是技术人员的费用,我个人感觉Linux, tomcat, java, 这一套体系的人力还是比.net要充足一些。相应的人力成本也还会降低。
Stack Overflow因使用Windows系统而著称,现在他们使用越来越多的Linux服务器,比如HAProxy(负载均衡), Redis(NoSQL数据库), Bacula(数据备份系统), Nagios(远程监控软件), 日志, 路由器都运行于Linux系统,几乎所有需要并行处理的功能都是由Linux处理(这句话的翻译可能不准确)。
2、而且跟人事结构也有很大关系:在京东这么大的公司中,那些曾立下汗马功劳的人奠定了自己的地位,花高价挖来的技术牛人进去后很可能在面对现有技术架构的改革中会受阻,无从施展...
1,不了解windows和.net的人
2,不钻研.net的只搞过windows运维和部署的人,这个从发言很容易看出来,基本上是windows怎么怎么样,windows公司怎么怎么样,跟windows的各个team很熟是吧,但.net怎么怎么样,为什么拿.net跟java比,还是应该拿c#跟java比,.net跟C#的关系是什么,没看到讨论。好吧,我较真了,大多数.net开发的其实用的是c#, 我就默认是对比c#和java吧,那么:
1,C#和java两大虚拟机语言,各自的优劣在哪,一定不能使用C#的原因在哪?为什么京东就要转java?有没有benchmark数据?( 其实我这么问,是没看明白题主的意思,或者是看到回复里基本上都是平台之争,那么是不是京东把.net程序部署到linux上,选择开源数据库,和一系列开源技术,就终结了这个讨论呢?)话说回来,纯语言对比,java是占不到c#好处的3,因为不了解,所以不深入,不关注,微软这些年对.net framework的发展(目前4.5.1), http://asp.netmvc(已经到了5)的持续更新(并且一直在codeplex开源), http://asp.net webapi(restful api),signalR(实时通讯),MEF,OWIN。。。等等等, C#语言本身的进化就更不要说了,这些你指望不深入持续搞或关注.net的人来比较?
2,京东到底是什么样的技术架构哪位大牛画个图吧,这绝不是较真,对各互联网公司的技术架构只要谁愿意分享,对于我们这样的真码农都是学习机会啊,一个劲地说京东架构不行,就是看不到干货,就是耍流氓。楼上也有人说了,双11的时候淘宝一个劲地500,难道就得问为什么淘宝还在用java?
其实说回来,很多东西确实是靠微软自己搞(我上面列的都是微软自己的),社区或者开源的东西也有不少,但是没形成那个”势“,这个才是与其它语言开源界最大的区别: 如果有微软的方案,开发者就首选微软的了,包括我本人。
- 这个话题这么热门,其实总结就好比是:老刘招个高人过来优化架构,大牛一进来,架构都没看(本贴确实没有看到),就抛一句话:转java吧,windows不行。 =="这种话只会出自哪种人之口?就是没能力解决现有问题,试图用自己的知识来重新架构的。像@老赵的一句玩笑话,京东用.net架构问题那么大,为什么不找他!这已经很明确了,老赵并不是什么邪神,用的邪招才能解决问题,只是水平和对这门技术的了解程度不同而已。
- 再说了,上面的例子,大牛的建议真要合理的话应该如如下两句的任何一句”转linux吧,windows不行“,或"转java吧,c#不行",把这两个组合成”转java吧,windows不行",什么时候起java跟windows开始相提并论了?
- mono是什么。我就不多说了,上一些real world的.net on mono的实例吧Companies Using Mono,在服务器之争一边倒向linux的地方,你浪费口舌不如实在提升自己技能,.net on mono的实践多了,一方面技术人员的生存能力加强了,另一方面mono发展也就快了。当c#和java之争没有平台的区别,那就只剩下社区力量和benchmark的真实pk了,省掉这么多一个劲地分析windows的口舌了。
- 据说京东逐渐转java了,那么之前的基于.net的架构还算机密么?就真没人拿真实的京东架构来说说事儿?
更多推荐
所有评论(0)