浅谈大型网站动态应用系统架构

news/2024/5/9 4:32:06/文章来源:https://blog.csdn.net/xiang_fu/article/details/84085155
动态应用,是相对于网站静态内容而言,是指以c/c++、php、Java、perl、.net等服务器端语言开发的网络应用软件,比如论坛、网络相册、交友、BLOG等常见应用。动态应用系统通常与数据库系统、缓存系统、分布式存储系统等密不可分。

大型动态应用系统平台主要是针对于大流量、高并发网站建立的底层系统架构。大型网站的运行需要一个可靠、安全、可扩展、易维护的应用系统平台做为支撑,以保证网站应用的平稳运行。

大型动态应用系统又可分为几个子系统:

1)Web前端系统

2)负载均衡系统

3)数据库集群系统

4)缓存系统

5)分布式存储系统

6)分布式服务器管理系统

7)代码分发系统

Web前端系统

结构图:

1.jpg

为了达到不同应用的服务器共享、避免单点故障、集中管理、统一配置等目的,不以应用划分服务器,而是将所有服务器做统一使用,每台服务器都可以对多个应用提供服务,当某些应用访问量升高时,通过增加服务器节点达到整个服务器集群的性能提高,同时使他应用也会受益。该Web前端系统基于 Apache/Lighttpd/Eginx等的虚拟主机平台,提供PHP程序运行环境。服务器对开发人员是透明的,不需要开发人员介入服务器管理

负载均衡系统

结构图:

2.jpg

负载均衡系统分为硬件和软件两种。硬件负载均衡效率高,但是价格贵,比如F5等。软件负载均衡系统价格较低或者免费,效率较硬件负载均衡系统低,不过对于流量一般或稍大些网站来讲也足够使用,比如lvs, nginx。大多数网站都是硬件、软件负载均衡系统并用。

数据库集群系统

结构图:

3.jpg

由于Web前端采用了负载均衡集群结构提高了服务的有效性和扩展性,因此数据库必须也是高可靠的,才能保证整个服务体系的高可靠性,如何构建一个高可靠的、可以提供大规模并发处理的数据库体系?

我们可以采用如上图所示的方案:

1) 使用 MySQL 数据库,考虑到Web应用的数据库读多写少的特点,我们主要对读数据库做了优化,提供专用的读数据库和写数据库,在应用程序中实现读操作和写操作分别访问不同的数据库。

2) 使用 MySQL Replication 机制实现快速将主库(写库)的数据库复制到从库(读库)。一个主库对应多个从库,主库数据实时同步到从库。

3) 写数据库有多台,每台都可以提供多个应用共同使用,这样可以解决写库的性能瓶颈问题和单点故障问题。

4) 读数据库有多台,通过负载均衡设备实现负载均衡,从而达到读数据库的高性能、高可靠和高可扩展性。

5) 数据库服务器和应用服务器分离。

6) 从数据库使用BigIP做负载均衡。

缓存系统

结构图:

4.jpg

缓存分为文件缓存、内存缓存、数据库缓存。在大型Web应用中使用最多且效率最高的是内存缓存。最常用的内存缓存工具是Memcached。使用正确的缓存系统可以达到实现以下目标:

1)使用缓存系统可以提高访问效率,提高服务器吞吐能力,改善用户体验。

2)减轻对数据库及存储集服务器的访问压力。

3)Memcached服务器有多台,避免单点故障,提供高可靠性和可扩展性,提高性能。

分布式存储系统

结构图:

5.jpg

Web系统平台中的存储需求有下面两个特点:

1) 存储量很大,经常会达到单台服务器无法提供的规模,比如相册、视频等应用。因此需要专业的大规模存储系统。

2) 负载均衡cluster中的每个节点都有可能访问任何一个数据对象,每个节点对数据的处理也能被其他节点共享,因此这些节点要操作的数据从逻辑上看只能是一个整体,不是各自独立的数据资源。

因此高性能的分布式存储系统对于大型网站应用来说是非常重要的一环。(这个地方需要加入对某个分布式存储系统的简单介绍。)

分布式服务器管理系统

结构图:

6.jpg

随着网站访问流量的不断增加,大多的网络服务都是以负载均衡集群的方式对外提供服务,随之集群规模的扩大,原来基于单机的服务器管理模式已经不能够满足我们的需求,新的需求必须能够集中式的、分组的、批量的、自动化的对服务器进行管理,能够批量化的执行计划任务。

在分布式服务器管理系统软件中有一些比较优秀的软件,其中比较理想的一个是Cfengine。它可以对服务器进行分组,不同的分组可以分别定制系统配置文件、计划任务等配置。它是基于C/S 结构的,所有的服务器配置和管理脚本程序都保存在Cfengine Server上,而被管理的服务器运行着 Cfengine Client 程序,Cfengine Client通过SSL加密的连接定期的向服务器端发送请求以获取最新的配置文件和管理命令、脚本程序、补丁安装等任务。

有了Cfengine这种集中式的服务器管理工具,我们就可以高效的实现大规模的服务器集群管理,被管理服务器和 Cfengine Server 可以分布在任何位置,只要网络可以连通就能实现快速自动化的管理。

代码发布系统

结构图:

7.jpg

随着网站访问流量的不断增加,大多的网络服务都是以负载均衡集群的方式对外提供服务,随之集群规模的扩大,为了满足集群环境下程序代码的批量分发和更新,我们还需要一个程序代码发布系统。

这个发布系统可以帮我们实现下面的目标:

1) 生产环境的服务器以虚拟主机方式提供服务,不需要开发人员介入维护和直接操作,提供发布系统可以实现不需要登陆服务器就能把程序分发到目标服务器。

2) 我们要实现内部开发、内部测试、生产环境测试、生产环境发布的4个开发阶段的管理,发布系统可以介入各个阶段的代码发布。

3) 我们需要实现源代码管理和版本控制,SVN可以实现该需求。

这里面可以使用常用的工具Rsync,通过开发相应的脚本工具实现服务器集群间代码同步分发。

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

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

相关文章

memcached在大负载高并发网站上的应用

转自:http://wangzebin.blog.51cto.com/653300/128235 原文作者:王泽宾大家可能对memcached这种产品早有了解,或者已经应用在自己的网站中了,但是也有一些朋友从来都没有听说过或者使用过。这都没什么关系,本文旨在从各…

高并发 高负载 网站系统架构

注:我看到这篇文章写的太好了,可以没法转到CSDN上我就COPY了,看到下面激烈的评论,我也一并COPY了。不过还是要谢谢哪位作者了。这样的文章很少。 转自:http://www.toplee.com/blog/71.html 我在CERNET做过拨号接入平…

利用IIS日志追查网站入侵者

以前黑站黑了很多,但是就没有想过会不会被追踪到,都没有想过怎么去擦自己的屁股,万万没想到在自己不再黑站的时候,却发现了自己的BBS被黑了。根据当初的判断,BBS程序是我们BCT小组成员编写的Lvbbs不会存在着上传漏洞和…

大型互联网站解决海量数据的常见策略

信息时代,海量数据处理已成为一个老话题,今天看到一篇不错的文章,分享给大家 大型互联网站的数据存储与传统存储环境相比不仅是一个服务器、一个数据库那么简单,而是由网络设备、存储设备、应用服务器、公用访问接口、应用程序 等…

大型网站架构演变和知识体系

之前也有一些介绍大型网站架构演变的文章,例如LiveJournal的、ebay的,都是非常值得参考的,不过感觉他们讲的更多的是每次演变的结果,而没有很详细的讲为什么需要做这样的演变,再加上近来感觉有不少同学都很难明白为什么…

2022-2028全球求职网站行业调研及趋势分析报告

据恒州诚思调研统计,2021年全球求职网站市场规模约 亿元,2017-2021年年复合增长率CAGR约为 %,预计未来将持续保持平稳增长的态势,到2028年市场规模将接近 亿元,未来六年CAGR为 %。 本文调研和分析全球求职网站发展现状…

Silverlight实例秀——可切换视图的DataTemplate(做网站必备技术)

Silverlight实例秀——可切换视图的DataTemplate(做网站必备技术) 小序: 敏捷开发也是要有个度的。搞敏捷,最起码的限度是程序员要对手里使用的工具比较精通。 相信大家都见过这个场景: 问:“你在做什么…

python 爬取数据还要下载scrapy吗_在Python3.5下安装和测试Scrapy爬网站

本帖最后由 xandy 于 2017-3-2 16:13 编辑1. 引言Scrapy框架结构清晰,基于twisted的异步架构可以充分利用计算机资源,是爬虫做大的必备基础。本文将讲解如何快速安装此框架并使用起来。2. 安装Twisted2.1 同安装Lxml库(参考《为编写网络爬虫程序安装Pyth…

在PEA上海做演讲主题:大型、高负载网站架构和应用初探

主题:大型、高负载网站架构和应用初探时间:30-45分钟 开题:163,sina,sohu等网站他们有很多应用程序都是PHP写的,为什么他们究竟是如何能做出同时跑几千人甚至上万同时在线应用程序呢? 挑选性能更好web服务器 单台 Apache web se…

通过避免下列 10 个常见 ASP.NET 缺陷使网站平稳运行(转载)

ASP.NET 成功的其中一个原因在于它降低了 Web 开发人员的门槛。即便您不是计算机科学博士也可以编写 ASP.NET 代码。我在工作中遇到的许多 ASP.NET 开发人员都是自学成材的,他们在编写 C# 或 Visual Basic 之前都在编写 Microsoft Excel 电子表格。现在,…

网站最大并发数以及服务器配置预估

一.评测网站常用的一些术语: 以www.qq.com为例子,我们可以在站长之家输入www.qq.com获得结果: 日均ip:每天有多少个ip访问qq,我们可以看到qq是接近六千万,然后用的人远不止这些,因为如果在一个…

大型网站架构演变和知识体系

在这篇文章中将阐述一个普通的网站发展成大型网站过程中的一种较为典型的架构演变历程和所需掌握的[urljavascript:;]知识[/url]体系,希望能给想从事互联网行业的同学一点初步的概念,:),文中的不对之处也请各位多给点建议,让本文真…

优化网站设计(十一):避免重定向

前言 网站设计的优化是一个很大的话题,有一些通用的原则,也有针对不同开发平台的一些建议。这方面的研究一直没有停止过,我在不同的场合也分享过这样的话题。 作为通用的原则,雅虎的工程师团队曾经给出过35个最佳实践。这个列表请参考 Best Practices f…

普通电脑可以搭建时序数据库吗_如何搭建网站?网站建设需要做哪些准备?

搭建一个网站需要哪些准备?如何搭建属于自己的网站?今天蝈蝈录制了一个视频,从域名注册、域名备案、域名解析、服务器购买、服务器配置搭建、上传代码等方面全过程讲解如何搭建一个网站。如果你是专业人士,请忽略,如果…

大型网站的灵魂——性能

前言 在前一篇随笔《大型网站系统架构的演化》中,介绍了大型网站的演化过程,期间穿插了一些技术和手段,我们可以从中看出一个大型网站的轮廓,但想要掌握设计开发维护大型网站的技术,需要我们一步一步去研究实践。所以我…

购物网站讨论1:关于模型那些事

写在最前面:购物网站案例下载 -------------------------------------- 1.这些类对应的业务实体是什么? 2.如何实现数据库连接? 3.类之间的关系是如何的? 4.如何启动数据库迁移? 百度自学知识点:启用自动数…

访问页面要看什么数据包_SEO怎么对页面标题优化,页面优化要注意什么?

页面的标题主要是规定了一些网页的内容,然后去告诉搜索引擎蜘蛛这个页面的大概内容,页面标题也就是搜索引擎来判断页面内容的主要参考信息,这就是网页优化最重要的因素。SEO去优化页面标题可以从下面几方面入手(1)相关且准确每个页面标题都要…

linux服务器打包文件,linux系统怎么进行文件打包_网站服务器运行维护,linux,文件...

linux系统怎么打开终端_网站服务器运行维护linux系统打开终端的方法是:1、使用快捷键【ctrlaltt】打开终端,linux支持多终端,可以一次性打开多个终端;2、通过【search your computer】功能搜索terminal。打包(.tar):tar -cvf Pro.…

建立安全审计用户_高校数据安全解决方案-网站版

一、 背景介绍高校网络中的数据一般包括网站数据、教学资源、图书资源、教务管理数据、办公资源、财务管理数据等,如教职工信息、学生信息、教学信息、科研信息、资产信息、图书借阅信息、师生消费信息和上网信息等各种数据内容。学校的招生就业、财务、资产数据等等…

idm 爬取网站 跳转路径_使用IDM批量抓取音效素材下载

IDM下载器的站点抓取功能,能够抓取网站上的图片、音频、视频、PDF、压缩包等等文件。更重要的是,能够实现批量抓取操作,省时省力。今天就来看一下,如何用IDM巧妙的批量抓取音效素材。1、进入音效合辑界面,复制链接地址…