上个月,JavaEye创始人范凯robbin的一篇博客《对.NET系统架构改造的一点经验和教训》 http://robbinfan.com/blog/43/rid-off-dotnet-experience 引起了大讨论,里面提到了京东“去.Net化”、“CSDN去.Net化”之类的词刺激到了一些人的神经,有的人在评论中破口大骂“.Net最牛逼,.Net搞不好是你技术不行”,有的人则骂“.Net就是垃圾,上不了大台面”。有一些还在微博上at我,问我“杨老师,.net是不是不行了,听说大网站都‘去.Net化’了”、“杨老师,关于‘去.Net化’你怎么看?”,所以我还是来谈谈所谓的“去.Net化”吧。 其实只要认真看robbin的文章,就会知道他并不是在说“去.Net化”而是在说“怎样搭建合适的网站框架”。注意看这段话:
熟悉大型互联网技术架构的人应该很容易的发现,这个重构过程其实就是一个“让合适的东西干合适的事情”这样一项工作:1、把过多业务逻辑写到存储过程中必然导致数据库服务器压力的增大,而且不利于负载均衡,因此去“存储过程”是必要的;
2、SQLServer实现集群的能力很差,用MYSQL之类的数据库是一个不错的选择;
3、缓存还是用.Net内置的InProc缓存机制对于高并发的网站来讲是一个灾难,用Redis之类分布式缓存来代替是必然的过程;
4、使用.Net Remoting之类的私有协议不利于异构系统集成,改成webservice、REST也是必须的;
5、静态文件的请求也经过IIS有点太劳烦IIS了,扔给nginx才更合适;
6、Windows服务器的文件系统很不灵活,换成更加灵活的Linux下的分布式文件系统是聪明的;
采用LVS、nginx之类做负载均衡也是最合适的。 其实任何一个大型互联网基本都是这样一个架构:前端使用nginx等做负载均衡,使用Redis、memcached等做分布式缓存,使用数据库集群进行读写分离之类的优化,使用分布式文件系统处理图片等静态文件。 请问,使用PHP、Java等做web服务器开发的大型互联网,哪个使用JSP内置的Session对象做Session的,不都要换用redis吗?哪个把图片和php放到一个服务器的,不都放到文件服务器中吗?哪个一个apache服务器就可以扛起来的,不都是nginx之类的挡在前面做负载均衡的吗? 怎么不说“去php化”、“去java化”呢?要知道redis、memcached、ngix之类的可都不是java、php写的呀,一个java项目竟然用其他语言写的东西,难道不丢面子? 其实一个大型的系统中,根据项目的不同特点来组合搭配不同的产品、组件是一个必然的过程,去了解一下这些系统中“混搭”是常见的现象。单一产品中提供能的功能只能满足普通项目的需求,要想满足复杂的项目,必须把这些产品中提供的一些傻瓜化的简单组件用更专业的组件来替换,就像做小项目php中的Session足够了,但是大项目必须用c/c++开发的memcached来替换。 我前阵子我发了一个帖子《【分享】.Net有哪些大型项目、大型网站的案例?》http://bbs.csdn.net/topics/390463825 ,这个帖子中提到的.Net技术的大型网站绝大部分都是“混搭结构”的(这些网站中至少有10个有传智播客.Net培训班的学生,我都跟他们交流过他们的技术架构)。很奇怪的一件事情是,在Java、PHP社区中经常可以看到讨论这些“架构”的文章,但是在.Net社区中则很少见到有人分享这些东西。希望.Net社区中的技术大牛们以后能把这些经验多多分享,让更多的人能够了解这些技术并且在项目中应用这些技术,提升.Net社区讨论技术的层次,不要让.Net社区的人总是在讨论一些很初级的问题,最起码不要只是为了不同网页头尾统一就使用又笨又重的MasterPage(其实用一下shtml就可以了)、不要讨论个三层架构就认为是架构师了、不要弄个代码生成器就是高科技了……咱们也要真正的拥抱Best Practice、拥抱混搭。 不希望这个帖子又成为不同语言相互攻击的月经贴,希望大家讨论一些真正有用的东西。
熟悉大型互联网技术架构的人应该很容易的发现,这个重构过程其实就是一个“让合适的东西干合适的事情”这样一项工作:1、把过多业务逻辑写到存储过程中必然导致数据库服务器压力的增大,而且不利于负载均衡,因此去“存储过程”是必要的;
2、SQLServer实现集群的能力很差,用MYSQL之类的数据库是一个不错的选择;
3、缓存还是用.Net内置的InProc缓存机制对于高并发的网站来讲是一个灾难,用Redis之类分布式缓存来代替是必然的过程;
4、使用.Net Remoting之类的私有协议不利于异构系统集成,改成webservice、REST也是必须的;
5、静态文件的请求也经过IIS有点太劳烦IIS了,扔给nginx才更合适;
6、Windows服务器的文件系统很不灵活,换成更加灵活的Linux下的分布式文件系统是聪明的;
采用LVS、nginx之类做负载均衡也是最合适的。 其实任何一个大型互联网基本都是这样一个架构:前端使用nginx等做负载均衡,使用Redis、memcached等做分布式缓存,使用数据库集群进行读写分离之类的优化,使用分布式文件系统处理图片等静态文件。 请问,使用PHP、Java等做web服务器开发的大型互联网,哪个使用JSP内置的Session对象做Session的,不都要换用redis吗?哪个把图片和php放到一个服务器的,不都放到文件服务器中吗?哪个一个apache服务器就可以扛起来的,不都是nginx之类的挡在前面做负载均衡的吗? 怎么不说“去php化”、“去java化”呢?要知道redis、memcached、ngix之类的可都不是java、php写的呀,一个java项目竟然用其他语言写的东西,难道不丢面子? 其实一个大型的系统中,根据项目的不同特点来组合搭配不同的产品、组件是一个必然的过程,去了解一下这些系统中“混搭”是常见的现象。单一产品中提供能的功能只能满足普通项目的需求,要想满足复杂的项目,必须把这些产品中提供的一些傻瓜化的简单组件用更专业的组件来替换,就像做小项目php中的Session足够了,但是大项目必须用c/c++开发的memcached来替换。 我前阵子我发了一个帖子《【分享】.Net有哪些大型项目、大型网站的案例?》http://bbs.csdn.net/topics/390463825 ,这个帖子中提到的.Net技术的大型网站绝大部分都是“混搭结构”的(这些网站中至少有10个有传智播客.Net培训班的学生,我都跟他们交流过他们的技术架构)。很奇怪的一件事情是,在Java、PHP社区中经常可以看到讨论这些“架构”的文章,但是在.Net社区中则很少见到有人分享这些东西。希望.Net社区中的技术大牛们以后能把这些经验多多分享,让更多的人能够了解这些技术并且在项目中应用这些技术,提升.Net社区讨论技术的层次,不要让.Net社区的人总是在讨论一些很初级的问题,最起码不要只是为了不同网页头尾统一就使用又笨又重的MasterPage(其实用一下shtml就可以了)、不要讨论个三层架构就认为是架构师了、不要弄个代码生成器就是高科技了……咱们也要真正的拥抱Best Practice、拥抱混搭。 不希望这个帖子又成为不同语言相互攻击的月经贴,希望大家讨论一些真正有用的东西。
asp.net mvc应该是java的差不多了吧,其它方面都不是.net的问题,而是windows上的软件不给力的问题。
Linux也并不是没有漏洞,任何一种平台或者技术都无须神化
这一点,我一个同事,使用LoadRunner进行了压力测试,
同样配置的机器,安装Win2003+IIS和Centros+Nginx,默认配置,反复请求同一个html,结果压力测试结果,tps基本一致,甚至iis略高,是不是测试太单一化,导致的这种结果呢?
说实话我来到csdn很久了net板块发的帖子都是初级贴
我是新手 只要问一点厉害的问题 就没人回复我
显然本文重点是这个 传智播客杨中科
杨中科,传智播客联合创始人、如鹏网发起人。现为传智播客教学总监。 2005年毕业于山东大学物流工程专业。曾任职于微软中国、金蝶软件等知名IT企业。撰写了《J2EE开发全程实录》、《自己动手写开发工具》,《程序员的SQL金典》等技术图书。另外网上流传的13季.net视频被誉为入门级经典。
主导了金蝶EAS湖南烟草局SCM系统、字符终端图形库AHA3及开发工具AHAIDE、上海浦东发展银行图形前端等项目的开发,并且在中国工商银行批量平台、集中监控运维系统(部署于中国工商银行、中国农业银行、交通银行、北京银行、深圳发展银行等大中型银行)、力诺集团呼叫中心、新广源集团呼叫中心等项目中担任主力开发人员。 杨中科创办了为计算机初学者提供学习指导的公益性网站如鹏,运营两年多来,撰写的大量的学习方法的文章和《C语言也能干大事》等视频教程帮助无数的计算机初学者走出迷茫走入正确、快速发展的通道。正因为传智播客培训出了合格的人才。所以现在都不用.net了!