?!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
南软g开?/strong>向您介绍Q怎样搭徏合适的|站框架Q?/span>
1、数据层攑ּSQL Server数据库和存储q程Q全部迁UdLinuxq_上的MySQL数据库上Q?/span>
2、缓存不再依?net自n提供的缓存机Ӟq移到部|在Linuxq_上的分布式的Redis上;
3、服务之间的调用Q避免?net自n专有协议Q改成Restful的HTTP Web API调用Q?/span>
4、静态资源请求,不再让IIS自己处理Q分dLinuxq_上的nginxd理;
5、需要读取的文gpȝQ也Ҏ讉KLinuxq_上的分布式文件系l;
6、部|?net代码的Windows服务器放在LVS后面Q用LVS做负载均衡和故障切换Q?/span>
单说来,是单纯?net做应用层的编E语a和框Ӟ其他都交lLinuxq_的开源解x案。?net框架单纯做应用层Q无论ASP.net MVC的开发效率,q是.net CLR虚拟机的q行效率都非常好Q目前我们单台Windows服务器上跑几百万的动态请求毫无压力,而且应用层架构是可以横向扩展的:如果h负蝲非常高,只需要添加更多Windows服务器即可。MQ做C扬长避短?/span>
我们南软g开发还有熟悉大型互联网技术架构的人应该很Ҏ的发玎ͼq个重构q程其实是一个“让合适的东西q合适的事情”这样一工作:
1、把q多业务逻辑写到存储q程中必然导致数据库服务器压力的增大Q而且不利于负载均衡,因此厠Z存储过E”是必要的;
2、SQLServer实现集群的能力很差,用MYSQL之类的数据库是一个不错的选择Q?/span>
3、缓存还是用.Net内置的InProc~存机制对于高ƈ发的|站来讲是一个灾难,用Redis之类分布式缓存来代替是必然的q程Q?/span>
4、?Net Remoting之类的私有协议不利于异构pȝ集成Q改成webservice、REST也是必须的;
5、静态文件的h也经qIIS有点太劳烦IIS了,扔给nginx才更合适;
6、Windows服务器的文gpȝ很不灉|Q换成更加灵zȝLinux下的分布式文件系l是聪明的;
7、采用LVS、nginx之类做负载均衡也是最合适的?/span>
其实M一个大型互联网基本都是q样一个架构:前端使用nginx{做负蝲均衡Q用Redis、memcached{做分布式缓存,使用数据库集进行读写分Mcȝ优化Q用分布式文gpȝ处理囄{静态文件?请问Q用PHP、Java{做web服务器开发的大型互联|,哪个使用JSP内置的Session对象做Session的,不都要换用redis?哪个把图片和php攑ֈ一个服务器的,不都攑ֈ文g服务器中?哪个一个apache服务器就可以扛v来的Q不都是nginx之类的挡在前面做负蝲均衡的吗? 怎么不说“去php化”、“去java化”呢?要知道redis、memcached、ngix之类的可都不是java、php写的呀Q一个java目竟然用其他语a写的东西Q难道不丢面?
我们南软g开发认为,其实一个大型的pȝ中,Ҏ目的不同特Ҏl合搭配不同的品、组件是一个必然的q程Q去了解一下这些系l中“搭”是常见的现象。单一产品中提供能的功能只能满x通项目的需求,要想满复杂的项目,必须把这些品中提供的一些傻瓜化的简单组件用更专业的lg来替换,像做小目php中的Session_了,但是大项目必ȝc/c++开发的memcached来替换?/span>