SpringSide开发实战(八):不是结局的结局,谈谈程序员的境界 - 编程入门网
来 我也想写一篇Acegi方面的文章,但是cac写的文档是在是太完美、太经典了,我无法超越。 我们应该让我们的应用尽量向Acegi靠拢,因为,它代表的就是安全与权限领域的最佳实践 。
第三层境界:从程序员到架构师 架构师可以干什么?如何让应用在性能,伸缩性,扩展性、可靠性,容灾,可恢复性, 可管理性等方面做到最好,就是架构师的职责,同时,架构师要能够把握软件开发的整个周 期。由于我还只是一个程序员,也没有精力去学习架构师方面的只是,因此上面的论述可能 不准确。但是,作为一个程序员,上升到一个境界之后,确实应该考虑编码之外的东西了。 举例说明,cnblogs的博客程序算式比较完善的了,我个人对站长dudu也是充满了仰慕。 cnblogs的1.0Beta2版本我也下载得有,本打算使用它建一个自己的博客网站,但是却不行 ,因为它在性能,伸缩性,扩展性方面都达不到我的要求。 SpringSide开发实战(八):不是结局的结局,谈谈程序员的境界(2)时间:2011-05-07 blogjava 海边沫沫不信?看看现在www.cnblogs.com吧,注册用户已经2万多了,速度也是越来越慢,经过 我一nslookup,发现它还只是一台主机在运行,而www.tianya.cn则是一个服务器集群。如 下图: 造成这个问题的原因,主要就是架构的问题。cnblogs是基于.net的,.net运行于IIS之 上,而IIS又是那么的简单,更本不具备配置Cluster的功能。而cnblogs的程序在设计的时 候也没有往集群方面考虑,甚至是想多配置几个数据库都是困难的。 解决网站性能的办法有几种,一是向上扩展,也就是不断增加服务器的CPU和内存,但是 这种扩展价格非常昂贵;二是向外扩展,也就是多增加几台廉价的Web服务器和数据库服务 器,但是由于cnblogs在设计的时候没有考虑到集群功能,就必须得重构所有的代码,这个 工作量实在是太大了;三是垂直分割,也就是目前博客园所采用的方法,就是让一台主机负 责.net博客,一台主机负责java博客等等,把不同的应用分开。这样带来的负面影响是我们 就没有办法在同一个博客上面同时写.net、java、c++方面的随笔了,这确实让我感觉不爽 ,此外,在.net领域这样访问量大的领域,一样会使服务器不堪重负。 我不能让我的程序重蹈覆辙,因此,在架构阶段就应该考虑到Cluster,考虑到负载均衡 ,考虑到可扩充性,并同时使用水平分割策略。水平分割策略和垂直分割策略不同,是让每 一个Web服务器都应该能够使用程序的所有功能,而让不同的用户使用不同的服务器,比如 id为0-10000的用户和www1.cnblogs.com交互,10001-20000的用户和www2.cnblogs.com交 互,等等,如下图所示: 这个时候,服务器www.cnblogs.com作为负载均衡服务器,它根据登录用户的ID将该用户 请求重定向到www1.cnblogs.com或者www2.cnblogs.com,对于匿名用户,它把用户请求随机 重定向到www1.cnblogs.com或者www2.cnblogs.com。 SpringSide开发实战(八):不是结局的结局,谈谈程序员的境界(3)时间:2011-05-07 blogjava 海边沫沫同时,为了能够让负载均衡服务器能够根据不同的用户来重定向到不同的Web服务器,又 要让每个Web服务器上的应用都能够得到所有各个数据库服务器数据的总的索引,需要有一 个索引数据库服务器,如下图: 此外,我们还应该让Web服务器和数据库服务器可以动态增加,也就是当某一个服务器负 载到达极限时,我们可以添加一台服务器,只需要修改配置文件即可,无需更改代码,如下 图: 同时配合使用动态页面静态化技术,静态化后的html页面和图片文件都保存在Web服务器 上,此时Web服务器有同时担当了缓存服务器的功能。当达到IO瓶颈的限制后,又可以通过 服务器加大内存或为服务器配置SAN(存储区域网络)来解决问题。 好了, |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |