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

news/2024/5/18 19:35:21/文章来源:https://blog.csdn.net/zonghua521/article/details/78200216

前言

今天我以咱们运维角度讲解网站架构的演变


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


说明

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

开发语言:PHP和JAVA

Web服务:Nginx/Tomcat8

数据库:MySQL

操作系统:CentOS

物理服务器:Dell R730/R430

从运维角度看中大型网站架构的演变之路 - 朝鲜程序员 - 朝鲜程序员的博客

一、单台服务器部署

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

从运维角度看中大型网站架构的演变之路 - 朝鲜程序员 - 朝鲜程序员的博客


二、WEB与数据库独立部署

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

从运维角度看中大型网站架构的演变之路 - 朝鲜程序员 - 朝鲜程序员的博客

三、动静分离-初期

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


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

uRedisCache

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

 

uMySQL主从

基于binlog异步复制。


uHA

MySQL:Keepalived


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

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

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

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

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


五、七层负载均衡、共享存储与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复制


六、数据库架构扩展

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


u一主多从

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


u读写分离

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

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


u分库、分表、分区

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

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

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

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


u从库四层负载均衡

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


uHA

主库和从库LB:Keepalived

从运维角度看中大型网站架构的演变之路 - 朝鲜程序员 - 朝鲜程序员的博客

七、SOA面向服务架构

uSOA

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


u服务化治理

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


u配置中心

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


u消息队列

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

从运维角度看中大型网站架构的演变之路 - 朝鲜程序员 - 朝鲜程序员的博客

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

uDNS轮询

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


u全文检索引擎

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

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

从运维角度看中大型网站架构的演变之路 - 朝鲜程序员 - 朝鲜程序员的博客

九、静态缓存服务器

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

十、分布式文件系统与CDN

u分布式文件系统

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


uCDN

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

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

从运维角度看中大型网站架构的演变之路 - 朝鲜程序员 - 朝鲜程序员的博客

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

u四层负载均衡

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


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


uNoSQL数据库

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

从运维角度看中大型网站架构的演变之路 - 朝鲜程序员 - 朝鲜程序员的博客

十二、现在

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_762485.aspx

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

相关文章

构建Nginx网站服务和安装论坛

文章目录一:编译安装Nginx1:安装支持软件2:创建运行用户、组3:编译安装Nginx二:Nginx的运行控制1:检查配置文件2:启动、停止Nginx3:使用Nginx服务脚本三:配置文件 nginx.…

APACHE(proxy_ajp_stickysession) + TOMCAT实现高可用网站或管理系统集群

1.基础环境安装设置 操作系统环境,APACHE安装,TOMCAT集群安装,TOMCAT测试工程请参见: http://zp820705.iteye.com/blog/1347417 2.TOMCAT配置 Tomcat集群配置后端Tomcat Server为支持AJP的独立服务,前端Apache配置为…

APACHE(proxy) + TOMCAT(session复制)实现高可用网站或管理系统集群

1.方案特点 Apache端可选使用sticky session配置负载均衡,是否配置sticky只是影响负载均衡的粒度。 Apache端配置故障转移. Tomcat端使用官方文档描述的cluster配置,通过多播实现内存方式的session复制,可选使用同步复制和异步复制。 2.建…

建站之星安装_凡科、建站之星、微企点这些国内自助建站平台适合小白用户建网页吗?...

凡科、建站之星、微企点这些国内自助建站平台的使用体验,可以看看下面这篇知乎问答,有些用户评价在里面。免费建站平台靠什么盈利?​www.zhihu.com建立个人网页,如果是更新文章、记录、分享用的话,可以用知乎、博客、简…

cdn对动态网站有作用吗_网站友情链接现在还有效果吗?请看友链的八大作用 - 蜘蛛池博客...

原出处:蜘蛛池博客原文链接:网站友情链接现在还有效果吗?请看友链的八大作用 - 蜘蛛池博客说到友情链接,大家都知道了友情链接有提升网站权重排名的作用,但是除了提升权重排名,你还知道它有其它什么作用吗&…

妙用ISA Server的“重定向”功能解决单位网站不能访问的难题

在A市某单位增加了一条电信出口后,发现通过域名不能访问自己单位的网站了,而原来是可以访问的。具体案例如下:该单位原来只有一条网通的出口,采用ISA Server作为防火墙与代理服务器提供共享,单位的网站在局域网中&…

分享我的部分网站设计作品

转载于:https://blog.51cto.com/peishuangcai/439661

K8S网站页面的搭建

目录一、在master01上操作(基于之前的多节点环境基础)1.1、创建dashborad工作目录1.2、创建资源1.3、登录一、在master01上操作(基于之前的多节点环境基础) 1.1、创建dashborad工作目录 [rootmaster01 k8s]# mkdir dashboard [r…

使用Varnish代替Squid做网站缓存加速器的详细解决方案

今天写的这篇关于Varnish的文章,已经是一篇可以完全替代Squid做网站缓存加速器的详细解决方案了。网上关于Varnish的资料很少,中文资料更是微乎其微,希望本文能够吸引更多的人研究、使用Varnish。   在我看来,使用Varnish代替Sq…

集成轻量级的IIS实现打包Asp.Net网站生成exe方便快捷的进行客户演示

本文和大家分享一下打包Asp.Net 网站成为一个exe 方便快捷的进行客户演示,挺不错哦。 在Asp时代有一个NetBox 产品可以把整个Asp网站AllInOne的打包成一个exe,在没有IIS的情况下可以单独运行这个exe来开启整个网站。在Asp.Net 下一直没有类似的产品出现&…

23个精美的的国外网站设计作品推荐欣赏

如果一个网站的内容不是很多而且将来内容也不怎么增加的话,那么制作成单页(Single Page Websites)的形式是很好的选择。这种只有一个页面的网站形式,曾经非常流行,现在依然有很多人喜欢。如果你也想做一个这样的网站&a…

w10系统下怎么删除服务器,win10系统任务栏图标怎么删除_网站服务器运行维护

win10系统任务栏没有搜索框怎么办_网站服务器运行维护win10系统任务栏没有搜索框的解决方法:1、首先使用鼠标右键点击任务栏;2、然后在弹出的菜单中依次点击【Cortana】、【显示搜索框】选项即可。1、点击“开始”菜单,运行“regedit”打开注…

一个引号导致1个小时网站打不开

咱们就说下这个例子,提醒广大开发在写SQL的时候一定要仔细!当时情况是这样的,一个慢SQL把数据库CPU连接数跑满,由于并发压力大,CPU空闲瞬时为0,过一会机器被HANG死,连接不上。因涉及公司隐私问题…

【AI实战】手把手教你文字识别(识别篇:LSTM+CTC, CRNN, chineseocr方法)

文字识别是AI的一个重要应用场景,文字识别过程一般由图像输入、预处理、文本检测、文本识别、结果输出等环节组成。 其中,文本检测、文本识别是最核心的环节。文本检测方面,在前面的文章中已介绍过了多种基于深度学习的方法,可针…

360在网站安全防护中的实践

2019独角兽企业重金招聘Python工程师标准>>> 360在网站安全防护中的实践 作为国内首个集网站漏洞检测、网站挂马监控、网站篡改监控于一体的免费检测平台,360网站安全检测平台拥有全面的网站漏洞库及蜜罐集群检测系统,能够第一时间协助网站检…

为网站赢得用户信任的8个建议

对我们来说,无论是浏览网页还是网上购物,互联网都是一个令人担忧的地方。人们对网上的一切都保持着怀疑的态度。信用卡诈骗和身份假冒的出现,导致网站很难获得用户的信任。要获得用户的信任也不是不可能。通过优化网站上的一些可视化元素&…

01-19asp.net基础--网站登录及验证

第一步: 1)首先使用“CodeSmith”将Examinee类实体化,并生成实体类连接数据库的方法,存在解决方案下的“App_Code”文件夹下。 修改一下连接某个数据库; private SqlConnection _Conn;public DBConnection(){String co…

在线问答系统html模板,问答系统网站模板

充值模块会员积分:支持设置会员积分及积分累计升级,并获得购买折扣;会员充值:支持会员充值到账号,用于购买商品,下载点数等开通;微信公共号:添加多个公共号,方便管理及推送信息;自定义菜单:能够…

教你如何下载音乐的网站只试镜

打开IE浏览器,选择“Internet选项”,“浏览历史记录”的“设定” 先把打开的目录清空,然后再打开仅仅供试听的站点。比方“http://www.bandari.net/”,待播放结束以后,就能够看到这个音乐文件已经下载下来了 版权声明&…