大型网站系统架构演化之路

news/2024/5/16 1:45:01/文章来源:https://blog.csdn.net/Heng_Ji/article/details/51942506

前言

一个成熟的大型网站(如淘宝、天猫、腾讯等)的系统架构并不是一开始设计时就具备完整的高性能、高可用、高伸缩等特性的,它是随着用户量的增加,业务功能的扩展逐渐演变完善的,在这个过程中,开发模式、技术架构、设计思想也发生了很大的变化,就连技术人员也从几个人发展到一个部门甚至一条产品线。所以成熟的系统架构是随着业务的扩展而逐步完善的,并不是一蹴而就;不同业务特征的系统,会有各自的侧重点,例如淘宝,要解决海量的商品信息的搜索、下单、支付,例如腾讯,要解决数亿用户实时消息传输,百度它要处理海量的搜索请求,他们都有各自的业务特性,系统架构也有所不同。尽管如此我们也可以从这些不同的网站背景下,找出其中共用的技术,这些技术和手段广泛运用在大型网站系统的架构中,下面就通过介绍大型网站系统的演化过程,来认识这些技术和手段。

一、最开始的网站架构

最初的架构,应用程序、数据库、文件都部署在一台服务器上,如图:

image

二、应用、数据、文件分离

随着业务的扩展,一台服务器已经不能满足性能需求,故将应用程序、数据库、文件各自部署在独立的服务器上,并且根据服务器的用途配置不同的硬件,达到最佳的性能效果。

image

三、利用缓存改善网站性能

在硬件优化性能的同时,同时也通过软件进行性能优化,在大部分的网站系统中,都会利用缓存技术改善系统的性能,使用缓存主要源于热点数据的存在,大部分网站访问都遵循28原则(即80%的访问请求,最终落在20%的数据上),所以我们可以对热点数据进行缓存,减少这些数据的访问路径,提高用户体验。

image

缓存实现常见的方式是本地缓存、分布式缓存。当然还有CDN、反向代理等,这个后面再讲。本地缓存,顾名思义是将数据缓存在应用服务器本地,可以存在内存中,也可以存在文件,OSCache就是常用的本地缓存组件。本地缓存的特点是速度快,但因为本地空间有限所以缓存数据量也有限。分布式缓存的特点是,可以缓存海量的数据,并且扩展非常容易,在门户类网站中常常被使用,速度按理没有本地缓存快,常用的分布式缓存是Memcached、Redis。

四、使用集群改善应用服务器性能

应用服务器作为网站的入口,会承担大量的请求,我们往往通过应用服务器集群来分担请求数。应用服务器前面部署负载均衡服务器调度用户请求,根据分发策略将请求分发到多个应用服务器节点。

架构4

常用的负载均衡技术硬件的有F5,价格比较贵,软件的有LVS、Nginx、HAProxy。LVS是四层负载均衡,根据目标地址和端口选择内部服务器,Nginx和HAProxy是七层负载均衡,可以根据报文内容选择内部服务器,因此LVS分发路径优于Nginx和HAProxy,性能要高些,而Nginx和HAProxy则更具配置性,如可以用来做动静分离(根据请求报文特征,选择静态资源服务器还是应用服务器)。

五、数据库读写分离和分库分表

随着用户量的增加,数据库成为最大的瓶颈,改善数据库性能常用的手段是进行读写分离以及分库分表,读写分离顾名思义就是将数据库分为读库和写库,通过主备功能实现数据同步。分库分表则分为水平切分和垂直切分,水平切分则是对一个数据库特大的表进行拆分,例如用户表。垂直切分则是根据业务的不同来切分,如用户业务、商品业务相关的表放在不同的数据库中。

架构3

六、使用CDN和反向代理提高网站性能

假如我们的服务器都部署在成都的机房,对于四川的用户来说访问是较快的,而对于北京的用户访问是较慢的,这是由于四川和北京分别属于电信和联通的不同发达地区,北京用户访问需要通过互联路由器经过较长的路径才能访问到成都的服务器,返回路径也一样,所以数据传输时间比较长。对于这种情况,常常使用CDN解决,CDN将数据内容缓存到运营商的机房,用户访问时先从最近的运营商获取数据,这样大大减少了网络访问的路径。比较专业的CDN运营商有蓝汛、网宿。

而反向代理,则是部署在网站的机房,当用户请求达到时首先访问反向代理服务器,反向代理服务器将缓存的数据返回给用户,如果没有缓存数据才会继续访问应用服务器获取,这样做减少了获取数据的成本。反向代理有Squid,Nginx。

架构5

七、使用分布式文件系统

用户一天天增加,业务量越来越大,产生的文件越来越多,单台的文件服务器已经不能满足需求,这时就需要分布式文件系统的支撑。常用的分布式文件系统有GFS、HDFS、TFS。

架构5.5

八、使用NoSql和搜索引擎

对于海量数据的查询和分析,我们使用nosql数据库加上搜索引擎可以达到更好的性能。并不是所有的数据都要放在关系型数据中。常用的NOSQL有mongodb、hbase、redis,搜索引擎有lucene、solr、elasticsearch。

架构6

九、将应用服务器进行业务拆分

随着业务进一步扩展,应用程序变得非常臃肿,这时我们需要将应用程序进行业务拆分,如百度分为新闻、网页、图片等业务。每个业务应用负责相对独立的业务运作。业务之间通过消息进行通信或者共享数据库来实现。

架构7

十、搭建分布式服务

这时我们发现各个业务应用都会使用到一些基本的业务服务,例如用户服务、订单服务、支付服务、安全服务,这些服务是支撑各业务应用的基本要素。我们将这些服务抽取出来利用分部式服务框架搭建分布式服务。阿里的Dubbo是一个不错的选择。

架构8

小结

大型网站的架构是根据业务需求不断完善的,根据不同的业务特征会做特定的设计和考虑,本文只是讲述一个常规大型网站会涉及的一些技术和手段。


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

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

相关文章

谈谈个人网站的建立(一)——建站历史和技术架构

首先,帮忙点击一下我的网站http://www.wenzhihuai.com/。谢谢啊,如果可以,GitHub上麻烦给个star,以后面试能讲讲这个项目,GitHub地址https://github.com/Zephery/newblog 大学的时候萌生的一个想法,就是建立…

MacOS网页自动化教程(下)- PySeTest网站自动登录到下单测试手脚架#Python3 + Selenium3+ HTMLTestRunner#工欲善其事

PySeTest网站自动登录到下单测试手脚架#Python3 Selenium3 HTMLTestRunner系统说明如何使用功能说明实现步骤测试路径测试脚本代码实现常用方法封装Selenium基础用法Selenium 中文文档Selenium3 定位方法Selenium的等待自动生成Html测试报告HTMLTestRunner 兼容Python3如何使用…

大型网站架构改进历程:存储的瓶颈(四)

摘要:什么是大型网站,从网站的技术角度考虑这个问题人们很容易犯一个毛病就是认为网站的访问量是衡量的指标,懂点行的人也许会认为是网站在单位时间里的并发量的大小来作为指标,如果按这些标准那么像hao123网站就是了。 本文转自博…

律师所网站建设及律师事务所网站模板整理

律师网站建设的内部系统可以分为很多,根据栏目页的设定可以有不同的系统,而且随着时代的发展以及互联网技术的不断更新,各方面系统管理也在升级,网站建设者或是管理者需要不断的对网站进行优化,使得符合时代发展的要求…

做网站用企业网站模板好不好

现在很过公司企业做网站都一般有两种途径,一种找人量身定制,一种选择现成的企业网站模板,目前来说,这两种网站建设方式价格差异也不大,那么到底是定制好?还是企业网站模板好呢? 其实这个问题没有…

响应式网站建设的优缺点

首先要明白响应式网站概念,响应式网站是国外最先流行的一种网站布局理念,其理念是:集中创建页面的图片排版大小,可以智能地根据用户行为以及使用的设备环境进行相对应的布局,说简单点就是可以在pc和手机及各种浏览设备…

网站建设需要注意的几个重要因素

在互联网发达的时代,网站已经是生活当中必不可少的一个事物了,许许多多的企业都熟悉了网站建设的流程,企业可以通过网站可以自由的发布信息、更新产品、还能够为客户提供一些在线的服务等。成功的网站建设能为企业带来一定的业务和收益&#…

网站建设方案

一、网站目标 网络凭借其卓越的互动性与便捷的交流手段正成为最有发展潜力与前途的新兴媒体,成为众企业倍为关注的宣传热点。许多行业的知名企业已经通过网站建设来为自己的企业带来显著的宣传效果。企业网站为对外宣传、服务和交流的载体,来配合企业的迅…

新手如何学习网站建设,教你如何制作网站

新手开发网站具备的条件:对电脑熟练操作,使用电脑最好在一年以上,会打字,懂基本电脑知识,这个对现在的人来说都不成问题的。第一阶段:开始时最好是学些网页编辑软件和基础网页脚本语法,如&#…

网站开发流程

创建一个企业形象网站,要做好商业网站开发的前期准备、中期制作和后期的测试发布工作。前期准备包括了解网站的业务背景、明确网站的设计风格、确定网站内容等;中期制作主要包括创建站点、制作首页、制作模板和制作样式;后期的测试发布工作包…

自己建网站的步骤及方法

在当前,生活上很多事情已经和互联网息息相关了,每个我们都会网上浏览各种网站,新闻网站看新闻,购物网站在线购买,视频网站可以看视频,各种类型的网站基本都会有,企业建网站为了宣传和提供服务&a…

新站长建设网站需要学习知识

企业寻求建站公司为其做网站需要明确以下几点概要: 1、确定建设网站,首先要准备网站建设方案书制作,网站建设素材,网站页面设计与制作标准,网站功能性程序开发与页面融合,数据库设计与数据输入,服务器服务器存放,域名注册与解析。 2、对于每个流程,需要概…

安装PageAdmin Cms建站系统时候“System.ServiceModel.Activation.HttpModule”错误的解决办法

今天把PageAdmin Cms建站系统改的一个网站转移到云服务器时候,网站报提示了下面的错误,找了半天在官方网站找到解决办法,下面发出来给大家共享 错误: 未能从程序集“System.ServiceModel, Version3.0.0.0, Cultureneutral, Publ…

自助建站之PageAdmin、凡科建站、Wordpress如何选择?

国内互联网发展这么多年,网站建设行业的技术发展已经很成熟,以前做网站只能找专业网站建设公司,到现在的自助建站,技术壁垒几乎不存在,自助建站是现在,也是未来的发展趋势。 自助建站分为在线建站平台和独…

好用的免费CMS网站模板源码下载推荐

现在越来越多企业采用网站模板建站,加快了速度,也节约了建站成本,但是百度搜索很多网站模板90%都是骗流量的,根本就用不了,要不一些乱七八糟的,要不国外复制的,要么没有后台,即使有后…

织梦DEDECMS、PageAdmin Cms、wordpress哪个建站系统做网站好

现在的CMS系统非常多,CMS作为基础的网站内容管理系统,都已经比较成熟了,国内常用的CMS系统有:PageAdmin Cms、织梦DEDECMS、Wordpress等。对于老手来说,适合自己的就是最好的,那么,对于新手呢&a…

中小型网站架构分析及优化

先看网站架构图: 以上网站架构广泛运用中大型网站中,本文从架构每一层分析所用主流技术和解决手段,有助于初入网站运维朋友们,进一步对网站架构认识,从而自己形成一套架构概念。 第一层:CDN 国内网络分布主…

如何使用PageAdmin Cms建网站

PageAdmin是国内最流行的内容管理系统和网站构建器之一,全国拥有上千万个网站使用这个系统做网站,占据内容管理市场的60%以上。这个免费的开源网站系统经久不衰的原因之一就是其灵活性和易用性。从个人博客作者到企业网站,到大学网站&#xf…

建一个网站需要多少钱

很多第一次做网站的新手朋友都很关心建一个网站的费用和花销,但是需要明白,不同网站建设公司做同样一个网站,价格区别也是很大的,所以我们必须先掌握清楚网站主要费用构成。 下面先说一下网站固定价格组成: 1、网站域…

建网站如何选择好用的网站源码程序

很多新手朋友第一次建网站时候,如何选择一款适合的网站源码是比较困惑的问题,选择一款好的网站源码可以节约大量时间和金钱,但是由于网站源码参差不齐,免费的,收费的,淘宝几元钱购买的,几万块钱…