大型网站架构不得不考虑的10个问题

news/2024/5/20 11:09:54/文章来源:https://blog.csdn.net/weixin_34419321/article/details/92090405

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

这里的大型网站架构只包括高互动性高交互性的数据型大型网站,基于大家众所周知的原因,我们就不谈新闻类和一些依靠HTML静态化就可以实现的架构了,我们以高负载高数据交换高数据流动性的网站为例,比如海内,开心网等类似的web2.0系列架构。我们这里不讨论是PHP还是JSP或者.NET环境,我们从架构的方面去看问题,实现语言方面并不是问题,语言的优势在于实现而不是好坏,不论你选择任何语言,架构都是必须要面对的。

这里讨论一下大型网站需要注意和考虑的问题

1、海量数据的处理

众所周知,对于一些相对小的站点来说,数据量并不是很大,select和update就可以解决我们面对的问题,本身负载量不是很大,最多再加几个索引就可以搞定。对于大型网站,每天的数据量可能就上百万,如果一个设计不好的多对多关系,在前期是没有任何问题的,但是随着用户的增长,数据量会是几何级的增长的。在这个时候我们对于一个表的select和update的时候(还不说多表联合查询)的成本的非常高的。

2、数据并发的处理

在一些时候,2.0的CTO都有个尚方宝剑,就是缓存。对于缓存,在高并发高处理的时候也是个大问题。在整个应用程序下,缓存是全局共享的,然而在我们进行修改的时候就,如果两个或者多个请求同时对缓存有更新的要求的情况下,应用程序会直接的死掉。这个时候,就需要一个好的数据并发处理策略以及缓存策略。

另外,就是数据库的死锁问题,也许平时我们感觉不到,死锁在高并发的情况下的出现的概率是非常高的,磁盘缓存就是一个大问题。

3、文件存贮的问题

对于一些支持文件上传的2.0的站点,在庆幸硬盘容量越来越大的时候我们更多的应该考虑的是文件应该如何被存储并且被有效的索引。常见的方案是对文件按照日期和类型进行存贮。但是当文件量是海量的数据的情况下,如果一块硬盘存贮了500个G的琐碎文件,那么维护的时候和使用的时候磁盘的Io就是一个巨大的问题,哪怕你的带宽足够,但是你的磁盘也未必响应过来。如果这个时候还涉及上传,磁盘很容易就over了。

也许用raid和专用存贮服务器能解决眼下的问题,但是还有个问题就是各地的访问问题,也许我们的服务器在北京,可能在云南或者新疆的访问速度如何解决?如果做分布式,那么我们的文件索引以及架构该如何规划。

所以我们不得不承认,文件存贮是个很不容易的问题

4、数据关系的处理

我们可以很容易的规划出一个符合第三范式的数据库,里面布满了多对多关系,还能用GUID来替换INDENTIFY COLUMN 但是,多对多关系充斥的2.0时代,第三范式是第一个应该被抛弃的。必须有效的把多表联合查询降到最低。

5、数据索引的问题

众所周知,索引是提高数据库效率查询的最方面最廉价最容易实现的方案。但是,在高UPDATE的情况下,update和delete付出的成本会高的无法想想,笔者遇到过一个情况,在更新一个聚焦索引的时候需要10分钟来完成,那么对于站点来说,这些基本上是不可忍受的。

索引和更新是一对天生的冤家,问题A,D,E这些是我们在做架构的时候不得不考虑的问题,并且也可能是花费时间最多的问题。

6、分布式处理

对于2.0网站由于其高互动性,CDN实现的效果基本上为0,内容是实时更新的,我们常规的处理。为了保证各地的访问速度,我们就需要面对一个绝大的问题,就是如何有效的实现数据同步和更新,实现各地服务器的实时通讯有是一个不得不需要考虑的问题。

7、Ajax的利弊分析

成也AJAX,败也AJAX,AJAX成为了主流趋势,突然发现基于XMLHTTP的post和get是如此的容易。客户端get或者post 到服务器数据,服务器接到数据请求之后返回来,这是一个很正常的AJAX请求。但是在AJAX处理的时候,如果我们使用一个抓包工具的话,对数据返回和处理是一目了然。对于一些计算量大的AJAX请求的话,我们可以构造一个发包机,很容易就可以把一个webserver干掉。

8、数据安全性的分析

对于HTTP协议来说,数据包都是明文传输的,也许我们可以说我们可以用加密啊,但是对于G问题来说的话,加密的过程就可能是明文了(比如我们知道的QQ,可以很容易的判断他的加密,并有效的写一个跟他一样的加密和解密方法出来的)。当你站点流量不是很大的时候没有人会在乎你,但是当你流量上来之后,那么所谓的外挂,所谓的群发就会接踵而来(从qq一开始的群发可见端倪)。也许我们可以很的意的说,我们可以采用更高级别的判断甚至HTTPS来实现,注意,当你做这些处理的时候付出的将是海量的database,io以及CPU的成本。对于一些群发,基本上是不可能的。笔者已经可以实现对于百度空间和qq空间的群发了。大家愿意试试,实际上并不是很难。

9、数据同步和集群的处理的问题

当我们的一台databaseserver不堪重负的时候,这个时候我们就需要做基于数据库的负载和集群了。而这个时候可能是最让人困扰的的问题了,数据基于网络传输根据数据库的设计的不同,数据延迟是很可怕的问题,也是不可避免的问题,这样的话,我们就需要通过另外的手段来保证在这延迟的几秒或者更长的几分钟时间内,实现有效的交互。比如数据散列,分割,内容处理等等问题。

10、数据共享的渠道以及OPENAPI趋势

Openapi已经成为一个不可避免的趋势,从google,facebook,myspace到海内校内,都在考虑这个问题,它可以更有效的留住用户并激发用户的更多的兴趣以及让更多的人帮助你做最有效的开发。这个时候一个有效的数据共享平台,数据开放平台就成为必不可少的途径了,而在开放的接口的情况保证数据的安全性和性能,又是一个我们必须要认真思考的问题了。

转载于:https://my.oschina.net/u/1385143/blog/174942

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_794455.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

万网稳居国内域名网站榜首 西部数码跃居第二

据国际统计机构Alexa公布的最新数据显示,4月第二周(4月9日-4月15日),国内域名主机网站覆盖率最高的仍旧是中国万网,达 1730。西部数码跃居第二,达620。易名中国跌至第三,达570。下面&#xff0c…

MYSQL数据库自动本地/异地双备份/MYSQL增量备份[连载之构建百万访问量电子商务网站]...

MYSQL数据库自动本地/异地双备份/MYSQL增量备份[连载之构建百万访问量电子商务网站]出处:http://jimmyli.blog.51cto.com/我站在巨人肩膀上Jimmy Li 作者:Jimmy Li 关键词:网站,电子商务,Shell,自动备份,异地备份 ------[连载之电子商务系统架…

网站备案流程

网站备案的备案流程 1、阿里备案的登录账号和阿里服务器的账号不是同一个,需要重新注册 2、账号注册成功后重新登录进入,填写企业资料(如果是个人备案填写个人资料) 3、填写产品信息 4、填写主体信息 5、填写网站信息,…

网站侵权处理案例

一个案例,和你的情况得很相像,看一下。很长,但详细。从中国网页第一侵权案看网络纠纷的管辖权问题原告:瑞得(集团)公司被告:东方信息服务公司(简称东方公司) 〔案情介绍〕…

Screenfly – 各种设备的屏幕和分辨率下快速测试网站

Screenfly 让你能够在各种设备的屏幕和分辨率下查看你的网站。输入网址,并点击GO开始浏览网页。Screenfly 可以使用代理服务器来模拟设备,当您查看您的网站,代理服务器模仿您所选择的设备的用户代理字符串。 您可能感兴趣的相关文章特别推荐&…

如何解决Chrome首页被流氓网站劫持的问题?

如何解决Chrome首页被流氓网站劫持的问题? 点击这里查看解决流氓网站劫持的方法。 以上方法解决不了,参考以下的 通过chrome://view 查看命令行处是否有异常网址,如果有可能考虑如下方式解决 Chrome命令行参数畅谈(一) 命令行…

SharePoint 2013 图文开发系列之网站栏

转载自:http://www.cnblogs.com/jianyus/p/3463880.html 网站栏的本质,就是一个xml的描述文件,所以创建过程,基本就是通过Feature部署一个Xml文件,然后修改Xml文件的网站栏描述。 1、添加新项目,选择ShareP…

大型网站架构演进(5)数据库读写分离

在使用缓存后,使大部分的数据读操作访问都可以不通过数据库就能完成,但是仍有一部分读操作(包括未命中缓存的,和缓存过期的)和全部的写操作需要访问数据库,当网站的访问量继续增加后,数据库会因为负载压力过高导致成为…

教你如何创建一个免费的网站

小编先声明一下,我并不是来做广告的!作为一个初学者,刚刚摸索出来一些经验想要拿来跟大家分享罢了!希望能帮助到那些想要做网站的亲们。算是分享一些我个人的经验吧。 PS:现在主机屋已经不提供免费空间服务了&#xff…

Vue.js+express建站

网站基本架构: 基本的CS架构,开发时使用本地服务器,数据库使用云服务器的数据库,方便共享数据,上线时可配置服务器到云服务器。 技术栈: Vue.js: 前端开发框架:响应式数据绑定和组件化开发&…

阿里云、宝塔、wordpress建站

1 阿里云 购买一个学生机就行啦 2 宝塔 2.1 更改阿里云的镜像 技巧01:先关掉阿里云之前的镜像 技巧02:到镜像市场中寻找宝塔的镜像资源 2.2 配置安全组 宝塔的控制面板需要开通端口 8888,所以需要到安全组中去配置端口 2.3 登陆宝塔控制面板 …

大型网站技术架构(五)--网站高可用架构(转)

网站的可用性(Avaliability)描述网站可有效访问的特性。 1、网站可用性的度量与考核 网站不可用时间(故障时间)故障修复时间点-故障发现(报告)时间点 网站年度不可用时间(1-网站不可用时间/年度…

站长,不要忘了你的网站是做什么的

随着互联网技术的发展,大大小小的实体行业进入到互联网,站点竞争进入了前所未有的“革命时代”,越来越多的站点了解并熟悉SEO技术,各个行业的站点流量拼抢到达了一种狂热。对搜索引擎是越来越了解并且熟悉其排名模式。如果今天你跟…

django搭建一个小型的服务器运维网站-拿来即用的bootstrap模板

目录 项目介绍和源码;拿来即用的bootstrap模板;服务器SSH服务配置与python中paramiko的使用;用户登陆与session;最简单的实践之修改服务器时间;查看和修改服务器配置与数据库的路由;基于websocket的实时日志实现&#…

主题网站

主题网站一般国外的多一些 国内的大多也不是原创。都是从国外的网站DOWN来的 先是几个网络硬盘的连接主题很多 http://alexjitaojun.ys168.com/ http://alexjitaojun1.ys168.com/ http://asca.ys168.com/ 1:国内网站 http://www.gznat.com/ http://www.enet.com.cn…

微软Sharepoint管理工具包详解-批量网站集操作

微软Sharepoint管理工具包详解-批量网站集操作 前几天有人问我关于操作网站集的一些问题,其实微软也提供了一个批量操作网站集的功能。在这里我把具体的操作方法提供给大家。 首先,需要从微软官方网站下载管理工具包,下载地址: h…

阿里云+wordpress搭建个人博客网站【小白专用的图文教程】

【正文】 在阿里云上搭建使用个人博客主要分为以下几个步骤: 1、购买阿里云ECS主机 2、购买域名 3、申请备案 4、环境配置 5、安装wordpress 6、域名解析 声明一下,本人对服务器端的知识不是很熟悉,但一心想做个自己的个人网站装一下哔&…

CCTV网站菜单技术学习

以前的一个项目中左右菜单太长&#xff0c;想实现可以左右滚动的效果&#xff0c;可是一直没有找到理想的解决方案&#xff0c;今天突然看到CCTV上菜单很炫&#xff0c;实现了我当时想要的效果。赶快来学习一下。 我判断前台是用下面的代码实现&#xff1a; <div id"im…

用VSTS进行网站压力测试

用VSTS进行网站压力测试 VSTS提供了一个丰富、强大的工具平台&#xff0c;融合了软件开发领域的各个角色&#xff0c;涵盖软件开发生命周期的各个阶段&#xff0c;包括设计&#xff0c;开发&#xff0c;测试&#xff0c;管理&#xff0c;而这一整套构件的融会贯通&#xff0c;…

网站免费在线客服源代码(powertalk系统,修改版,修改客服端由于XP不同不能登录问题)...

首先很感谢博客园里的朋友们的支持和关注,现把Powertalk客服系统进行了代码修改,解决了大部分XP系统不能使用客户端的问题. 同时向大家介绍几个Powertalk控件使用的广告设置技巧. 在中间栏翻滚的广告设置,其实是设置一个URL地址,并连接一个广告字符串,具体设置在PowerTalk\IM\C…