干货丨不为技术而技术:大型网站架构演化解析
cac55 2024-09-27 07:00 22 浏览 0 评论
点击上方蓝字即可关注 51CTO
前沿 | 干货 | 交流 | 共享
互联网无处不在,人们的生活受互联网的席卷发生了巨大的变化,从信息检索到即时通信,从电子购物到文化娱乐,互联网已近渗透生活的每个角落,在互联网如此跨越式发展进程中,不堪负重的网站架构也带来了负面的一面,网站频繁宕机、请求操作延时、用户信息泄漏等等现象演绎的淋漓尽致。
针对上述种种现象,如何打造一个高可用、高性能、易扩展、可伸缩以及安全的网站?如何让网站随业务需求所需而灵活变通?这些将是打造一个大型网站急需要考虑的问题根本所在,通过对《大型网站技术架构核心原理以及案例分析》这本书的学习将一层层揭开其中的面纱。
俗话说的好,“汝欲得之,必先知之”,换而言之也是一个道理,想要解决那些种种现象,你得先清楚大型网站的架构演化。
大型网站软件系统的特点
相比之传统的应用系统,大型网站系统有以下特点:
高并发,大流量:面临高并发用户,大流量访问。像google、腾讯同时访问量可能出现亿单位次数。
高可用:系统支持每天24小时运作。
海量数据:需要存储海量数据并管理,需要大量的服务器来支持。
用户分布广泛,网络情况复杂:许多网站都是全球性服务的,用户分布的范围很广。例如:淘宝网
安全性恶劣:互联网追求开放性,因而易受到外界攻击,大型知名网站受到攻击更是家常便饭。
渐进式发展:几乎所有的大型网站都是渐进式发展,慢慢壮大的,这也和互联网架构的发展演化对应。
架构演化发展历程
前面已经描述了大型网站系统的特点,而对一个大型网站系统,其架构也是重要的一个环节。
大型网站技术主要的挑战来自于庞大的用户、高并发以及海量的数据这三个方面。大型网站的形成就像一颗大树的成长,历尽长时间的磨练,最后枝繁叶茂,服务他人。
初始网站架构结构
起初的网站鉴于用户量、访问量较少,只需要一台服务器足以,应用程序、数据库、文件等其所有资源放在一太服务器上就已经足够满足此时的需求,这时候网站的架构就几个简单组成部分如下图
应用数据服务分离
随着网站业务需求的发展,越来越多的用户进行访问,此时一台服务器渐渐不能满足需求,数据的存储空间出现屏障。于是应用程序、数据库、文件三者面临分离,各自为首分配一台服务器,这三台服务器对硬件的要求各取所需,应用服务器处理大量的业务逻辑,需求更快更大的CPU;
数据库服务器对数据库的处理需要快速搜索以及缓存,需求对内存更大,对硬盘读写能力更迅速;文件服务器需求放入大量的用户资源,对硬盘空间要求更大。此时的网站的架构组成部分展示如下图
使用缓存
网站的架构进一步改进后可以满足了业务的发展,但是随着网站知名度提升,用户量的进一步增加,访问数据相比之前愈加频繁,数据库压力急剧上升导致网站访问出现延迟,用户的性能体验出现下滑,面临此时网站出现的性能问题,网站架构设计需要再一次的进化,鉴于网站访问也遵循二八定律。
例如:新浪微博,只有经常登录的用户才会发微博,看微博,而这些用户对于总用户数只是冰山一角。既然出现这一现象,那么缓存这部分的数据是不是可以解决这现象呢?网站缓存可以分为本地缓存和分布式缓存这两种,二者的区别是本地缓存速度快但是受服务器内存限制缓存的数量有限,而分布式缓存采用的是集群处理,理论上是可以避免内存瓶颈。此时网站的架构组成部分如下图
改善网站并发能力
使用缓存后,数据库的压力得到缓解,但是在面临网站高峰期时,应用服务器处理单一的请求连接出现瓶颈,万事都有解决的办法,只是看你愿不愿去想,愿不愿去尝试做,采用集群,集群多台应用程序服务器分布原有的应用程序服务器,从而实现了系统的可伸缩性,网站架构此时演化成这样如下图
数据库读写分离
使用缓存,虽然使用户请求数据操作大部分不直接通过数据库,但是仍有一部分数据(缓存过期、缓存数据没有命中)读写操作需要访问数据库,面对这部分数据,可能出现数据访问负载压力,把数据库读写操作分离性能效果理当会如何呢?效果无言而喻。
CDN和反向代理
网络覆盖范围地区广泛,造就了网络环境复杂,从而用户访问网站性能体现也各有差异,鉴于这问题,网站架构使用CDN和反向代理以技术加速网站响应,二者原理都是缓存,CDN可以从距离用户最近网络提供点获取数据;反向代理则是首先从反向代理服务器中获取数据。
分布式文件、数据库系统
任何单一的服务器最后都是满足不了业务需求发展。虽然前面数据库读写分离能够改善数据库负载压力但是随着业务不断壮大最终还是难以维持此时使用分布式数据库,该技术不到不得以建议不使用,而对于这个技术解决方案更常用的使用业务拆分,将不同的业务数据库部署在不同的物理服务器上。
NoSQL和搜索引擎
该技术对于可伸缩的分布式提供更好的支持,减轻应用程序管理诸多数据源的麻烦。
业务拆分
大型网站日益发展壮大,业务需求越来越复杂,使用分而治之手段分离整个网站的业务变成不同的产品线。具体到技术上,将一个网站拆分成许多不同的应用,每个应用独立部署,而应用与应用之间通过超链接关联,不过最多的还是通过访问同一个数据存储来构成一个关联的完整系统。
分布式服务
一个应用系统需要执行相同业务操作,那么可以将共同的业务提取出来,独立部署,由这些可复用的业务连接数据库,提供共用业务服务,而应用系统只需要管理用户界面,通过分布式调用共用业务服务完成具体业务操作。
大型网站结构演化到这里,基本上大多数的技术问题都得以解决了,但是事物发展到一定的阶段就会摆脱初衷向更强的方向发展。目前许多的大型网站都建立自己的云平台,将计算作为一种资源进行出售。
大型网站架构演化历经了长时间磨练才发展如此,在过程中也是出现一些易步入的误区
一味的追随大公司解决方案,大公司的经验和成功固然重要,但是不能盲目的追从,要与实际的具体业务需求有所改动;
为了技术而技术,网站技术是为业务而存在的,但是一味的追求新技术,可能会导致结构技术之路越走越难;
企图用技术解决所有问题,技术虽是解决业务问题的,但也不是万能钥匙,有些业务的问题也是可以通过业务手段解决。
内容来源:Never_Land博客
51CTO读书频道
我们分享书籍,也分享学习的快乐
长摁二维码,即可参与51CTO送书活动
先到先得,送完为止!
相关推荐
- iphone6自定义铃声设置流程(iphone6怎么自定义来电铃声)
-
苹果iphone6自定义铃声如何设置,iphone6自定义铃声怎么设置,iphone6自定义铃声设置教程,下面小编给大家分享一下。设置自定义铃声首先要自己制作或者找到一个铃声音频。1、在电脑上面把已经...
- iphone手机三分钟更换铃声,无需电脑直接手机操作
-
iPhone怎么在手机上换铃声?无需电脑!1分钟教你给苹果手机换铃声众所周知,苹果手机的ios系统是比较封闭的,封闭系统就会给我们带来一些不便,这里要说的就是苹果手机更换个性化铃声就比较麻烦,因为io...
- iPhone手机个性铃声设置详细教程(iphone个性铃声怎么设置)
-
iPhone现在已成街机了。朋友聚在一起的时候,是不是总有种以为是自己手机响了的赶脚。那么,小编今天跟大家分享一下iPhone怎么换铃声?,让你轻松设置属于你的个性铃声。1:电脑端安装iTools,安...
- iPhone也能用自己喜欢的铃声了,2分钟包搞定!
-
听到超好听的铃声,怎样才能放进iPhone里?这貌似是一道千古难题。90%的iPhone小白:听到这么爽脆带感的iPhone铃声,我要用!我要用!我要用!视频然而打开iTunes发现,脑子一片空白……...
- 苹果iOS 26隐藏新铃声曝光:强调“玻璃质感”
-
IT之家6月20日消息,苹果在iOS26中隐藏了一个新的铃声,这是现有默认铃声“Reflection”的改版。“Reflection”自2017年iPhoneX问世以来一直是系...
- 苹果ios14充电提示音怎么设置 iPhone手机修改充电提示音教程
-
ios14充电提示音最近很火爆,大家都想要知道苹果设置充电提示音的方法,个性化的设置非常吸引大家,小编也会在这里教大家ios14苹果充电提示音的设置,操作的流程会直接分享在下方,各位玩家们都能一起来看...
- iPhone苹果16自定义来电铃声攻略(ios自定义铃声怎么设置)
-
在智能手机的个性化设置中,更改来电铃声是展现自我风格的一种方式。对于使用iPhone苹果16的用户来说,设置一个独特的来电铃声,不仅能提升接听体验,还能让日常生活更加多彩。以下是如何为iPhone苹果...
- 未越狱iPhone用户自定义来电铃声和短信铃声的教程
-
其实自定义来电铃声和短信铃声的过程没有什么区别,但要注意,来电铃声的播放时间不能超过40秒,短信铃声的播放时间不能超过30秒,这也就是说长度为30-40秒的仅在iPhone的来电铃声中出现,少于30秒...
- 苹果手机怎么设置闹钟铃声?更改为歌曲铃声,亲测有效
-
很不是有很多小伙伴每天早上都被苹果手机刺耳的“雷达”闹钟铃声给吵醒呢?想要更换一个舒缓的闹钟铃声,却发现自己鼓捣半天却无法更换喜欢的歌曲闹钟铃声。苹果手机怎么设置闹钟铃声?下面小编就来分享如何将苹果手...
- 独家教程:iPhone手机铃声制作与更换,一般人我不告诉他
-
今天刚好自己作铃声。。想到吧里好多人都会问怎么制作铃声。于是顺便截图发吧里。虽然百度一下铃声制作已经泛滥。但是还是会一直有小白问。所以这里会详细图文说明。先介绍小白式铃声制作。http://www....
- 苹果用户iTunes自制自定义铃声教程
-
怎么制作iphone6铃声,如何使用iTunes剪切音乐自制铃声,新版iTunes怎么自制铃声,相信很多苹果用户都想使用一些个性化铃声。那么就学习一下这个方法吧。1、在电脑上面打开iTunes,选择编...
- 轻松学会!苹果手机怎么设置铃声来电铃声(3个方法)
-
在日常生活中,手机的铃声扮演着非常重要的角色,不仅是接收来电的提示,更是展示个人品位和风格的方式之一。而对于苹果手机用户来说,定制来电铃声可以让手机更具个性化,并且让您在繁忙的环境中更容易识别重要的来...
- iPhone13怎么设置来电铃声?苹果13自定义铃声操作教程
-
我们知道,苹果iOS系统是相对封闭的,在很多功能设置上与安卓机大有不同。就如来电铃声,很多苹果用户就不喜欢使用默认的那些来电铃声,想要自定义铃声,却不知如何操作。最近,新购入iPhone13系列机型的...
- iPhone 免费铃声:iOS 26 终于让设置变得更简单
-
苹果终于开窍了——省去了最烦人的繁琐步骤。iOS26终结了多年来困扰iPhone用户的麻烦操作:现在无需通过GarageBand应用,仅需轻点几下就能设置自定义铃声。完全免费、直接操作且极...
你 发表评论:
欢迎- 一周热门
- 最近发表
-
- iphone6自定义铃声设置流程(iphone6怎么自定义来电铃声)
- iphone手机三分钟更换铃声,无需电脑直接手机操作
- iPhone手机个性铃声设置详细教程(iphone个性铃声怎么设置)
- iPhone也能用自己喜欢的铃声了,2分钟包搞定!
- 苹果iOS 26隐藏新铃声曝光:强调“玻璃质感”
- 苹果ios14充电提示音怎么设置 iPhone手机修改充电提示音教程
- 苹果iphone手机直接设置铃声教程(ios怎么直接设置铃声)
- iPhone苹果16自定义来电铃声攻略(ios自定义铃声怎么设置)
- 未越狱iPhone用户自定义来电铃声和短信铃声的教程
- 苹果手机怎么设置闹钟铃声?更改为歌曲铃声,亲测有效
- 标签列表
-
- 如何绘制折线图 (52)
- javaabstract (48)
- 新浪微博头像 (53)
- grub4dos (66)
- s扫描器 (51)
- httpfile dll (48)
- ps实例教程 (55)
- taskmgr (51)
- s spline (61)
- vnc远程控制 (47)
- 数据丢失 (47)
- wbem (57)
- flac文件 (72)
- 网页制作基础教程 (53)
- 镜像文件刻录 (61)
- ug5 0软件免费下载 (78)
- debian下载 (53)
- ubuntu10 04 (60)
- web qq登录 (59)
- 笔记本变成无线路由 (52)
- flash player 11 4 (50)
- 右键菜单清理 (78)
- cuteftp 注册码 (57)
- ospf协议 (53)
- ms17 010 下载 (60)