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

news/2024/5/9 18:01:43/文章来源:https://blog.csdn.net/weixin_33750452/article/details/85141719

前言

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


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


说明

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

开发语言:PHP和JAVA

Web服务:Nginx/Tomcat8

数据库:MySQL

操作系统:CentOS

物理服务器:Dell R730/R430


录制视频地址:http://edu.51cto.com/course/10288.html


此文章为博主原创,转载请注明出处,抵制不道德行为!


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)机房故障:切换缓存库/数据库到其他机房


可以收藏以备后用哦!j_0007.gif


QQ技术交流群,期待你的加入:

Python运维开发群(249171211)

Docker技术交流群(719105297



image.png

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

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

相关文章

杨泽业:给你的网站添加百度自动推送页面代码

最近我的 博客添加了360的自动推送页面代码,今天浏览百度的官方文件里面,也发现了,其实百度也是可以把你自己的网站内容自动推送到百度搜索引擎里面,以方便更快的收录。看完了百度官方的介绍,也是和360推送一样的&…

SEO独家揭秘:政府高权重锚文本虚拟外链技术!

最近不少人都在问怎么做外链,其实外链严格来说有两种,一种用于投票,一种用于单纯的吸引蜘蛛抓取。虽然外链的作用的本质还有一种,就是引流,但是大多数情况下不现实,除非是一些导航网站才有可能做到这些真正…

如何用 Python 爬取需要登录的网站?

2019独角兽企业重金招聘Python工程师标准>>> 最近我必须执行一项从一个需要登录的网站上爬取一些网页的操作。它没有我想象中那么简单,因此我决定为它写一个辅助教程。 在本教程中,我们将从我们的bitbucket账户中爬取一个项目列表。 教程中的…

[SakuraiYo][软工作业(4)]用户体验分析:以 “师路南通网站” 为例

一.页面初览(“师路南通”、“UMU学习平台”、“学生安全教育平台”) 1.“师路南通”页面初览。 *初览亮点:进入网站时的欢迎页面,不仅切合网站主题,且会变幻显示各类相关知识内容,会一定程度上…

简单动态网站搭建

如何在windows服务器上配置wordPress和discuz 网站建设中的概念讲解 网站建设的基础操作 网站程序的基础使用 网站程序的优化 简单动态网站搭建 软件部署域名和主机的购买 域名解析 环境部署 安装程序 软件的使用和优化 wordpress的基础设置和使用 discuz的基础设置…

超强的工具集合,只需要这一个网站足以!墙都不服我就只服它!

随着信息化时代的普及,很多功能性的网站如雨后春笋般出现,比如VIP解析、音乐搜索及影视观看等,但是这些网站只有屈指可数的几种功能,功能都比较单一。 今天给大家推荐一个功能强大到你无法想象的工具集合网站,拥有上百…

大学我都是自学走来的,这些私藏的实用工具/学习网站我贡献出来了,建议收藏精品推荐

作者 | Jeskson 来源 | 达达前端小酒馆 1 https://www.h5jun.com/archives/ 十年踪迹的博客 2 https://www.zhangxinxu.com/ 3 http://www.ruanyifeng.com/home.html 4 https://www.cnblogs.com/yexiaochai/ 5 https://www.cnblogs.com/rubylouvre/ 6 https://www.cnblogs.…

jar包下载网站

http://mvnrepository.com/ 【下载方式】 javadoc是文档(可选) sources是源代码(可选) jar可以通过外部引入加入工程的buildpath

IIS - 自动申请、部署Let's Encrypt的免费SSL证书(让网站实现HTTPS协议)

IIS - 自动申请、部署Lets Encrypt的免费SSL证书(让网站实现HTTPS协议) 2017-12-19发布:hangge阅读:161 一、HTTPS 协议介绍 1,什么是 HTTPS 协议? HTTPS(全称:Hyper Text Transfer …

使用CSS3开启GPU硬件加速提升网站动画渲染性能

遇到的问题: 网站本身设计初衷就没有打算支持IE8及以下版本浏览器,并不是因为代码兼容性问题,而是真的不想迁就那些懒得更新自己操作系统和浏览器的用户,毕竟是我自己的网站,所以我说了算!哈哈~ 没有了低版…

织梦怎么样备份网站

很多用织梦的朋友不知道怎么备份网站,还有些朋友备份网站的方式不对。当遇到网站被黑、服务器到期等关键时刻,导致数据丢失,网站不能用。新搭建网站就得一切从头再来,找技术恢复,又是一笔不小的开支。这是一种无形的损…

19期-当你在百度搜索关键字的时候,哪个网站会排在最前面?今天给大家科普一下“网站SEO”

前言 什么是SEO呢?SEO是Search Engine Optimization,意为“搜索引擎优化”,一般简称为搜索优化。对于SEO的主要工作就是通过了解各类搜索引擎如何抓取互联网页面,如何进行索引以及如何确定其对某一个特定关键词的搜索结果排名等技…

工具网站

http://tool.oschina.net/

技术整合网站

表格功能实现 1.阿里的easyexecl 数据导出功能实现 https://blog.csdn.net/weixin_38546942/article/details/87878983 2.Apache POI的实现方式 https://www.cnblogs.com/huajiezh/p/5467821.html

网站访问出现 ------ Can not write to cache files, please check directory ./cache/ .

2019独角兽企业重金招聘Python工程师标准>>> 最近在搞微商城时,突然出现了Can not write to cache files, please check directory ./cache/ .这样一个提示, 但最近好像没搞什么大动作,怎么回事,经过一番折腾&#xff…

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

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

网站作业不能粘贴

前两天学校发了一个网上作业,然后就想从网上找点东西借鉴一下,但是网站不让粘贴 又正好最近在学网站制作,就想尝试一下能否绕过这个这个。下面是尝试的几种方法。 直接禁止js 这是第一想法,直接禁止他的js运行, 果然能…

从零开始建站(四) - 后端项目搭建

简介: 这节聊一聊项目的后端,之前也讲过,因为对前端不熟悉,所以在前端花了太多的时间,导致到后端开发的时候搞的人有点疲,所以很多东西从简了,很多细节东西没有考虑,只想着把基本功能…

Ubuntu Nginx下配置网站ssl实现https访问

为什么80%的码农都做不了架构师?>>> 最近在看 HTTP权威指南 看到介绍了HTTPS的ssl,自己就动手测试了下,将步骤记录下 HTTPS简介 什么是HTTPS?百科是这样解释的。HTTPS(全称:Hyper Text Tran…