大型网站技术架构(二)架构模式

news/2024/5/21 1:16:16/文章来源:https://blog.csdn.net/weixin_34194359/article/details/92654470

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

 每一个模式描述了一个在我们周围不断重复发生的问题及该问题解决方案的核心。这样,你就能一次又一次地使用该方案而不必做重复工作。

          所谓网站架构模式即为了解决大型网站面临的高并发访问、海量数据、高可靠运行灯一系列问题与挑战。为此,在实践中提出了许多解决方案,以实现网站高性能、高可靠性、易伸缩、可扩展、安全等各种技术架构目标。

1、分层

        分词是企业应用系统中最常见的一种架构牧师,将系统在横向维度上切分成几个部分,每个部分负责一部分相对简单并比较单一的职责,然后通过上层对下层的依赖和调度组成一个完整的系统。

        在网站的分层架构中,常见的为3层,即应用层、服务层、数据层。应用层具体负责业务和视图的展示;服务层为应用层提供服务支持;数据库提供数据存储访问服务,如数据库、缓存、文件、搜索引擎等。

       分层架构是逻辑上的,在物理部署上,三层架构可以部署在同一个物理机器上,但是随着网站业务的发展,必然需要对已经分层的模块分离部署,即三层结构分别部署在不同的服务器上,是网站拥有更多的计算资源以应对越来越多的用户访问。

      所以虽然分层架构模式最初的目的是规划软件清晰的逻辑结构以便于开发维护,但在网站的发展过程中,分层结构对网站支持高并发向分布式方向的发展至关重要

2、分隔

       如果说分层是将软件在横向方面进行切分,那么分隔就是在纵向方面对软件进行切分。

       网站越大,功能越复杂,服务和数据处理的种类也越多,将这些不同的功能和服务分隔开来,包装成高内聚低耦合的模块单元,不仅有助于软件的开发维护也便于不同模块的分布式部署,提高网站的并发处理能力和功能扩展能力。

      大型网站分隔的粒度可能会很小。比如在应用层,将不同业务进行分隔,例如将购物、论坛、搜索、广告分隔成不同的应用,有对立的团队负责,部署在不同的服务器上。

3、分布式

       对于大型网站,分层和分隔的一个主要目的是为了切分后的模块便于分布式部署,即将不同模块部署在不同的服务器上,通过远程调用协同工作。分布式意味着可以使用更多的计算机完同样的工作,计算机越多,CPU、内存、存储资源就越多,能过处理的并发访问和数据量就越大,进而能够为更多的用户提供服务。

       在网站应用中,常用的分布式方案有一下几种.

       分布式应用和服务:将分层和分隔后的应用和服务模块分布式部署,可以改善网站性能和并发性、加快开发和发布速度、减少数据库连接资源消耗。

       分布式静态资源:网站的静态资源如JS、CSS、Logo图片等资源对立分布式部署,并采用独立的域名,即人们常说的动静分离。静态资源分布式部署可以减轻应用服务器的负载压力;通过使用独立域名加快浏览器并发加载的速度。

       分布式数据和存储:大型网站需要处理以P为单位的海量数据,单台计算机无法提供如此大的存储空间,这些数据库需要分布式存储。

       分布式计算:目前网站普遍使用Hadoop和MapReduce分布式计算框架进行此类批处理计算,其特点是移动计算而不是移动数据,将计算程序分发到数据所在的位置以加速计算和分布式计算。

4、集群

       对于用户访问集中的模块需要将独立部署的服务器集群化,即多台服务器部署相同的应用构成一个集群,通过负载均衡设备共同对外提供服务。

       服务器集群能够为相同的服务提供更多的并发支持,因此当有更多的用户访问时,只需要向集群中加入新的机器即可;另外可以实现当其中的某台服务器发生故障时,可以通过负载均衡的失效转移机制将请求转移至集群中其他的服务器上,因此可以提高系统的可用性

5、缓存

       缓存目的就是减轻服务器的计算,使数据直接返回给用户。在现在的软件设计中,缓存已经无处不在。具体实现有CDN、反向代理、本地缓存、分布式缓存等。

       使用缓存有两个条件:访问数据热点不均衡,即某些频繁访问的数据需要放在缓存中;数据在某个时间段内有效,不过很快过期,否在会因为数据过期而脏读,影响数据的正确性。

6、异步

      使用异步,业务之间的消息传递不是同步调用,而是将一个业务操作分成多个阶段,每个阶段之间通过共享数据的方法异步执行进行协作。

      具体实现则在单一服务器内部可用通过多线程共享内存对了的方式处理;在分布式系统中可用通过分布式消息队列来实现异步。

      异步架构的典型就是生产者消费者方式,两者不存在直接调用。

7、冗余

      网站需要7×24小时连续运行,那么就得有相应的冗余机制,以防某台机器宕掉时无法访问,而冗余则可以通过部署至少两台服务器构成一个集群实现服务高可用。数据库除了定期备份还需要实现冷热备份。甚至可以在全球范围内部署灾备数据中心。

8、自动化

      具体有自动化发布过程,自动化代码管理、自动化测试、自动化安全检测、自动化部署、自动化监控、自动化报警、自动化失效转移、自动化失效恢复等。

9、安全

      网站在安全架构方面有许多模式:通过密码和手机校验码进行身份认证;登录、交易需要对网络通信进行加密;为了防止机器人程序滥用资源,需要使用验证码进行识别;对常见的XSS攻击、SQL注入需要编码转换;垃圾信息需要过滤等。

转载于:https://my.oschina.net/zhanghaiyang/blog/595926

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

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

相关文章

网站设计常用技巧(转)

先说一下写这篇文章的目的吧,这上面的东西很多不是我写的,也不是我总结的,这点我肯定,呵呵,我希望大家也能提提你自己的建议,希望不断总结, 让更多的网站设计技巧出现在这里,方便 查…

(一)高并发redis学习笔记:小电商网站架构与高并发架构区别

主要的知识: redis集群storm集群nginxtomcatmysql 真正能支撑高并发以及高可用的复杂系统中的缓存架构有哪些东西? (1)如何让redis集群支撑几十万QPS高并发99.99%高可用TB级海量数据企业级数据备份与恢复?&#xff1…

配置ISA Server以创建站点到站点*** 连接之二(接续之一)

在本练习中,您将对两个 ISAServer 阵列进行配置以创建站点到站点 *** 连接。注意:本实验室练习使用以下计算机:Denver - Florence - Berlin - Istanbul 注意:在以下任务中,您将配置 GERMANY 阵列以使用站点到站点 *** …

PHP网站头部通栏设计

1.把网站添加到桌面&#xff1a; <a href"shortcut.php">放到桌面上</a> <?PHP$Shortcut "[InternetShortcut]URLhttp://www.xxx.comIDListIconFilehttp://www.xxx.com/favicon.ico//图标IconIndex1[{000214A0-0000-0000-C000-000000000046}]P…

如何更有效使用 Rational AppScan 扫描大型网站,第 1 部分: 工作原理及技术分析...

近来看到AppScan的技术介绍&#xff0c;感觉不错&#xff0c;与同行分享。 Rational AppScan&#xff08;简称 AppScan&#xff09;其实是一个产品家族&#xff0c;包括众多的应用安全扫描产品&#xff0c;从开发阶段的源代码扫描的 AppScan source edition&#xff0c;到针对 …

黄聪:Discuz X2.0 SEO:论坛面包屑导航伪静态 去掉面包屑导航forum.php(转)

自从Discuz被腾讯这头大牛收购后的确越来越强大了&#xff0c;云平台是最大的亮点&#xff0c;但是Discuz X2.0在伪静态方面仍然非常不尽人意。目前世面主流的论坛程序phpwind和Discuz都无法做到全站完美伪静态&#xff0c;这对SEO影响很大&#xff0c;如果网站的权重不够高&am…

22个优秀的网站后台模板

22个优秀的网站后台模板 2011年09月3日 发布在 设计 由ding 留下评论不错的后台模版&#xff0c;不过&#xff0c;需要自己去汉化。这个应该问题不大。 还有&#xff0c;看模版的话&#xff0c;建议用火狐或chrome。外国网站一向不是很兼容ie6的&#xff0c;你懂的。 1&a…

PrestaShop加速11招立刻加速PrestaShop外贸电子商务网站无额外插件

2019独角兽企业重金招聘Python工程师标准>>> 自从PrestaShop进入1.4时代&#xff0c;我们会发现PrestaShop越来越慢了&#xff01;比如你用的是justhost空间总会收到服务商提示你cpu超负荷的邮件&#xff0c;最后你的PrestaShop VPS被关闭了&#xff01; 今天&#…

推荐10个堪称神器的学习网站

天一早做了个恶梦&#xff0c;梦到被老板辞退了。虽然说在我们公司&#xff0c;只有我辞退老板的份&#xff0c;没有老板辞退我这一说&#xff0c;但是还是被吓得 4 点多都起来了。&#xff08;主要是因为我掌握着公司所有的核心源码&#xff0c;哈哈哈&#xff09; 既然 4 点…

发布网站详细步骤(.Net)

&#xff08;i&#xff09;打开需要发布的网站 右键需要发布的项目 点击下拉框新建配置文件&#xff0c;输入配置文件名称&#xff0c;点击确定&#xff0c;下一步 发布方法选文件系统&#xff0c;目标位置&#xff1a;项目的根目录 配置选Release 点击发布 &#xff08;ii&…

linux查看某软件是否运行,linux如何查看某个软件是否安装_网站服务器运行维护...

linux中如何重命名文件_网站服务器运行维护linux中重命名文件的方法&#xff1a;可以使用mv命令来重命名文件&#xff0c;具体用法为【mv 源文件名 目标文件名】。例如【mv aaa bbb】&#xff0c;表示将aaa文件重命名为bbb。linux有多种方式安装软件&#xff0c;查看某个软件是…

静态网站托管_MQ

静态网站托管_MQ 1、安装surge npm install --global surge2、将需要部署的静态网页放到一个文件夹 3、命令行进入到该文件夹下&#xff0c;执行surge命令 surge4、然后一直根据提示注册账号和设置密码&#xff0c;使劲敲回车回车&#xff0c;知道完成生成域名&#xff1b;然…

[转载]网站地址栏小图标favicon.ico的制作方法

有人也许会好奇&#xff0c;有的网址前面有个漂亮的小图标而且有的网站图标还会动&#xff0c;这是怎么做到的呢&#xff1f; 如下图所示&#xff1a; 那个小图标有个名字叫favicon.ico&#xff0c;网站图标虽小但可以起到很好的点缀作用&#xff0c;尤其是当浏览者将你的网站放…

一个引号导致1个小时网站打不开

咱们就说下这个例子&#xff0c;提醒广大开发在写SQL的时候一定要仔细&#xff01;当时情况是这样的&#xff0c;一个慢SQL把数据库CPU连接数跑满&#xff0c;由于并发压力大&#xff0c;CPU空闲瞬时为0&#xff0c;过一会机器被HANG死&#xff0c;连接不上。因涉及公司隐私问题…

java已被阻止因为它已过时_Win7系统访问网站提示Silverlight已被阻止因为它已过时怎么办...

在win7系统中自带有IE浏览器&#xff0c;很多用户都喜欢使用IE浏览器来访问一些网站&#xff0c;有时候会遇到提示Silverlight已被阻止因为它已过时需要更新的提示&#xff0c;这是怎么回事呢&#xff0c;现在随小编一起来看看Win7系统访问网站提示Silverlight已被阻止因为它已…

google快速翻译英文网站

查资料、访问英文网站&#xff0c;看不懂英语&#xff1b;使用翻译器、翻译网站等等又嫌太麻烦&#xff01; 直接、快速简单一键直接翻译英文网站所有内容&#xff1b; http://translate.google.com/translate?u网址 ‘网址’换成你要翻译的英文网站&#xff1b;直接把上面地址…

java 企业 网站源码 后台 springmvc SSM 前台 静态化 代码生成器

前台&#xff1a; 支持四套模版&#xff0c; 可以在后台切换系统介绍&#xff1a;1.网站后台采用主流的 SSM 框架 jsp JSTL&#xff0c;网站后台采用freemaker静态化模版引擎生成html2.因为是生成的html&#xff0c;所以访问速度快&#xff0c;轻便&#xff0c;对服务器负担小3…

服务器上无此文件自动转到404,网站服务器经常性出现404错误的解决方案

网络上浏览页面呈现的过错链接提示多种多样&#xff0c;呈现404notfound也算是一个很普遍的问题&#xff0c;信任上网族都遇到过该情况&#xff0c;当咱们翻开某网页时会呈现提示&#xff1a;404NotFound&#xff0c;看到该页面心境本就糟糕了&#xff0c;404notfound首要用于浏…

(其他)80个提升自我的网站,只收藏,但并不看系列.

转载于:https://www.cnblogs.com/historylyt/p/9165686.html

网站首页怎么总是php,页脚总是相同怎么办

页脚总是相同的解决办法&#xff1a;首先打开要设置页脚的文档&#xff1b;然后点击菜单栏中的【插入】选项&#xff0c;并选择【页脚】选项&#xff1b;接着依次点击菜单栏中的【页面布局】、【分隔符】选项&#xff1b;最后取消勾选【与上一节相同】选项即可。页脚总是相同的…