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

news/2024/5/19 8:46:47/文章来源:https://blog.csdn.net/yunfei8yunfei/article/details/6917433

动态应用,是相对于网站静态内容而言,是指以c/c++、php、Java、perl、.net等服务器端语言开发的网络应用软件,比如论坛、网络相册、交友、BLOG等常见应用。动态应用系统通常与数据库系统、缓存系统、分布式存储系统等密不可分。

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

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

  1)Web前端系统

  2)负载均衡系统

  3)数据库集群系统

  4)缓存系统

  5)分布式存储系统

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

  7)代码分发系统

  Web前端系统

  结构图:

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

  负载均衡系统

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

  数据库集群系统

  结构图:

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

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

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

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

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

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

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

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

  缓存系统

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

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

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

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

  分布式存储系统

  结构图:

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

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

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

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

  分布式服务器管理系统

  结构图:

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

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

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

  代码发布系统

  结构图:

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

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

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

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

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

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

 

FROM: http://news.cnblogs.com/n/70241/


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

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

相关文章

sql server数据库《音乐网站》项目歌曲管理模块

1.sql server数据库《音乐网站》项目歌曲管理模块 你(1)任务描述 《歌曲管理》模块的E-R图如图2.50.1 所示,逻辑数据模型如图2.50.2 所示,物理数据模型如图2.50.3所示,数据表字段名定义见表2.50.1。请按以下设计完成数…

ASP.NET网站开发——LINQ TO SQL 动态数据支持

ASP.NET 3.5 Extensions CTP 包含了一个新特性是 ASP.NET Dynamic Data Support(动态数据支持),它允许开发人员不用编写一行代码就能快速地建造使用LINQ to SQL对象模型的数据驱动网站。 下面就来简单介绍一下创建步骤: 1.创建AS…

ASP.NET网站开发——用户控件与HttpHandler

一丶用户控件 定义:用户控件可用来实现页面中可重用的代码,是可以一次编写就多处方便使用的功能块。它们是ASP.NET控件封装最简单的形式。由于它们最简单,因此创建和使用它们也最简单。用户控件实际上是把已有的服务器控件组合到一个空间容器…

ASP.NET网站开发——LINQ TO SQL 查询数据库数据(八大子句)

LINQ查询字句概述 1.查询(Query)是一组指令,这些指令可以从一个或多个给定的数据源中检索数据,并指定检索结果的数据类型和表现形式。 2.查询表达式是一种用查询语法表示的表达式,由一组用类似于SQL的生明性语法编写的…

ASP.NET网站开发——成员资格(安全模式)

安全的必要性 构造特殊的链接地址,导致文件内的数据泄露 数据库泄露 安全防范的首要范畴:所有的HTTP访问都要经过IIS,所以限制IIS的安全性是关键 asp.net的安全模式 简介:根据所请求的资源类型,IIS能够自己处理请求&…

ASP.NET网站开发——LINQ TO SQL类

LINQ TO SQL是LINQ中最重要的一个组件,为NET. Framework3.5所支持,它可以为关系数据库提供一个对象模型,并在该对象模型基础上实现对数据的查询丶添加丶修改丶删除等功能,即LINQ TO SQL提供了用于将关系数据作为对象管理的运行时…

React + Vite 实现一个音乐网站(项目搭建篇)

最近找工作屡屡碰壁,突然不想努力了… 最初想搭建一个个人博客,技术栈确定为React TS Vite,一方面是为了学习新知识,一方面是实在闲着。但是由于之前做过个人博客所有觉得个人博客可能没啥意思。主要是设计也是一大麻烦&#x…

React + Vite 实现一个音乐网站(menu篇)

众所周知,每个网站都有菜单… 1.建立component文件夹 内部创建menu文件夹,文件夹内创建index.jsx和index.scss 目录结构如下 2.代码的编写 1.解决思路:首先我们肯定是要搭建页面的,我将meun分为两部分一步份为logo&#xff0…

React + Vite 实现一个音乐网站(动画篇)

为了让网站能够炫酷一点,必然的动画是不可或缺的 现在实现一个类似canvas流动背景的功能,最初设计是遍历多个小球在页面上,然后小球在dom节点内移动变换。后决定加入小球一起变换,让小球跟随大球移动,同时小球也能有自…

React + Vite 实现一个音乐网站(aplayer音乐播放器 )

众所周知,音乐网站需要能播放音乐 1.页面搭建 我们需要搭建这样一个部分 那么秉承一分为二的原则,左边音乐列表,右边显示cd图片。理所应当我们得让cd运动起来。 components里面建立文件夹Music,文件夹内新建index.jsx和index.scs…

快速把网站变成纯灰度显示

直接上代码了&#xff0c;在Header中添加这句话&#xff1a; <style>html {filter:progid:DXImageTransform.Microsoft.BasicImage(grayscale1);-webkit-filter: grayscale(100%);}</style> 上面的应该是对应IE的&#xff0c;Mac版Chrome&#xff0c;没有进行实测…

看李俊超老师SEO视频教程 全程笔记

SEO教程详解 一次偶然的机会发现了百度文库新推出的公开课栏目&#xff0c;并在其中发现了的李俊超老师的SEO视频教程&#xff0c;从中学到了很多知识。并在观看的过程中做了如下笔记&#xff1a; 核心思想及工作流程 1&#xff0e;内容为王&#xff0c;外链为帝&#xff0…

网站在微信中提示从浏览器打开

做微信营销活动或者APK下载推广时候&#xff0c;域名被经常被封&#xff0c;做到微信中正常使用呢&#xff1f;这就要借助一些工具来实现有效的操作。 由于微信的限制&#xff0c;通常会出现下面几种情况 1、应用文件在内置浏览器中下载全部被屏蔽掉&#xff0c;造成很多人用…

插件效果【网站开发必备】——12款响应式 Lightbox(灯箱)效果插件

文章结束给大家来个程序员笑话&#xff1a;[M] 灯箱效果&#xff08;Lightbox&#xff09;是网站中最用常的效果之一&#xff0c;用于现实相似模态对话框的效果。网络上各种 Lightbox 插件满目琳琅&#xff0c;随着应响式计划&#xff08;Respnsive Design&#xff09;的开展&a…

插件网站Formula.js – 实现 MS Excel 公式的 JavaScript 工具库

这两天一直在研究插件网站之类的问题,上午正好有机会和大家讨论一下. Formula.js 是一个实现 Microsoft Excel 和 Google Spreadsheets 等类似的电子表格应用程序拥有的强大公式的功能库&#xff0c;带给 Web 开辟人员最经常使用的日期/时光&#xff0c;文本&#xff0c;逻辑&a…

插件网站zoom.js:一款效果很独特的页面内容缩放插件

最近研究插件网站&#xff0c;稍微总结一下&#xff0c;以后继续补充&#xff1a; zoom.js 提供的 JavaScript API 让网站开发人员能够给页面内容添加缩放效果。在页面上点击&#xff0c;目标处的内容会放大&#xff0c;再次点击或者按 ESC 键即可恢复原始巨细。zoom.js 提供了…

linux服务器搭建网站

搭建网站环境用的是lnmp即&#xff1a;linuxnginxmsqlphp 1 命令行输入 wget http://soft.vpser.net/lnmp/lnmp1.5.tar.gz -cO lnmp1.5.tar.gz && tar zxf lnmp1.5.tar.gz && cd lnmp1.5 && ./install.sh lnmp 出现选择项&#xff0c;如图&#xff…

java web 网站头像上传处理 (springmvc +bootstrap+cropper)

制作头像上传。请根据您的实际需求&#xff0c;修改代码&#xff0c;不完全正确&#xff0c;仅供参考&#xff01; 前端页面设计使用bootstrap &#xff0c;头像预览和剪裁工具使用cropper 后台使用springmvc。 现在来看前端的页面设计 前端页面设计&#xff0c;自然需要boo…

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

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

kali系统网站部署笔记

网站放在 其他位置----计算机------var-----www----html 首先启动nginx service nginx start 然后访问127.0.0.1 就会看到Apache正在工作 启动mysql数据库 service mysql start 接着用 mysql -u root -p 连接mysql 用户名&#xff1a;root 密码&#xff1a;123456 数据库操作命…