中大型网站架构的演变之路

news/2024/5/12 23:54:02/文章来源:https://blog.csdn.net/DINGYANG0315/article/details/76691748

一个成熟的网站架构并不是一开始设计就具备高可用、高伸缩、高性能等特性的,它是随着用户量和业务线不断增加,基础架构才逐渐健壮的。在发展初期,一般都是从0到1,不会一上来就整一些大而全的架构,也很少人这么任性。


说明

适用业务:电商/门户/招聘网站

开发语言:PHP和JAVA

Web服务:Nginx/Tomcat8

数据库:MySQL

操作系统:CentOS

物理服务器:Dell R730/R430


wKiom1l6o5Xh39kJAAElHbFCXX4776.png


一、单台服务器部署

项目开发完成上线,用户访问量寥寥无几。

wKiom1l6nSbB5uCfAACPTOIseks145.png



二、WEB与数据库独立部署

有一定用户访问量,单台服务器性能有些吃力,想提高并发能力,增加一台服务器,将HTTP请求与SQL操作负载分散不同服务器。


wKioL1l6nWbyWBaKAACeKidaIj4646.png


三、动静分离-初期

什么是动静分离?静态页面与动态页面分离部署。

wKiom1l6nZuDWWl5AADL8CP3zfY614.png


四、数据库主从与查询缓存

uRedisCache

使用Redis缓存数据库查询结果,将热数据放到内存中,提高查询速度,减少数据库请求。

 

uMySQL主从

基于binlog异步复制。


uHA

MySQL:Keepalived


u怎么保证Redis缓存时效性?

a) 增加中间件,在主从同步延迟时间内,中间件将SQL读操作还路由到主。

b) 主从同步延迟时间后,再异步发起一次淘汰Cache。

c) 增加消息队列和清理Cache程序,入库同时也写入消息队列,缓存清理程序订阅消息队列,一旦有数据更新,重新Cache。

d) Cache中的Item一定要设置过期时间。

wKioL1l6ndeikFq6AADn8189B6A446.png

五、七层负载均衡、共享存储与Redis高可用

访问量越来越大,单台服务器性能已无法支撑,于是增加负载均衡,水平扩展WEB节点,同时调整动静分离。


u七层负载均衡

根据域名或者后缀转发不同的upstream。


uNFS网络文件系统

共享存储存放网站程序或者静态资源。


uRedis主从

u动静分离-中期

uHA

LB:Keepalived

NFS:DRBD+Heartbeat

Redis:Sentinel/Keepalived


uSession如何会话保持?

a)源IP Hash

b)Session共享

c)Session Sticky(粘滞会话)

d)Session复制

wKiom1l6nh_RMKsWAAFb-Q6rCq8390.png

六、数据库架构扩展

访问量上来了,SQL操作自然也就多了,单台数据库读性能到达瓶颈,响应很慢;业务读多写少,需要提升读性能,考虑扩展数据库架构。


u一主多从

基于binlog异步复制,多个从库同步主库。


u读写分离

a)代码逻辑层区分读写库。

b)使用中间件代理,对SQL解析区分处理;开源主流的有:Atlas、MyCat等。


u分库、分表、分区

分库:根据业务类型分离相关表到不同数据库;例如WEB、BBS、Blog等。

分表:单个表上千万条记录,操作耗时长,采用垂直拆分和水平拆分,将数据分散存储到不同小表上。

分区:根据表字段分成多个区块,这些区块可以分布在不同磁盘上。

以上主要是分散磁盘I/O压力,提高处理性能。


u从库四层负载均衡

当多个从库时,采用LVS实现负载均衡,对程序提供VIP,访问透明。


uHA

主库和从库LB:Keepalived

wKioL1l6o2uTza2aAAJe5ZnmuK0978.png

七、SOA面向服务架构

uSOA

面向服务架构设计理念,拆分臃肿程序架构,以核心业务为单位分解,服务化、模块化,分布式部署。


u服务化治理

使用Dubbo分布式框架,治理SOA服务化,Dubbo提供高性能和透明化RPC远程调用方案 。


u配置中心

使用Zookeeper存储服务连接信息。


u消息队列

使用RabbitMQ解耦服务,保障服务直接通信。

wKioL1l6nongprQ4AAHzSvpUlxs526.png

八、DNS轮训与数据库全文检索引擎

uDNS轮询

DNS负载均衡技术实现原理是在DNS服务器上一个主机名配置多个IP地址,用户访问时,轮训返回解析记录,从而达到负载均衡目的。


u全文检索引擎

像电商网站首页都会有查询表单,当商品多且品种多,关系型数据库庞大,想要快速从数据库中精确检索出用户想要的商品就显的力不从心了。

引入全文检索引擎,建立索引缓存,快速查询海量数据,缓解数据库压力;开源主流的有:ElasticSearch、Sphinx。

wKioL1l6nsLQoiCVAAIreyFNjmQ657.png


九、静态缓存服务器

每次请求静态资源负载都会落在WEB节点和NFS存储上,而且这些资源都是很少变动的,我们把这些资源缓存到上层,请求到来时先判断本地是否有缓存,如果有就直接返回,从而减少后端HTTP请求,响应会快很多。

wKiom1l6nwTjwb6VAAI-xifkl70723.png

十、分布式文件系统与CDN

u分布式文件系统

当图片、视频很多时,NFS在处理效率和存储容量上受局限,这时用分布式文件系统(DFS)就比较合适了,DFS是一种NAS存储架构,C/S模式,多台廉价服务器组成存储集群,提供高性能、高可用、高扩展等特性。客户端挂载到本地,就像访问本地文件系统一样访问远程服务器文件。


uCDN

每次请求静态资源都会落在WEB节点和存储上,而且这些资源都是很少变动的,如果把这些资源放到网站入口,岂不减少后端大量HTTP请求,有什么方法呢?

使用CDN技术,它通过一种缓存技术将频繁访问的资源(主要静态)分布到全国各地边缘服务器,用户先访问CDN服务器,CDN根据职能DNS返回客户端就近网络中的缓存服务器,如果这个缓存服务器有缓存请求的静态资源就直接返回,否则回源站获取返回,从而提高网站访问速度,减少后端服务器压力。

wKioL1l6nzHhUf50AAHX8l2CeKk159.png

wKioL1l6n1rgc5p8AAIwttHqol4405.png

十一、四层负载均衡与NoSQL数据库

u四层负载均衡

七层负载均衡要分析应用层协议,效率没有四层高,有些应用场景并不需要分析应用层协议,只想实现转发负载,那么,四层负载均衡是首选。


当然,也可以四层代理七层负载均衡,方面扩展七层负载均衡。


uNoSQL数据库

由于个别SQL查询量大,已经无法在深度优化,可以考虑使用NoSQL非关系型数据库,它的产生就是解决大规模、高并发、大数据量等问题。但比较适合非结构化数据存储,比如详情页内容、原始数据等。

wKioL1l6o0PQ1PlYAAJadBpuE1k023.png

十二、现在

u弹性伸缩

自动扩容,节点降级。


u微服务

更细粒度拆分应用,实现服务化、轻量级、自动化部署等。


u内存化

磁盘数据尽可能在内存中处理。


u异地容灾

如果不可容忍网站不可用,应考虑到异地备份或异地双活。


u应急预案



十三、谈古至今

尽量将请求拦截在前面,从而减少数据库和HTTP请求

数据库层是架构瓶颈,需要精心设计,比如架构扩展、SQL优化(压缩、索引等)

避免单点

分解压力

扩展性

找瓶颈出方案


十三、应急预案

SRE:网站可靠性工程师

保证网站不宕机是他们的使命!


制作应急预案大致以下几步:


1、系统分级

按照业务系统重要性划分,比如订单服务挂了,将影响用户无法下单,因此需要投入更多的资源保障;比如管理后台挂了,不会影响到用户;根据业务划分不同级别,实施不同的质量保障和成本投入。


2、全链路分析

梳理从网站入口到数据存储的各个环节,找出依赖服务,假设性去分析问题,如果某环节故障,影响范围怎样。


3、全方位监控

对相关链路实施全面监控,包括基础资源监控、服务状态监控、接口监控、日志监控等,确保出现问题有依据可追溯。


4、制定应急预案

多思考方案可行性,不定期进行预案演习,验证预案正确性和可控性及掌握恢复时间。



十四、应对策略

网络接入层:

a)机房故障:从DNS轮训摘除该机房或者切换到其他机房

b)VIP网络异常:切换备用VIP


代理层:

a)IP限流:某些IP访问太大导致后端负载压力过高;实施IP限流

b)后端应用异常:如软硬件故障,摘除异常节点;如果某机房问题切换到其他机房


应用层和服务层:

a)服务异常:某服务访问超时,响应慢;摘除服务或切换到正常服务

b)程序线程池不够用:线程池设置太小,导致请求堆积;提供参数开关,比如动态调整线程池大小

c)请求量太大:请求量太大,超过实际处理能力;请求限流或者设置请求阈值自动扩展节点


缓存层和数据层:

a)Redis挂掉:主从切换

b)MySQL挂掉:主从切换,切换后验证

c)机房故障:切换缓存库/数据库到其他机房


可以收藏以备后用哦!

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

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

相关文章

网站性能优化实战

网站性能优化实战——从12.67s到1.06s的故事 JAVA高级架构 昨天 网站性能监测与优化策略 0.引言 作为互联网项目,最重要的便是用户体验。在举国“互联网”的热潮中,用户至上也已经被大多数企业所接收,特别是在如今移动端快速发展的时代&#…

20个颇具创意的移动网站设计案例

CB2 North Carolina Wine Country Aerie Marlboro Etsy Airbnb J Taylor Design Sun-Maid Wrigley Zappos Stowe Dungs Burton Yasalam Tim Hortons Sony Tablets Tyler Michaud Microsoft Toyota FXNINE

国内旅游社区网站推荐

蚂蜂窝是一个旅游分享社区,在蚂蜂窝你可以交换资讯,分享旅行。帮助这里的友邦,或者是获得帮助。 也可以交流功略、美食、音乐、摄影日记,以及与旅行有关的零零种种。(

国内电影下载网站收集

科幻电影网 最新QvodPlayer科幻电影,经典好看的美国科幻大片电影,热门科幻电影排行榜 - QvodPlayer播放器下载 - 四季科幻电影 2hd 高清 720p 1080p magnet bt 磁力下载 老调网 老调网-中英字幕电影-高清电影 - 720P高清电影下载、高清RMVB电影下载、BT下载 6v电影下载网…

国外音乐网站设计佳作赏

Event & Music Website Universal Music Group Hotbitz Last FM – Myspace / Fusion Wild Mix’s Website SHREK – The Musical “To byl n? hit” Microsite Design CreativeWroclaw Duku Music webshop design Dj-Live homepage

21个免费的UI界面设计工具、资源及网站

Lumzy 官方地址:http://www.lumzy.com/ Lumzy是一个网站应用和原型界面制作工具。使用Lumzy,您可以轻松创建UI模型并即时发送到客户电脑中。 Lumzy还具有团队协作编辑工具。 Mockingbird 官方地址:https://gomockingbird.com/ Mockingbird&a…

知乎网的网站构架

知乎的整个网站架构图如下: 知乎是国内很少的使用Python开发的一个网站,也很多值得我们学习的地方,从知乎让我们也可以了解到一些新的WEB技术。 一、Python框架 知乎目前使用的是Tornado 框架。Tornado 全称Tornado Web Server,是…

淘宝seo杂谈(二)

一个成功的淘宝店铺,自然搜索流量应占店铺总流量的40%以上,为什么这么说?其一:淘宝搜索流量非常巨大,其二:淘宝搜索流量转化率最高。通过图中数据魔方我们可以看到凡是热销的宝贝,他的淘宝站内搜…

chrome如何从不安全的网站上下载安装包

1. 先点开警告页的高级,点击 **继续前往** 2. 进入网站后,点击左上角**不安全**,再点击 **网站设置** 3. 配置网站设置,把以下两项设置成允许就可以了

HTML 实现购物网站

一、程序代码&#xff1a; 1.HTML代码 <!DOCTYPE html> <html> <head><meta charset"UTF-8"><title>结算清单</title><script src"js.js"></script><link rel"stylesheet" href"qd.c…

1 如何制定详尽的SEO计划

SEO&#xff08;Search Engine Optimization&#xff09;搜索引擎优化(网络营销):站内SEO和站外SEO 在网站上线前&#xff0c;SEO是必不可少的一个重点&#xff0c;但很多网站都没有详细的规划过如何开始动手做SEO&#xff0c;其实不管是大网站也好&#xff0c;小网站也罢&…

2 SEO关键词和长尾关键词的分析!

————————————————————————————————————————————— ————————————————————————————————————————————— —————————————————————————————————————…

如何判断网站是否被恶意镜像呢?

佛山SEO教你一个最简单的方法&#xff1a; 1、在电脑左下脚&#xff0c;点开始&#xff0c;点运行&#xff0c;在运行右边的框中输入cmd&#xff0c;进入命令模式 2、输入ping 自己的域名&#xff0c;回车 3、再输入ping 对方的域名&#xff0c;回车 4、比较一下两个域名所返…

3 站外SEO操作要点

1 网站提交给搜索引擎 2 网站的收录情况查询 3 站外锚文本 4 外链查询 5 PR值查询

网络推广人员需要掌握的SEO十大查询工具

网络推广人员SEO一定要做到"知己知彼"。知己&#xff0c;就是深入了解自己网站的推广情况&#xff1b;知彼&#xff0c;就是充分了解竞争对手网站的推广情况。网站推广情况是可以通过一些相关数据体现出来的。石家庄婚庆认为网络推广人员如果能够掌握以下十大SEO查询…

建立网站基本操作

首先想要建立自己的网站&#xff0c;就需要一个可以连通外网的服务器。 为什么建立网站需要购买服务器呢&#xff0c;服务器是一种高性能计算机。说的通俗一点&#xff0c;用户浏览网页&#xff0c;其实都是浏览的这台计算机里的网页文件&#xff0c;所以这是你想拥有一个任何…

让wordpress网站拥有以图搜图,智能搜图、图像搜索系统imgso,让网站更智能专业

专业素材网站的搜图功能&#xff1a; 很多背景墙、墙纸、壁纸、电视墙、装修设计素材网都必配以图搜图。这个以图搜图识图的好处不言而喻&#xff0c;是很多素材网、图片网、三维网等等必备功能。 推荐一款专业的以图搜图系统imgso&#xff0c;它是一个以图搜图专业系统&#x…

快速搭建类似千图、昵图的设计素材网站,素材交易网站源码下载

截止年底全球设计素材交易超过990亿美金&#xff0c;其中73%的素材来自欧洲地区&#xff0c;预计今年全球素材的交易将超过1000亿美金。中国是素材潜力国&#xff0c;市场巨大。全球9600万设计师&#xff0c;中国约有1700万设计大军。 设计师盈利渠道两种&#xff1a; 一种是辛…

大型高性能网站的十项规则

在我们公司ChinaNetCloud&#xff0c;见 过多种不同类型的网站和系统&#xff0c;有好也有差。其中有些系统拥有良好的服务器/网络架构&#xff0c;并且进行了合理的调整和监控 &#xff1b;然而一般的系统都会有安全和性能上的 问题&#xff0c;不能良好运行&#xff0c;也无法…

十二个最好的Icon资源网站

之前总结过不少Icon资源站点&#xff0c;不过有一些目前貌似已经不能访问&#xff0c;另外最近在爱库网上发现了很多不错的Icon资源站点&#xff0c;所以在这里重新整理了12个Icon资源站点&#xff0c;和大家分享。1.FindIcons.com就是一个帮您找免费图标的图标搜索引擎。有300…