高性能网站架构


系统总体架构:公司在US东海岸和西海岸均有一个服务器集群,每一个集群大概有20多台高性能服务器。
   1)当客户访问时,有一个统一的第三方硬件分配系统,将访问分别导向最近的集群之上进行访问。毕竟光纤javascript

中的信号也是须要时间进行传输的,并且如此也是能够对总体系统的安全性上进行备份并在访问压力上进行流css

量分流。
   2)当导到最近的集群后,又有一第三方负载均衡系统将访问分别导向到集群中不一样的服务器上进行访问。
   同时服务器也会进行更进一步的细分:(1)Web浏览服务器;(2)订单服务器;(3)SQL Server服务器
其中(1)和(2)的大体分别设置为4:1,由于在天天的访问客户中,大概只有1/4或1/5的客户下订单。
   3)客户在网站上下订单后,由于每时每刻的订单量都是成千上万的,因此咱们的订单都是采用异步方法进html

行传输以及写入。首先是经过Web Service将接收到的订单写入到MSMQ(微软自带的消息队列)中,而后经过java

WindowsService将MSMQ中的信息写入到SQL Server数据库中。
   4)将SQLServer中的数据根据必定的条件在合适的时候所有写入到一个统一的数据库中。算法

从数据库中读取信息显示到网站页面上的步骤和优化方法:
   1)将数据写入的数据库(A数据库)映射一份到其它服务器上的的数据库(B数据库)中,B数据库中的字段数据库

通常不进行读写的操做,而是只进行读取操做。在B数据库中对须要经常读取的数据表进行索引设置,以加快查浏览器

询时的速度。
   2)每隔必定的时间(本网站通常是半小时),后台跑一个应用程序,将网站上的畅销的产品及其特性(包含安全

其具体性能参数、库存数量等)生成一个XML文件,并存储在内存中,以即可以更快的向网站显示信息。
   3)网站上的搜索功能使用第三方搜索软件,如Endeca,这样能够更快的从内存中查询到须要的数据(因本服务器

网站产品极多,使用直接链接数据库进行搜索,会极大的影响带宽和速度)。
 
 网站上要用到的一些安全设置:
   1)WebService暴露在网站上时,最好使用非对称的加密算法,这样就算黑客知道了客户端的密钥,也是无网络

法创建链接的,由于服务端每一次的密钥都是不一样的。
   2)页面上的URL连接进行加密显示,如不显示asp、aspx、jsp等,而是将其后缀名字进行必定的转换再显示

给客户。而且当使用分页或搜索时,URL中不要显示出页面序号或搜索的字段号,而是通过必定的算法转换后,

将通过加密的URL显示再浏览器中。这样能够保证咱们不向客户端显示出数据库中表的字段名字,由于这样是不

安全的。
  3)Web服务器或数据库服务器的用户名和密码要常常进行更改。
  4)服务器上的一些端口号要进行关闭,或进行受权开通。并要常常升级系统补丁和杀毒软件的病毒库。
  5)数据库连接字符串不要明码写到Web.config中,而显示通过假装的字符串(例如:userid=[USERID],

password=[password]),同时将用户名和密码放入一个自定义的文件中,放到d、e等磁盘中都可。由于在磁

盘中能够进一步的限制由哪些用户能够打开此文件。在此文件中显示的也是通过进一步加密后的用户名和密码

,总之,是不管在任何地方都不要显示明码的用户名和密码,而是在系统运行时,经过解码来获得正确的数据

库连接字符串,虽然在性能上有些损失,可是对数据库中的数据倒是更加安全。
  6)数据库中要尽可能避免使用Admin级别的用户名,而是针对不一样的数据库使用不一样的用户名和密码(最好针

对一个实例中的各个不一样的数据库分别分配用户名和密码,也能够对每一个实例中的不一样的数据库针对不一样的

team分别分配用户名和密码)。同时将其角色的级别要降到最低,恰好能够操做数数据库中的表便可。

 

  网站上要要用到的一些小常识:
   1)对于加载javascript和css文件,须要在HTML的头文件中进行加载。由于Web的展现是对html进行逐行扫

描展现的,若是页面载入的慢一些的话,而javascript和css文件在文件最后加载,那么可能用户看到的是没有

渲染的页面,而最后加载后,页面又从新刷新而从新应用这些设置。这样就浪费了系统的页面响应时间。对于

大流量的网站来讲是影响很是大的。
  2)尽可能少用一些服务器端控件,而多使用Html控件,由于微软对于服务器控件多有一些Viewstate,这样可

能致使网络流量的增长。
  3)若是对于一些txt或固定的文本型页面,咱们能够运用IIS中的Gzip功能,将其进行压缩,以减小网络间的

数据流量(图片对此没法进行压缩)。
  4)对于网站上使用最多的图片来讲,由于其是最浪费网络数据流量的,因此咱们在其数据量很是大时,咱们

借用第三方软件(其在全世界各处均有大型服务器集群,能够提供各类服务)。咱们将咱们上传的图片传到我

们的图片服务器上后,第三方的服务器上每隔几秒就会从咱们的服务器上拉最新的图片数据,并将其存储到世

界各地的服务器集群中,由于其带宽是定制的,因此网站访问图片时,能够快速下载下来。比本身从自身的图

片服务器上下载要省事省时(并且不爽其下载速度时,还能够骂骂他们,呵呵)。

相关文章
相关标签/搜索