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

news/2024/5/15 12:35:22/文章来源:https://blog.csdn.net/gredn/article/details/76664554

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

【说明】

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

开发语言:PHP和JAVA

Web服务:Nginx/Tomcat8

数据库:MySQL

操作系统:CentOS

物理服务器:Dell R730/R430

 

一、单台服务器部署

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

 

二、WEB与数据库独立部署

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

 

三、动静分离-初期

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

 

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

RedisCache

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

MySQL主从

基于binlog异步复制。

HA

MySQL:Keepalived

怎么保证Redis缓存时效性?

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

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

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

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

 

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

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

七层负载均衡

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

NFS网络文件系统

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

Redis主从

动静分离-中期

HA

LB:Keepalived

NFS:DRBD+Heartbeat

Redis:Sentinel/Keepalived

Session如何会话保持?

a)源IP Hash

b)Session共享

c)Session Sticky(粘滞会话)

d)Session复制

 

六、数据库架构扩展

访问量上来了,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解耦服务,保障服务直接通信。

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

DNS轮询

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

全文检索引擎

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

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

 

九、静态缓存服务器

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

 

十、分布式文件系统与CDN

分布式文件系统

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

CDN

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

使用CDN技术,它通过一种缓存技术将频繁访问的资源(主要静态)分布到全国各地边缘服务器,用户先访问CDN服务器,CDN根据职能DNS返回客户端就近网络中的缓存服务器,如果这个缓存

服务器有缓存请求的静态资源就直接返回,否则回源站获取返回,从而提高网站访问速度,减少后端服务器压力。

 
 

十一、四层负载均衡与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)机房故障:切换缓存库/数据库到其他机房

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

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

相关文章

查找会议论文的网站

http://conf.cnki.net/advanceSearch.aspx http://www.allconfs.org/list.asp

python2、python3同时存在,pip安装包后,显示No module named的问题(附加国内镜像网站)

python2、python3同时存在,pip安装包后,显示No module的问题(附加国内镜像网站) 在电脑中同时安装python2、python3的情况下,明明已经pip相对应的包后,但是使用import相应包时python2可以正常导入&#xf…

免费GIS数据下载网站推荐

数据是 GIS 的核心,然而你是不是还在为找不到数据而苦恼呢?本期我们为你挑选了国外十个免费的数据下载网站,赶快去看看吧! 1、Natural Earth Data 网址:http://www.naturalearthdata.com/ N…

大型网站系统与JAVA中间件实践 学习总结 一

大型网站系统与JAVA中间件实践 学习总计 一前言一、用 JAVA技术和单机来构建的网站二、将单机系统设定为交易网站三、单机负载警告,数据库与应用分离四、应用服务器负载告警,如何让应用服务器走向集群访问选择问题---引入负载均衡解决session问题Session…

eyoucms网站基本信息设置

后台 — 网站首页 — 页面设置,即可设置。 网站基本信息是贯穿显示在整个网站上的,且其他SEO相关设置也会引用到,主要包含网站名称、关键词和网站描述等设置。 关闭网站:默认选择“否”,如果维护,备案或其…

eyoucms网站基本信息设置

后台 — 网站首页 — 页面设置,即可设置。 网站基本信息是贯穿显示在整个网站上的,且其他SEO相关设置也会引用到,主要包含网站名称、关键词和网站描述等设置。 关闭网站:默认选择“否”,如果维护,备案或其…

eyoucms 到底什么是网站根目录?

对于站长和互联网技术人员而言,网站根目录是一个很常见的概念,弄不明白到底哪一个目录才是根目录的新手也并不少见,今天益吾库就跟大家分享一下到底什么是网站根目录的相关知识。 什么是根目录 顾名思义,根就像树根一样&#xf…

setoolkit克隆网站并抓取账号密码

文章目录setoolkit简介setoolkit克隆站点遇到的问题setoolkit简介 社会工程师工具包(The Social-Engineer Toolkit)是一个为社会工程设计的开源渗透测试框架。SET有许多自定义攻击向量,允许您快速地进行可信的攻击。SET是TrustedSec有限责任…

eyoucms 网站导航怎么设计?

通常用户第一眼进入网站看到的是首页的图片,其次就是网站的主导航,因此主导航对网站来说至关重要,不仅能够起到很好的指引作用,一个有魅力的导航还能留住用户浏览更多的信息,而且带给用户良好的体验。,那么…

网站的组成部分有什么?

网站的组成分为网站域名、网站空间和网站程序,接下来我们分别了解一下这三个部分。 网站域名相关知识: 1、eyoucms.com为顶级域名,bbs.eyoucms.com为二级域名,拥有顶级域名所有权及管理权便可以自行分配二级域名,如ww…

eyoucms 如何判断网站的SEO优化情况

网站程序自身的SEO优化质量可以通过以下几个方面加以判断: 1、网页标题 (title部分)是否体现了全站的关键词,每个页面的关键词是否不同,一般栏目应该以栏目名称为主要关键词,内容页面以内容标题为关键词…

eyoucms 怎么使用网站地图?

网站无论大小,单独的网站地图页面都是必需的,通过网站地图,不仅用户可以对网站的所有内容一幕了然,搜索引擎也可以跟踪链接爬行到网站的主要部分。一般来说,网站地图有两种形式: 一种是HTML,…

eyoucms 网站描述怎么写?

用户在搜索关键词的时候,首先呈现给用户的是title和描述部分,想要进一步吸引用户点击,得到用户的青睐,醒目的描述将发挥重要的作用,因为标题的长度有限,并不能显示完全,而描述是概括一个网页内容…

eyoucms 如何提高企业网站文章内容质量

无论什么类型的网站,文章的高质量永远是放在靠前位的。文章的质量直接影响到网站的权重和网络排名。所以提高文章质量也就成了每一个企业网站优化的重中之重。那么我们要怎么才能提高质量呢?下面有几个小建议。 首先,原创内容永远是受欢迎的。…

eyoucms 分享一下网站内容建设技巧有哪些

网站制作中有句话“内容为王”。由此可以得出网站的内容对网站的制作是多么重要,网站内容是网站的核心,也是网站进行SEO优化的重点。所以,不管是网站的制作还是网站的SEO优化,网站内容都要做好,并且要更新一些有特色的…

eyoucms移动互联网时代 建设移动网站策划该怎么做?

从现在网站推广的力度以及方式来说,好像移动网站要比pc电脑网站更加具有优势一些,现在可以说是移动端设备的天下了,自然移动网站也变得更加受人们欢迎,但是移动网站的发展速度也是非常迅速的,稍不留神,就被…

什么是响应式网站 为什么会受到客户的喜欢

为了能够给不同的用户设计出不同的网站类型,业内人士在网站建设的设计上投入了众多的精力。其中,响应式网站设计的成功便是投入精力后优秀的产出品之一。那么,到底什么是响应式网站呢?它的哪些优势能让客户对它如此的依赖呢&#…

优化新网站需要注意的几个细节 让效果达到良好

因为每一个网站架构是不一样,因此网站优化前期准备工作也是不一样,作为一个专业优化人员,必须对需要优化的网站架构有一定了解。特别是在对于新网站做优化的时候,需要了解清楚好,因为新网站优化不好,可能会…

eyoucms 网站原创文章要怎样进行优化?

互联网一直都是在变化中的,而且百度、搜狗等搜索引擎的抓取方式也在不断的进行改变,这些都导致了网站优化手法的改变,如果说唯一没有变化的话就是对于原创文章的编写以及发布。但是要写出一个高质量原创的文章可不是一件简单的事情&#xff0…

网站外链如何合理布局

一个网站如果拥有比较好的搜索排名主要取决他两个方面,一个就是这个网站的内容能够带给用户非常好的体验,另外一个,就是这个网站当中的外链页面输送了很大的权重量,所以今天我们就来跟大家聊一聊,如何才能够让网页的建…