常见的网站服务器架构有哪些?小西红柿

一般来讲,大型网站都是从小型网站发展而来,一开始的架构都比较简单,随着业务复杂和用户量的激增,才开始做很多架构上的改进。当它还是小型网站的时候,没有太多访客,一般来讲只需要一台服务器就够了,这时应用程序、数据库、文件等所有资源都在一台服务器上,网站架构如下图所示:

随着网站业务的发展和用户量的增加,一台服务器就无法再满足需求了。大量用户访问导致访问速度越来越慢,而逐渐增加的数据也会导致存储空间不足。这时就需要将应用和数据分离,应用和数据分离后整个网站使用3台服务器:应用服务器、文件服务器和数据库服务器。这3台服务器对硬件资源的要求各不相同:

此时,网站系统的架构如下图所示:

网站使用的缓存一般分为缓存到应用服务器或者缓存在专门的分布式缓存服务器。缓存到应用服务器自己的访问速度快很多,但是受自身内存限制,往往不太适用。远程分布式缓存使用一个集群专门负责缓存服务,当内存不够还可以轻松得动态扩容。

使用缓存后,数据访问压力得到了缓解,但是单一应用服务器能够处理的请求连接有限,在网站访问高峰期,应用服务器就成了整个网站的效率瓶颈。使用分布式集群是网站解决高并发、海量数据问题的常用手段。当一台服务器的处理能力和存储空间不足时,不要尝试去更换更强大的服务器,对大型网站而言,多么强大的服务器,都满足不了网站持续增长的业务需求。这种情况下,更恰当的做法是增加一台服务器分担原有服务器的访问及存储压力。对网站架构而言,只要能通过增加一台服务器的方式改善负载压力,就可以以同样的方式持续增加服务器不断改善系统性能,从而实现系统的可伸缩性。应用服务器实现集群是网站可伸缩架构设计中较为简单成熟的一种,如下图所示:

通过负载均衡调度服务器,可以将来自用户浏览器的访问请求分发到应用服务器集群中的任何一台服务器上,如果有更多用户,就在集群中加入更多的应用服务器,使应用服务器的压力不再成为整个网站的瓶颈。

网站在使用缓存后,使对大部分数据读操作访问都可以不通过数据库就能完成,但是仍有一部分读操作(缓存访问不命中、缓存过期)和全部的写操作都需要访问数据库,在网站的用户达到一定规模后,数据库因为负载压力过高而成为网站的瓶颈。目前大部分的主流数据库都提供主从热备功能,通过配置两台数据库主从关系,可以将一台数据库服务器的数据更新同步到另一台服务器上。网站利用数据库的这一功能,实现数据库读写分离,从而改善数据库负载压力。如下图所示:

应用服务器在写数据的时候,访问主数据库,主数据库通过主从复制机制将数据更新同步到从数据库,这样当应用服务器读数据的时候,就可以通过从数据库获得数据。为了便于应用程序访问读写分离后的数据库,通常在应用服务器端使用专门的数据访问模块,使数据库读写分离对应用透明。

任何强大的单一服务器都满足不了大型网站持续增长的业务需求。数据库经过读写分离后,从一台服务器拆分成两台服务器,但是随着网站业务的发展依然不能满足需求,这时需要使用分布式数据库。文件系统也一样,需要使用分布式文件系统。如下图所示:

分布式数据库是网站数据库拆分的最后手段,只有在单表数据规模非常庞大的时候才使用。不到不得已时,网站更常用的数据库拆分手段是业务分库,将不同业务的数据部署在不同的物理服务器上。

随着网站业务越来越复杂,对数据存储和检索的需求也越来越复杂,网站需要采用一些非关系数据库技术如NoSQL和非数据库查询技术如搜索引擎。如下图所示:

NoSQL和搜索引擎都是源自互联网的技术手段,对可伸缩的分布式特性具有更好的支持。应用服务器则通过一个统一数据访问模块访问各种数据,减轻应用程序管理诸多数据源的麻烦。

大型网站为了应对日益复杂的业务场景,通过使用分而治之的手段将整个网站业务分成不同的产品线。如大型购物交易网站都会将首页、商铺、订单、买家、卖家等拆分成不同的产品线,分归不同的业务团队负责。

具体到技术上,也会根据产品线划分,将一个网站拆分成许多不同的应用,每个应用独立部署。应用之间可以通过一个超链接建立关系(在首页上的导航链接每个都指向不同的应用地址),也可以通过消息队列进行数据分发,当然最多的还是通过访问同一个数据存储系统来构成一个关联的完整系统,如下图所示:

随着业务拆分越来越小,存储系统越来越庞大,应用系统的整体复杂度呈指数级增加,部署维护越来越困难。由于所有应用要和所有数据库系统连接,在数万台服务器规模的网站中,这些连接的数目是服务器规模的平方,导致数据库连接资源不足,拒绝服务。

既然每一个应用系统都需要执行许多相同的业务操作,比如用户管理、商品管理等,那么可以将这些共用的业务提取出来,独立部署。由这些可复用的业务连接数据库,提供共用业务服务,而应用系统只需要管理用户界面,通过分布式服务调用共用业务服务完成具体业务操作。如下图所示:

大型网站的架构演化到这里,基本上大多数的技术问题都可以得以解决了。

2013/04/18更新

[只是大框架介绍,实际使用中的不容易注意的细节太多了,需要经验的积累,才能运用娴熟]

以下的架构都是在假设已经优化过linux内核的情况下进行

初级篇:(单机模式)

假设配置:(Dualcore2.0GHz,4GBram,SSD)

基础框架:apache(PHP)+Mysql/IIS+MSSQL(最基础框架,处理一般访问请求)

进阶1:替换Apache为Nginx,并在数据库前加上cache层【数据库的速度是最大的瓶颈】Nginx(PHP)+Memcache+Mysql(此时已经具备处理小型访问量的能力)

进阶2:随着访问量的上涨,最先面临的问题就来了:CGI无法匹配上Nginx的高IO性能,这时候可以通过写扩展来替代脚本程序来提升性能,C扩展是个好办法,但是大家更喜欢用简单的脚本语言完成任务,Taobao团队开源了一个Nginx_lua模块,可以用lua写Nginx扩展,这时候可处理的并发已经超越进阶1一个档次了。Nginx(nginx_luaorC)+Memcache+Mysql(此时处理个同时在线三四千人没有问题了)

进阶3:随着用户的增多,Mysql的写入速度成了又一大瓶颈,读取有memcache做缓存,但写入是直接面对Mysql,性能受到了很大阻碍,这时候,要在Nginx和Mysql中间加入一层写缓存,队列系统就出场了,就以RabbitMQ为例,所有写入操作全部丢到这只兔子的胃里面,然后屁股后面写个接应程序,一条条的拉出来再写入mysql。而RabbitMQ的写入效率是Mysql的N倍,此时架构的处理能力又上一阶层。|----write------>RabbitMQ--------Nginx(luaorc)-----|--------->Mysql|----read------>Memcache--------

(此时的并发吞吐能力已经可以处理万人左右在线)

中级篇:(分而治之)

此时我们在单机优化上已经算是达到极限,接下来就要集群来显示作用了。

数据库篇:数据库总是在整个环节中是吞吐能力最弱的,最常见的方法就是sharding。sharding可以按多种方法来分,没有定式,看情况。可以按用户ID区段分,按读写分等等,可用参考软件:mysqlproxy(工作原理类似lvs)

缓存篇:memcache一般采用的是构建memcachepool,将缓存分散到多台memcache节点上,如何将缓存数据均匀分散在各节点,一般采用将各节点顺序编号,然后hash取余对应到各个节点上去。这样可以做到比较均匀的分散,但是有一个致命点就是,如果节点数增加或减少,将会带来几乎80%的数据迁移,解决方案我们在高级篇再提。

高级篇:(高可用性+高可扩展性的集群)

为了提高存储的平衡性,算法还可以加入虚拟节点的概念,即每个实际cache节点,会在圆上对应N个虚拟的节点,这样可以提高算法的命中率,更加平衡。

系统架构演化历程-初始阶段架构

系统架构演化历程-应用服务和数据服务分离

系统架构演化历程-使用缓存改善性能

系统架构演化历程-使用应用服务器集群

系统架构演化历程-数据库读写分离

系统架构演化历程-反向代理和CDN加速

系统架构演化历程-分布式文件系统和分布式数据库

系统架构演化历程-使用NoSQL和搜索引擎

系统架构演化历程-业务拆分

系统架构演化历程-分布式服务

圈子里有一个伟人说过一句话:亿万级的架构是逐步演化出来的,傻缺才会上来就直接照着亿万级的来搭(′`)...(没错这个伟人就是我),所以这里只是解释下不同量级下的架构形式,具体要看业务规模和体量。

补一个,中小型网站推荐的技术选型LAMP(linux+apache+mysql+php)。大型网站的架构技术则可以灵活选择。

这个时期可以说不存在太多架构的概念,apache/IIS+MYSQL/MSSQL+PHP/JAVA/NET等选型都可以,具体看公司的技术合伙人的方向,技术合伙人来确定方案和选型即可。

假设业务情况涉及到的文件会比较多,建议可以做多台文件服务器对文件进行储存,比如电商类的商品文描图片及主图,多域名,多服务器储存。即便是业务初期,也建议至少有一台热备服务器,不需要太高的配置,实时对业务数据库进行备份即可。

另外一点就是,考虑到业务量极大,为了防止出现线上事故影响服务,另外就是分担网站入口的请求,因此需要部署负载均衡服务器。因为网站是一辆需要一直跑的汽车,不能停车换轮,负载均衡的作用之一就是保证每次修轮胎的时候,车子仍然在跑:

一行字就可以描述:

其实很多大公司都会把自己的架构公开,只有国内公司藏着掖着

初始阶段的网站架构

应用服务和数据服务分离

使用缓存改善网站性能

使用应用服务器集群改善网站的并发处理能力

数据库读写分离

使用反向代理和CDN加速网站响应

使用分布式文件系统和分布式数据库系统

使用NoSQL和搜索引擎

业务拆分

分布式服务

Atitit常用的软件架构与架构模式(相对固定总结的架构方法)attilax总结

架构模式是一个系统的高层次策略,涉及到大尺度的组件以及整体性质和力学。架构模式的好坏可以影响到总体布局和框架性结构。

设计模式是中等尺度的结构策略。这些中等尺度的结构实现了一些大尺度组件的行为和它们之间的关系。模式的好坏不会影响到系统的总体布局和总体框架。设计模式定义出子系统或组件的微观结构。

代码模式(或成例)是特定的范例和与特定语言有关的编程技巧。

一、模块结构(FromMudtoStructure)型。帮助架构师将系统合理划分,避免形成一个对象的海洋。包括Layers(分层)模式、Blackboard(黑板)模式、Pipes/Filters(管道/过滤器)模式等。

二、分散系统(DistributedSystems)型。为分散式系统提供完整的架构设计,包括像Broker(中介)模式等。

三、人机互动(InteractiveSystems)型,支持包含有人机互动介面的系统的架构设计,例子包括MVC(Model-View-Controller)模式、PAC(Presentation-Abstraction-Control)模式等。

四、AdaptableSystems型,支持应用系统适应技术的变化、软件功能需求的变化。如Reflection(反射)模式、Microkernel(微核)模式等。

2.2.3Blackboard模式

SSH架构ssm架构,javanetlamp架构大泥球风格批量顺序处理风格分发-订阅风格map-reduce风格ormioc

主要软件类型适用的几种典型的架构模式-dzldzl-博客园.html

软件架构模式基本概念及三者区别-jsd2root的博客-博客频道-CSDN.NET.html

《面向模式的软件架构,卷1:模式系统》((德)布施曼等著)【简介_书评_在线阅读】-当当图书.html

《恰如其分的软件架构(软件架构设计新经典)》((美)GeorgeFairbanks著)【简介_书评_在线阅读】-当当图书.html

THE END
1.网页结构简介网页结构简介 有人说“互联网中有50%以上的流量是爬虫”,第一次听这句话也许你会觉得这个说法实在太夸张了,怎么可能爬虫比用户还多呢?毕竟会爬虫的相对与不会爬虫的简直少之又少。 但是很多爬虫工程师或者反爬虫工程师讲了实话:50%?你在逗我?就这么少的量?然后他举出例子:https://www.imooc.com/article/288200
2.网站结构有哪些类型1:什么是树状结构网站结构有哪些类型1:什么是树状结构 6955次阅读 我们都知道,搜索引擎喜欢的网站结构是树状结构,树状结构符合人们对知识的归类习惯。 比如: 图书馆的阅览室分为:自然科学阅览室、人文科学阅览室、报刊杂志阅览室。 这几个阅览室内的书架又分为: 自然科学阅览室:数学、物理、化学…http://www.seowhy.com/a/275.html
3.旅游网站设计布局类型有哪些,旅游类网站的布局结构1,旅游类网站的布局结构 模块功能说明: 1. 概况介绍该功能模块指旅游目的地的概况介绍,内容依据《12301旅游服务热线数据采集标准(试行)》(2008年1月)组织。 2. 宣传促销该功能模块指旅游目的地的宣传促销信息。具体内容指旅游目的地对外宣传的主要旅游资源及旅游产品,主要以食、住、行、游、购、娱六大基本要素信息http://m.kbcool.com/yy/yytk/30085.html
4.交易类网站通常采用哪些技术架构?这些架构有何特点?交易类网站通常采用哪些技术架构?这些架构有何特点? 在期货交易领域,交易类网站的技术架构是其高效运作的基石。这些架构不仅需要确保系统的稳定性和安全性,还要提供快速的交易执行和实时的数据更新。以下是几种常见的交易类网站技术架构及其特点: 1. 客户端-服务器架构https://futures.hexun.com/2024-09-01/214284899.html
5.结构知识结构类型和体系的分类(3)对于落后偏远地区的民宅或小工程则可能采用砌体结构类型。 2、结构体系如何选择? 对于钢筋混凝土结构,当房屋高度不超过120米时,一般均为三大常规结构体系——框架结构、剪力墙结构、框架—剪力墙结构。 (1)对于学校、办公楼、、医院以及商场等需要较大空间的建筑, https://www.houxue.com/news-1672937/
6.企业网站空间结构分析企业网站的主要类型网址空如何?网站购买空必须考虑到哪些方面?许多应用网址空的客户全是站长和中小型企业。要不是专业人员,她们在网站购买空时不清楚需要什么配备,也不确定性必须考虑到哪些方面。下边,聚名网小编将与各位共享网站购买空时必须重视哪些方面。 网址空如何?网站购买空必须考虑到哪些方面?(阅读推荐:云虚拟主机404网页页面如何https://www.dkewl.com/course/detail9174.html
7.网站结构的类型类型层次结构华为云帮助中心为你分享云计算行业信息,包含产品介绍、用户指南、开发指南、最佳实践和常见问题等文档,方便快速查找定位问题与能力成长,并提供相关资料和解决方案。本页面关键词:网站结构的类型。https://support.huaweicloud.com/topic/773755-1-W
8.网站制作常见的网页结构类型网站制作公司设计师在网站制作时都会有哪些结构类型,本文在这里为您揭秘,希望能给您的网站制作前期规划工作有所帮助。常见的网页布局形式大致有“国”字形、“厂”字形、“框架”型、“封面”型和Flash型布局。 1.“厂”字形布局“厂”字形结构布局是指页面顶部为标志+广告条,下方左侧为主菜单,右侧面显示正文信息,https://www.198bona.com/construction/wzzhizuo/14009.html
9.你应该知道的65个设计术语有哪些类型的对比? 对比度是创建视觉层次结构的不同设计元素之间的差异程度。变化可能是形式、颜色、质地和大小。 什么是负空间? 负空间是设计元素周围的空白区域。它用于强调布局的某些部分并专注于特定元素。 平面设计中的层次结构是什么? 在平面设计术语中,您将很快学会按重要性级别排列元素。层次结构正是如此。为https://www.szfangwei.cn/news/6524.html
10.网站的基本架构有哪些网站的基本结构是什么网站的基本架构有哪些 网站的基本结构是什么 1. 一个网站是由后端和前端组成的。前端用来展示给用户浏览看的,主要是应用于客户端。 后端是用来对前端和数据的管理。 而网站是建设在服务器上的。 网站基本组成元素:网站=容器+数据库+脚本 (1)客户端的基本概念和常规的主要分类https://blog.51cto.com/u_14555/7044477
11.武器制作网站有哪些,深圳免费网站建设怎么样?常用的招投标网站有哪些各有什么特点 常用的招标网站有三种,具体类型及特点如下 一、第三方招标信息聚合网站,这类招标网表现为数据源较多,项目信息,有新项目还提醒,如招标雷达。具体网站如下,希望能帮到你 1、采招网 中国采招网是招标网中致力于为企业提供招标、采购、拟建项目信息及网上招标采购服务的招标网;采http://www.17firefox.com.cn/d/5491249.html
12.如何制定一个切实有效的网络营销方案(通用10篇)提升型网络营销目标主要通过网络营销替代传统营销手段,全面降低营销费用,提高营销效率,促进营销管理和提高企业竞争力,如戴尔、海尔等站点属于此类型。 5.混合型网络营销方案 混合型网络营销目标力图同时达到上面目标中的若干种,如亚马逊通过设立网上书店作为其主要销售业务站点,同时创立世界著名的网站品牌,并利用新型营销方式https://www.yjbys.com/edu/wangluoyingxiao/56228.html
13.我曾经踩过坑的Java后端面经合集阿里腾讯百度字节2.登录状态是怎么保存的?session是怎么获取的?sessionid是怎么识别的?整个流程是什么样的?有没有考虑分布式session? 3.Redis的数据类型 4.Redis数据类型的底层数据结构 5.三次握手、四次挥手 6.Redis持久化机制 7.MySQL的InnoDB索引数据结构 8.哪些SQL的关键字会让索引失效 https://maimai.cn/article/detail?fid=1734504459&efid=7rJg-b1xyb9_VECulix03w
14.行业网站建设框架有哪些(制作精美图表网站有哪些)网站建设的类型有哪些怎么做好网站内容 其实网站建设的类型不能划分的很知道,只能从大概的功能上来区分看。 1、产品展示型。这类网站是以产品展示为主 2、企业品牌网站。特点高端大气上档次。首页突出企业品牌 3、网上商城型。跟淘宝京东似的,相当于一个独立出来的网络店铺,用户网页上选择相应的产品、线下订单。 http://www.76ku.cn/Jrc/8101609.html
15.什么是内容管理系统(CMS)?Oracle中国内容管理系统 (CMS) 的类型 几乎所有 CMS 都由前端和后端两个部分组成。前端是用户与之交互的部分,也就是所能看见的网站结构和样式。前端将 HTML、CSS 和 JavaScript 结合,提供丰富的交互式内容,且其样式符合公司的品牌形象。 CMS 的后端是用于将新内容发布到网站的应用。这个过程从访问 Web 界面开始,您可以轻松https://www.oracle.com/cn/content-management/what-is-cms/
16.C#期末考试模拟试题及答案E. 不能使用new 关键字创建结构类型的实例 正确答案:A 49. 关于线程和进程,下列说法哪些是正确的? A. 线程是操作系统分配处理器时间的基本单位; B. 进程是操作系统分配处理器时间的基本单位; C. 一个线程可以属于多个进程; D. 一个进程可以有多个线程; 正确答案:A、D 50. .NET 安全框架中,应用程序所属https://m.360docs.net/doc/845720983.html
17.美国CISA云安全技术参考架构(第二版)全文翻译按类型对日志进行数据归一化有助于实现这种一致性,因为每种服务的日志字段名称和数量都会有所不同。机构应确定是否需要将日志集中到中央位置进行分析,若是,再确定哪些日志需要回传以及如何回传。如果使用跨CSP的集成身份访问程序,某些日志—例如身份认证日志—将统一存放。各机构必须了解并按照OMB(M)-21-31备忘录https://www.secrss.com/articles/53867
18.2017最新电子商务师考试试题库「带答案」13、数据库的结构类型分类中哪一个不属于“格式化模型”(C) (A)层次型 (B)网络型 (C)关系型 (D)指(E)针型 14、数字化仪属于:(C) (A)运算器 (B)存储器 (C)输入设备(D) (E)输出设备(F) 15、计算机的核心部件指的是:(C) (A)存储器 (B)基本输入输出设备(C) (D)中央处理器 (E)Modem https://m.oh100.com/kaoshi/peixun/340262.html
19.创业计划创业计划书(1)产品类型不够丰富,缺乏影响力 (2)网店诚信度低。目前网上商城的数目比较多,在“美衣吧”网店建立后,需要一段合理的时间进行市场推广以及诚信度的积累。 (3)网店没有固定的消费群体。 (4)顾客上传的个性化图案中,可能存在一些侵犯知识产权的`图案。 https://www.ruiwen.com/chuangyejihuashu/7198748.html
20.10款最佳WordPress重定向插件在本文中,我们将讨论可以设置哪些类型的重定向。我们还将向您介绍 WordPress 的最佳重定向插件,并帮助您选择适合自己网站的插件。 在网站上使用哪种类型的重定向 您可以在 WordPress 网站上使用多种类型的重定向。在下面的章节中,我们将向您介绍的大多数插件都可以让您设置任何类型的重定向。有鉴于此,了解每种重定https://www.wbolt.com/best-redirect-plugins.html
21.2019级电子商务专业人才培养方案(4)能够根据网站(店)推广目标,选择合理的推广方式,进行策划、实施和效果评估与优化。 (5)能够根据不同商品类型进行产品策划、分类管理。 (6)能够根据运营目标采集电子商务平台数据,并依据店铺、产品和客户等各类数据,对其进行分析与预测。 (7)能够正确进行网络营销,应对客户咨询、异议、处理客户投诉,进行客户个性化服https://www.hnwmxy.com/jiaoxuekeyan/jiaoxuebiaozhunfabu/rencaipeiyangfangan/2019_r/2020/0703/6462.html
22.企业制作网站有哪些类型(部门建设性意见和建议)商务型网站是企业常见、的网站类型,旨展示企业产品、服务、公司信息。其特点是内容丰富、结构清晰、界面美观、易于浏览。商务型网站适用于所有企业,尤其适用于中小企业。 2, 门户型网站 门户型网站是企业内部信息交流的平台,为员工提供工作协同、信息共享、学习培训功能。这类网站信息量大、功能、个性化定制特点。适合大http://www.zbxhbx.cn/tX/5443648.html
23.如何从0到1打造海外品牌独立站?规划网站结构 选择模版 页面设计 功能开发 运营推广 下面我们就针对每一步进行逐一讲解。 1. 明确你要建一个什么类型的网站 创建网站之前,应该先有明确的网站目标和目标受众,从网站布局到内容,一切都应与目标受众和预期目标保持一致,例如说需要哪些栏目,功能,设计的基调等等。 https://www.cifnews.com/article/165549