从运维角度看中大型网站架构的演变之路

news/2024/5/14 12:40:55/文章来源:https://blog.csdn.net/weixin_33756418/article/details/94542550

前言

网上有很多文章类似于我今天要分享的课程,有架构师写的,有运维写的,还有开发些的,偏重点都不同,今天我以咱们运维角度全面讲解。

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

说明

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

开发语言:PHP和JAVA

Web服务:Nginx/Tomcat8

数据库:MySQL

操作系统:CentOS

物理服务器:Dell R730/R430 

一、单台服务器部署

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

wKiom1l6nSbB5uCfAACPTOIseks145.png

二、WEB与数据库独立部署

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

 

wKioL1l6nWbyWBaKAACeKidaIj4646.png

三、动静分离-初期

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

wKiom1l6nZuDWWl5AADL8CP3zfY614.png

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

RedisCache

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

MySQL主从

基于binlog异步复制。

HA

MySQL:Keepalived

怎么保证Redis缓存时效性?

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

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

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

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

wKioL1l6ndeikFq6AADn8189B6A446.png

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

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

七层负载均衡

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

NFS网络文件系统

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

Redis主从

动静分离-中期

HA

LB:Keepalived

NFS:DRBD+Heartbeat

Redis:Sentinel/Keepalived

uSession如何会话保持?

a)源IP Hash

b)Session共享

c)Session Sticky(粘滞会话)

d)Session复制

wKiom1l6nh_RMKsWAAFb-Q6rCq8390.png

六、数据库架构扩展

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

一主多从

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

读写分离

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

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

分库、分表、分区

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

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

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

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

从库四层负载均衡

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

HA

主库和从库LB:Keepalived

七、SOA面向服务架构

SOA

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

服务化治理

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

配置中心

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

消息队列

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

wKioL1l6nongprQ4AAHzSvpUlxs526.png

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

DNS轮询

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

全文检索引擎

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

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

wKioL1l6nsLQoiCVAAIreyFNjmQ657.png

九、静态缓存服务器

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

wKiom1l6nwTjwb6VAAI-xifkl70723.png

十、分布式文件系统与CDN

分布式文件系统

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

CDN

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

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

wKioL1l6nzHhUf50AAHX8l2CeKk159.png

wKioL1l6n1rgc5p8AAIwttHqol4405.png

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

四层负载均衡

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

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

NoSQL数据库

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

十二、现在

弹性伸缩

自动扩容,节点降级。

微服务

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

内存化

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

异地容灾

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

应急预案

十三、谈古至今

尽量将请求拦截在前面,从而减少数据库和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)机房故障:切换缓存库/数据库到其他机房

转载于:https://www.cnblogs.com/benpao/p/7277281.html

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

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

相关文章

SVN 导出代码在VS2012运行提示“未能将网站xx 配置为使用 ASP.NET 4.0,为了使此网站正确运行,您必须将它手动配置为使用 ASP.NET 4.0”

今天接到了我们自己的一个订餐系统优化的任务,要想执行这个任务就得使用 SVN 获取源代码(我的学习进度还没有走到SVN); 其实这样来一下也好,有助于更好地学习接下来的SVN,哈哈。下面说问题: 1,当…

闪电精灵SEO 打破百度快速排名规则

我们许多站长们都是每天为了自己网站的排名操碎了心,然而纵使每天苦逼的更新网站,做外链,排名未必上得去,度娘总是不给面子,排名优化做的太慢。但是你可知道有一种方法能够在7-30天内快速提高网站排名吗?或者听说过但不会做? 百…

从运维角度看中大型网站架构的演变之路

本文出自 “李振良的技术博客” 博客,请务必保留此出处http://lizhenliang.blog.51cto.com/7876557/1951651 前言 网上有很多文章类似于我今天要分享的课程,有架构师写的,有运维写的,还有开发些的,偏重点都不同&#x…

当代文学网站设计初稿

完成设计初稿;设计思路:页头以毛笔开始,页尾以钢笔结束;为的是形象的表述当代文学从1949年至今的一个发展历程。页面采用古典元素点缀增加页面古典气息,采用笔墨、墨汁等增加页面文学韵味,页面背景采用有点…

网站、数据库的衍变之路

网站、数据库的衍变之路 转发自博客:http://www.cnblogs.com/birdshover/原文地址:http://www.cnblogs.com/birdshover/archive/2009/08/03/1537225.html (一) 最简单的一个网站,可能说是demo更加合适一些,…

20个非常不错的HTML5免费建站模板

HTML5是下一代主要的HTML编码规范,HTML5为网页设计者们提供了一些强大的新功能,HTML5的新功能包括:表单控制、APIS、拖拽、多媒体、屏幕绘图等。 本文向大家推荐12款免费的优秀高质量 HTML5CSS3 模板。 1. Touch The Future: Create An Elega…

20 个非常漂亮的 JavaScript 滑块设计的网站

这些东西一定会用的到的,哒哒 JavaScript 滑块,特别是基于 jQuery 插件的滑块在网站设计中使用非常频繁,下面是 20 个使用该技术设计的网站,设计非常精美,值得参考。 These Are Things Elevate Mathieu Clauss The Dai…

SEO禁用蜘蛛(爬虫)搜索收录网页(全)

手段一: Robots协议:用来告知搜索引擎哪些页面能被抓取,哪些页面不能被抓取;可以屏蔽一些网站中比较大的文件,如:图片,音乐,视频等,节省服务器带宽;可以屏蔽站…

今日头条垂涎已久的Reddit,到底是个什么网站?

硅谷Live / 实地探访 / 热点探秘 / 深度探讨 在国内,说起新闻网站,我们肯定会想到今日头条、百度、搜狐、网易等等网站。 那么你们知道么?在美国,如果你问美国人他们最常逛的新闻社区是什么,回答中肯定会提及一个网站。…

如何确定一个网站是用Wordpress开发的

问题 如何确定一个网站是用Wordpress开发的? 答案 打开网页的源码页,可以通过搜索功能查找一下是否源码中包含wp-content。如果有这个文字,说明此网站基本就是使用wordpress程序创建的网站,因为wp-content是wordpress建站程序的一…

著名电子商务网站高并发千万级大型数据库经验之- 读写分离

由于公司的主服务器责任重大,而且满负荷跑了接近2年了,怕万一有闪失主服务器出现硬件故障后重新购买新服务器订货到货周期可能会比较长,所以公司在春节期间购买了一台更强大的新服务器来当备用服务器,购买的初衷就是防止出现硬件故…

利用shell脚本批量提交网站404死链给百度

网站运营人员对于死链这个概念一定不陌生,网站的一些数据删除或页面改版等都容易制造死链,影响用户体验不说,过多的死链还会影响到网站的整体权重或排名。百度站长平台提供的死链提交工具,可将网站存在的死链(协议死链、404页面)进行提交,可快…

全球最大同性交友网站,已经10岁了!

本文转自硅星人(ID:guixingren123)作者:光谱1999 年上线的 SourceForge,因为免费一度是世界上最受欢迎的开源软件代码托管网站。然而 Google 担心它一家独大,上线了自家的代码托管网站 Google Code。2005 年&#xff0…

全球最大同性交友网站,已经10岁了!

本文转自硅星人(ID:guixingren123)作者:光谱1999 年上线的 SourceForge,因为免费一度是世界上最受欢迎的开源软件代码托管网站。然而 Google 担心它一家独大,上线了自家的代码托管网站 Google Code。2005 年&#xff0…

采用LAMP网站架构(Linux+Apache+MySQL+PHP)

2019独角兽企业重金招聘Python工程师标准>>> LAMP指的Linux(操作系统)、Apache(HTTP 服务器),MySQL(数据库软件) 和PHP(有时也是指Perl或Python) 的缩写&…

在免费的亚马逊服务器上手写个人网站是什么体验(文中有大量福利,别外传)

目录 本文引言部分: 本文必读部分: 本文福利白嫖部分: 接下来让我们在白嫖的亚马逊云服务Amazon EC2手写网页: 在亚马逊服务器上写网页三步走: 总结Amazon EC2(云服务器)的一些优势: 本次在亚马逊AW…

SEO网站怎么优化,才能让排名靠前?

随着搜索引擎的发展,SEO行业,同时也在发展,几乎每天都会有影响网站排名的细微因素在改变,对于SEO人员,我们熟知百度搜索引擎原理,但理论与实践,仍然有一定的差别。 特别是当你试图让网站排名提…

38岁老男孩个人建站方向求教

我不想做现在的工作想法已有很久了,现在想就此请个长假,来专心做网站,觉得自己做发展空间还是会很大,我的年龄已不小,也不想就此在公司混日子,就请高手指点一二。 自身状况:本人38岁&#xff0c…

一朵奇葩:卖家具的网站,搞起了区块链?

硅谷Live / 实地探访 / 热点探秘 / 深度探讨还记得小探第一次在美国逛家居店买家具的时候,内心简直是崩溃的。。比如,这张看起来并无特别之处的沙发,猜猜多少钱?顶多两、三百美元?事实证明,小探还是太乃衣服…

wordpress网站需要ftp更新解决办法

想要解决很简单,vi wp-config,php 、进入之后将以下的代码全部复制粘贴进去:  define("FS_METHOD","direct");  define("FS_CHMOD_DIR", 0777);  define("FS_CHMOD_FILE", 0777);我改的时候这个文件不让修…