XML | HTML | TXT
您当前位置:软件开发 >> 新闻动态 >> 软件开发行业资讯 >> 浏览文章

对.NET系统架构改造的经验和教训

  济南软件开发向您介绍,怎样搭建合适的网站框架:

  1、数据层放弃SQL Server数据库和存储过程,全部迁移到Linux平台上的MySQL数据库上;

  2、缓存不再依赖.net自身提供的缓存机制,迁移到部署在Linux平台上的分布式的Redis上;

  3、服务之间的调用,避免使用.net自身专有协议,改成Restful的HTTP Web API调用;

  4、静态资源请求,不再让IIS自己处理,分离到Linux平台上的nginx去处理;

  5、需要读取的文件系统,也改成访问Linux平台上的分布式文件系统;

  6、部署.net代码的Windows服务器放在LVS后面,用LVS做负载均衡和故障切换;

  简单说来,就是单纯让.net做应用层的编程语言和框架,其他都交给Linux平台的开源解决方案。而.net框架单纯做应用层,无论ASP.net MVC的开发效率,还是.net CLR虚拟机的运行效率都非常好,目前我们单台Windows服务器上跑几百万的动态请求毫无压力,而且应用层架构是可以横向扩展的:如果请求负载非常高,只需要添加更多Windows服务器即可。总之,做到了扬长避短。

  我们济南软件开发还有熟悉大型互联网技术架构的人应该很容易的发现,这个重构过程其实就是一个“让合适的东西干合适的事情”这样一项工作:

  1、把过多业务逻辑写到存储过程中必然导致数据库服务器压力的增大,而且不利于负载均衡,因此去“存储过程”是必要的;

  2、SQLServer实现集群的能力很差,用MYSQL之类的数据库是一个不错的选择;

  3、缓存还是用.Net内置的InProc缓存机制对于高并发的网站来讲是一个灾难,用Redis之类分布式缓存来代替是必然的过程;

  4、使用.Net Remoting之类的私有协议不利于异构系统集成,改成webservice、REST也是必须的;

  5、静态文件的请求也经过IIS有点太劳烦IIS了,扔给nginx才更合适;

  6、Windows服务器的文件系统很不灵活,换成更加灵活的Linux下的分布式文件系统是聪明的;

  7、采用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来替换。


手机:18678812288 E-Mail:1069706080@qq.com
地址:山东省济南市舜耕路泉城公园东门园内向北50米 鲁ICP备07011972号 版权所有2008-2013 山东赢德信息科技有限公司