• 推荐
  • 评论
  • 收藏

大型web系统构架图的理解

2022-12-19    3288次浏览

构架图如下:

  

  我们从下往上就行分析:

  1,对数据库的操作(提交数据):“应用服务器群”会向“数据库群”提交数据,也会从"数据库群"获取数据。当提交数据的时候,会把数据先提交给“异步队列”,然后定期把从“异步队列”提交到“数据库群”。

  大型网站往往对应着海量数据,并且每时每刻都有大量数据提交。如果不用“异步队列”将提交数据分批处理,数据库会每时每刻都处于被提交状态。这样很可能不堪重负而死去。

  2,对数据库的操作(查询数据):大家都知道缓存,这里的“分布式缓存服务器群”就是一个缓存,但它是一个有很多服务器连接起来的大型缓存,比如facebook有成千上万台服务器通过memcached连接成一个分布式缓存服务器群。“应用服务器群”首先会向“分布式缓存服务器群”获取数据,如果缓存的数据过期,再向“数据库群”获取数据,并再次把数据更新到缓存中,以便下次使用。

  CPU访问缓存的速度要远远快于访问硬盘的速度,大型web系统每天有大量PV,海量的访问,如果没有缓存,每次访问都得从数据库中查询,那是不可想象的。再者,面对数据库的海量数据,缓存必须通过分布式解决,因为一台机器的缓存不足以应付那么大的数据量。

  3,对数据库的操作(总结):不管是对数据库的提交还是查询,都有两个特点。第一,批量操作,对数据库的操作次数要远远低于系统的访问次数;第二,都经过内存,提交过程的“异步队列”和访问过程中的“分布式缓存”都是内存。这样的数据操作增加了系统的访问速度,同事减少了数据库的压力。

  4,“动态web服务器群”直接面对用户访问,当用户向系统查询或者提交数据时,“动态web服务器群”只做一部分程序运算,设计到数据库操作的运算,直接调用“应用服务器群”来完成。

  这样可以平均分担服务器的压力,而且使系统各层级各部门职责分明,便于管理。

  5,“应用服务器群”会不断把一些既定的内容生成html静态页,保存到“静态web服务器群”中。用户对这些内容的访问,系统会提供静态页的链接,使用户直接访问静态页。

  服务器对静态页的处理和动态页处理相比,大大减少了CPU的压力。另外,生成静态页也减少了缓存的压力,因为一般的静态页用不到复杂的缓存。

  6,“文件服务器群”存储了系统的海量图片、视频等文件,于是这个服务器群需要很大的硬盘存储空间。用户访问网页,网页会加载其中相应的图片或视频。文件服务器对CPU和网络带宽的要求都相当高,单独用一个服务器群存储处理文件时,可以为这个服务器群单独加大带宽和CPU速度。

  7,至于左上角的“外部资源,比如Google搜索和报表”,我暂时还不明白什么意思,希望大家多多指教。

membership是微软从.net2.0开始加入的一个小型的成员管理系统,在petshop4.0演示系统中,也简单的应用了membership做成员管理。membership功能很强大,安全性也高,做中小型的web系统已经足够用了。

  根据我应用Membership这么长时间的经验,membership的配置有如下步骤:

  1,配置数据库:即找到C:\Windows\Microsoft.NET\Framework\v2.0.50727\aspnet_regsql.exe,运行选择相应的数据库做配置,完成之后,再刷新数据库会看到已经生成了相应的表、存储过程和视图等。

  

  2,增加web.config节点:找到C:\Windows\Microsoft.NET\Framework\v2.0.50727\aspnet_regsql\CONFIG\machine.config文件,找到membership, profile 和roles(如果用到角色的话)配置节点,复制过来,放在自己的程序web.config的<system.web>下面。

  

  3,更改web.config配置:然后把其中的数据库连接字符串改成自己的,再加上profile的属性。最后把authentication的模式设置成forms,并设置默认页,登录页和session过期时间。

  

  4,添加角色:运行“asp.net配置”,启用角色,添加角色,比如可以添加“admin”和“user”两个角色。添加完成之后,可以看看aspnet_Roles表中,是否已经有了刚刚添加的角色。(如果程序不应用角色,这一步可以省略)。然后可以新建用户,同时为新建的用户指定相应的角色。

  

  5,编辑角色权限:即在web程序中新建需要的文件夹,比如新建admin和user两个文件夹,admin里存放管理员的操作页面,user中存放用户的操作页面。然后在“aspnet配置”的“管理访问规则”里面添加相应的访问规则。比如admin文件夹只可以admin角色访问,不能让user角色用户或匿名用户访问。编辑完成之后,可以刷新admin文件夹,可以看到一个web.config文件,打开可以看到访问规则的配置。 

  

  6,整理页面:在登录页面要添加login控件,在注册页面要添加createuserwizard控件,在主页面要添加loginview控件,loginname控件,loginstatus控件,在修改密码页面要添加changepassword控件等等。

  

  7,管理用户:用户注册登录和权限规则都OK了,但是怎么能让管理员看到并且管理已经的注册的用户呢。其实这也很简单,membership提供了足够的api来让你完成这些功能。这些用文字写不清楚的东西也不再这里一一赘述了,以后会给大家做一个专门的教程。

  经过以上几步,就差不多完成了一个成员管理的小构架,然后就可以在这个基础上继续完成系统。今天就简单写一写membership的应用过程,初学者可能看的一头雾水。这很正常。近期我会抽出空闲时间,做一个完整的程序,把membership全面的讲解给学习者。

  另外,那些大型系统的成员管理,已经不是membership所能解决的了。大型系统肯定用自己写出的程序,不会用任何一个已经做好的东西。比如facebook不会选用.net构架,不是因为php, linux免费便宜,而是因为一旦选用了.net,就会处处受到微软的限制和监视,不安全。就像国内那些军工企业不会用windows系统一样。

  这里不是说微软.net不好,只是大家对这种微软的那些“糖衣炮弹”也不要过于迷恋,它的确可以帮助你快速的开发出一个系统,但是指望它做大做好做成功,是不可能的。打个比方,一个web页面,不要光依赖与工具箱里拖控件,数据连接不要只依赖与gridview和sqldatasource,如果你只会那些,你只能是个简单的低级趣味的程序码工。

原文地址:https://www.cnblogs.com/Leo_wl/p/2111124.html