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

news/2024/4/27 19:16:13/文章来源:https://blog.csdn.net/john521/article/details/83735013
这里的大型网站架构只包括高互动性高交互性的数据型大型网站,基于大家众所周知的原因,我们就不谈新闻类和一些依靠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到海内校内,都在考虑这个问题,它可以更有效的留住用户并激发用户的更多的兴趣以及让更多的人帮助你做最有效的开发。这个时候一个有效的数据共享平台,数据开放平台就成为必不可少的途径了,而在开放的接口的情况保证数据的安全性和性能,又是一个我们必须要认真思考的问题了。

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

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

相关文章

网站安全扫描

无论是企业网站还是个人网站,网站安全都是一个很重要的模板,因为网站安全直接影响到一个网站的信誉,流量和盈利。 网站被黑带来的挂马,挂黑链,网站内容篡改,病毒的扩散点,用户信息泄漏等等的问题…

分页第一页用0还是1_白杨SEO:5000字从0-1拆解如何用知乎排名做精准引流和变现?...

短视频,自媒体,达人种草一站服务大纲如下:1、知乎排名原理解析2、做知乎排名具体步骤3、账号注册及定位(重要)4、用户需求关键词挖掘5、如何制作出一篇高质量内容?(核心)6、被动引流注意事项7、实战案例举例一、知乎排名原理解析1、关于知乎…

哪里购买域名_谷歌SEO中老域名的重要性

老域名对搜索引擎的排名是有帮助作用的,百度和谷歌都是一样。搜索引擎对老域名有优待,给予更高的权重,因为它认为老域名更值得信赖。去哪里找老域名?www.freshdrop.com如何查看域名有没有“黑历史”?Banned from AdSen…

按钮提交所有数据_Shopify网站地图该如何提交给GOOGLE

想知道如何使用Shopify网站地图?您需要了解它们还是对Sitemaps和Shopify做任何事情?在本指南中,我们将涵盖与Shopify站点地图有关的所有内容-是的,如果您计划运营成功的Shopify商店,则需要知道它们的含义。更好的SEO意…

彻底解决网站跨域请求

什么是跨域问题 是两个项目之间用ajax(前端类似于后端技术httpClient技术)实现通讯,如果浏览器访问的域名地址与ajax访问的地址不一致的情况下,默认情况下浏览器会有安全机制,这个机制导致跨域问题,会无法…

跨域网站请求解决方案

第一节-彻底解决网站跨域请求问题引入 第二节-网站跨域项目环境搭建题) 第三节-模拟网站跨域问题演示 第四节-网站跨域五种解决方案 第五节-使用jsonp解决网站跨域问题 第六节-使用httpclient内部转发解决跨域问题 第七节-使用Nginx搭建API网关 第八节-Nginx网关配置解决…

kibana 查看有多少索引库_广州谷歌SEO优化外包一年多少钱

原标题:广州谷歌SEO优化外包一年多少钱关键词定位不精准,搜索到的都是同行竞争对手;网站有流量,转化率却太低,还是无法形成询盘;优化团队缺乏专业知识和技术,摸不透关键词排名规律;自…

spring boot 入门_SpringBoot入门建站全系列(二十)SpringDataJpa使用乐观锁与悲观锁...

SpringBoot入门建站全系列(二十)SpringDataJpa使用乐观锁与悲观锁一、概述之前有两篇《SpringBoot入门建站全系列(五)使用Spring-data-jpa操作数据库CRUD》和《SpringBoot入门建站全系列(六)Spring-data-jp…

woo产品页面描述追加内容_自建站产品详情页怎么设计?一文教你打造爆款产品详情页!...

点击“蓝字”关注,一起酷爽一夏!对于自建站卖家来说,Facebook广告能有效地将潜在客户吸引到你的网站。人们在社交媒体上看到有趣的产品或诱人的产品之后,他们经常去该网站冲动购买。但是,在购买产品之前,他们会浏览产品…

微信内访问第三方网站 聚焦input后 去除红色提醒栏

有是在微信内访问部分网站聚焦input后总是会提醒 “防欺诈盗号,请勿支付或输入QQ密码”, 而部分网站input聚焦后却没有这种提醒, 一直到今天,设置公众号的时候,发现了还有这样的一项 我有一个个人站点,备…

微信小程序 搜索优化指南(SEO)

官方 微信小程序 搜索优化指南(SEO) 值的研究一下, 一个好的小程序名称及头像也至关重要, 换了一个短的、充满关键词的小程序名称、明显的包含内容的小程序头像, 搜索流量明显翻倍了,每日访问量约100.

将网站从 ECS 转移到 webfiy,『只需要 git push,后面的事就不用操心了』

CloudBase Webify 为您的 Web 应用提供一站式托管服务,支持包括静态网站、动态 Web 服务各种类型的 Web 应用,提供默认域名、自定义域名、HTTPS、CDN 加速,提升 Web 应用的性能和安全性,此外还提供基于 Git 的工作流、DevOps 流程…

win11系统前端IIS部署发布网站步骤

目录IIS安装配置1.打开控制面板2.选择启用或关闭Windows功能3.将Internet Information Services中的三项全部选中,再点击确定添加网站1.开始菜单搜索 IIS,点击打开2.点击侧边打开目录3.点击网站——添加网站4.添加网站配置浏览网站1.选中刚才添加的网站&…

网站可以如此复制?

论坛中碰到如此问题:我们做了一个网站,域名是www.3322173.com 没想到今天忽然发现了www.qiepeng.cn的内容和我们的是一模一样...内容也是同步更新,只是把内容中3322173.com替换成qiepeng.cn 我关闭我自己的IIS后,两个域名都不能访问了. 我郁闷啊,这是什么样的技术哦…

RuiJi.Scraper 3.0 新增爬取链 - 深度爬取网站

RuiJi.Scraper是一款Chrome浏览器插件,可以可视化的对网页进行抽取,并导出抽取结果 本次更新添加爬取链功能,可以从指定页面按照规则设置对网站进行深度爬取 新功能位于新选项卡 - 爬取链 如图所示 我们以CSND搜索为例 创建爬取链 &#xf…

另类网站版式设计欣赏

另类网站版式设计欣赏 当你在创建一个新网站的时候,希望这些网站富有个性的版式设计能给你带来灵感。 Popmatik 这是Rob Leach设计制作的一个个人网站,这个网站用了一个瓶子的底图,网站的内容都在瓶子的这个包装纸上。 Digitalmash.com Digi…

使用Java获取一个动漫网站所有的动漫名

首先创建一个类,用来获取当前页面的链接: public class Link {private String frontStr;private String behindStr;public String linkStr;public Link(){frontStr "http://www.imomoe.ai/so.asp?page";behindStr "&dq%C8%D5%B1%…

Vue 项目(网站应用)接入QQ互联qq登录接口 汇总

还是按照顺序从头到尾介绍一下(前面都知道的,可以直接看后面的VUE部分),如果有不对的地方,也欢迎大神指导 1、申请appid和appkey(这指定是必须的了) 申请地址 申请地址地址 1.1、注册开发者 1.1…

asp.net 网站源码,还原

asp.net 网站源码,还原1. 环境与系统2. IIS安装与配置3. 网站还原过程4. 遇到的bug备份服务器(Windows Server 2008 R2)的asp.net网站源码,现需仿真还原网站。 1. 环境与系统 台式计算机    Windows 7 旗舰版 2. IIS安装与配置 详见。 3. 网站还原…

奇奇seo优化软件_seo搜索优化软件产品

产品seope4c65搜索优化软件,5g时代的到来,使得很多企业对移动互联网的推广预算再次增加。究其原因,是移动互联网用户数量的增加,使得行业竞争对手增多,网络推广成本提高。如果预算不增加,企业网站的排名总是…