大流量网站的底层系统架构

news/2024/5/19 0:27:50/文章来源:https://blog.csdn.net/winsonyuan/article/details/7091122

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

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

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

l Web前 端系统

l 负 载均衡系统

l 数 据库集群系统

l 缓 存系统

l 分 布式存储系统

l 分 布式服务器管理系统

l 代 码分发系统

Web前端系统

结构图:

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

负载均衡系统

 

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

数据库集群系统

结构图:

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

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

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

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

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

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

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

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

缓存系统

 

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

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,通过开发相应的脚本工具实现服务器集群间代码同步分发。

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

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

相关文章

某网站电商运营数据分析案例

PHPStat是目前国内最专业的电子商务数据分析运营平台,专注为电子商务企业提供网站访客转化行为、订单分析、商品分析、页面转化分析、营销转化分析的整体优化解决方案。目前PHPStat已经成功为苏宁易购、湖南卫视快乐购、天天网、某网站、鸿星尔克、高鸿商城、以纯旗…

MySQL在大型网站的应用架构演变

MySQL在大型网站的应用架构演变 【编者按】作为最流行的开源数据库,MySQL被广泛应用在Web应用程序以及其它中小型项目上。然而不可忽视的是,在许多大型IT公司中,MySQL在高度优化和定制化后,已逐渐偏离了原有的开源版本&#xff0c…

大型网站技术架构探讨

 目录: 1、大型网站架构的目标与挑战 2、网站架构演变及其技术脉络 3、架构设计理论与原则 何为“大型”网站? 没有统一的判断标准,流量大小是一个重要指标(日均流量至少IP>1,000,000才算大型网站&…

如何构建高扩展性网站?

 阅读目录 主要内容 化简方程 分布工作 横向扩展设计 使用正确的工具 不要做重复的工作 积极利用缓存 从错误中吸取教训 数据库原则 容错设计与故障控制 避免或分发状态 异步通信和消息总线 其他原则 参考 主要内容 本书从多个方面围绕高…

精选31个网站界面设计实践教程

设计一个网站从来都不是一件容易的事。如果你去询问一位在该行业有丰富经验的网页设计师,他会告诉你以前根本没有太多关于Web设计/开发的资源、文章和各种沟通交流平台,更不用说高质量免费教程了。 如果您打算建立自己的个人网站或者重新设计您的博客的主…

10个提高网站可用性的实用技巧

不论是企业网站、个人博客,或者购物网站、游戏网站,我们都希望能吸引访问者并且给他们留下愉快的访问体验。 可用性是用户体验的一种度量,它可以用访问者完成网站功能的方便程度来描述——无论是通过自身知识还是通过学习新方式来完成这种功能…

基于ASP.NET的网站发布、打包和安装

安装配置环境: 操作系统:Win7旗舰版 Visual Studio版本:VS2010 一、在发布、打包和安装网站之前,首先需要安装配置IIS。Win7默认已安装IIS。 1、打开IIS管理器功能。 打开控制面板-->程序->打开或关闭Windows功能 2、打…

ASP.NET网站发布中的错误类型

错误类型1&#xff1a; 解决方法&#xff1a;删除配置文件web.config里面的 <authentication mode"Windows" />行。 错误类型2&#xff1a; 分析&#xff1a;.Net Framework的版本不对应&#xff0c;要求Framework版本为4.0。 解决方法&#xff1a; 1、安装4.…

fastjson反序列化方法JSON.parseObject(String str,ClassT clazz)

fastjson这一工具包帮助我们进行java对象和json格式的字符串之间的相互转换。对象到字符串的过程&#xff0c;我们称之为序列化&#xff1b;反之&#xff0c;我们称为反序列化。 现在我们就来谈谈fastjson提供的反序列化方法&#xff0c;本篇只讨论按照指定的字节码返回相应对…

视频网站套上CDN是什么效果?

1、什么是CDN加速&#xff1f; 内容分发网络&#xff08;Content Delivery Network&#xff09;&#xff0c;是在现有 Internet 中增加的一层新的网络架构&#xff0c;由遍布全国的高性能加速节点构成。这些高性能的服务节点都会按照一定的缓存策略存储您的业务内容&#xff0c…

CMU-CSAPP-深入理解计算机系统-P1-courseoverview

首先让我们看一个实例 原因是数据是如何在内存中布局。C不会进行边界检查&#xff0c;容易崩溃 这两种程序功能是一样的 但是他们的时间完全不一样

1001、单机安装基于LNMP结构的WordPress网站、web与数据库服务分离

project 第1部分 文章目录 project 第1部分project1 整体架构一、单机安装基于LNMP&#xff08;Linux Nginx Mysql PHP&#xff09;结构的WordPress网站1、 基本环境准备2、配置nginx3、配置数据库服务器4、部署wordpress 二、web与数据库服务分离准备数据库服务器自由扩展&…

阿里云——手把手教你搭建个人网站

言归正传&#xff0c;阿里算是做云服务最早的一批了&#xff0c;当时的其他几家有名气的现在基本都死了&#xff0c;只有阿里这支部队熬过来了&#xff0c;就我了解的几家云商做个简单的介绍&#xff1a; 青云&#xff1a;有情怀有理想&#xff0c;不过短板也很明显&#xff0c…

Servlet+JSP+MySQL社交网站

在网站架构上&#xff0c;采用MVC设计模式&#xff0c;实现将网站的页面显示与业务逻辑分离&#xff0c;使其各司其职&#xff1b;在数据库操作上&#xff0c;利用DAO模式&#xff08;Data Access Object数据存取对象&#xff09;技术&#xff0c;将程序中的类对象映射成为数据…

《大型网站系统与JAVA中间件实践》pdf版电子书网盘附下载链接+仪式感技术书阅读法

附Java/C/C/机器学习/算法与数据结构/前端/安卓/Python/程序员必读书籍书单大全&#xff1a; 书单导航页&#xff08;点击右侧 极客侠栈 即可打开个人博客&#xff09;&#xff1a;极客侠栈 ①【Java】学习之路吐血整理技术书从入门到进阶最全50本&#xff08;珍藏版) ②【算法…

《大型网站技术架构:核心原理与案例分析李智慧》pdf版电子书网盘附下载链接+仪式感技术书阅读法

附Java/C/C/机器学习/算法与数据结构/前端/安卓/Python/程序员必读书籍书单大全&#xff1a; 书单导航页&#xff08;点击右侧 极客侠栈 即可打开个人博客&#xff09;&#xff1a;极客侠栈 ①【Java】学习之路吐血整理技术书从入门到进阶最全50本&#xff08;珍藏版) ②【算法…

SSM(springMVC+spring+mybatis)旅游网站项目源码,课程设计(毕业设计)

最近在翻文件的时候发现大四时的毕业设计&#xff0c;一个旅游网站&#xff0c;虽然代码写得很烂&#xff0c;但还是可以跑起来&#xff0c;想着删了还不如分享一下&#xff0c;毕竟我也觉得做毕设是真的无聊又浪费时间......... 整体功能图(其实是做得很敷衍&#xff0c;大部…

如何使用TFilter网站快速获取FIR滤波器的相关系数

最近需要对数据进行滤波&#xff0c;考虑到赛灵思已经有免费的FIR滤波器的ip核&#xff0c;便准备使用硬件进行滤波。但是不论是怎样使用FIR滤波器&#xff0c;都离不开相关系数的确定。实际设计中&#xff0c;不可能拿笔去一个个数值的计算&#xff0c;因此需要借助工具。 网上…

Linux基础PHP网站搭建

我们以ubuntu20.04为例&#xff0c;接下为了方便操作我们用Xshell连接Ubuntu20.04 输入&#xff1a;apt-get install apache2 &#xff08;安装apache&#xff0c;遇到选择全部选择Y&#xff09; 输入&#xff1a;service apache2 restart &#xff08;重新启动apache2…

自己做了个网站 网址:http://www.sunshinelin.club

网址&#xff1a; http://www.sunshinelin.club 当初做这个网站的目的就是为了能够自己用&#xff0c;想做什么功能就写什么功能。感觉使用自己的东西比较有成就感。 这个是网站的首页 我用的ssmshiro后台框架开发&#xff0c;服务是阿里云的centOS 在开发的时候会遇到各…