zoukankan      html  css  js  c++  java
  • 大型web系统构架图的理解

    构架图如下:

      

      我们从下往上就行分析:

      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,如果你只会那些,你只能是个简单的低级趣味的程序码工。

  • 相关阅读:
    771. Jewels and Stones
    706. Design HashMap
    811. Subdomain Visit Count
    733. Flood Fill
    117. Populating Next Right Pointers in Each Node II
    250. Count Univalue Subtrees
    94. Binary Tree Inorder Traversal
    116. Populating Next Right Pointers in Each Node
    285. Inorder Successor in BST
    292. Nim Game Java Solutin
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/2111124.html
Copyright © 2011-2022 走看看