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

news/2024/5/13 5:01:37/文章来源:https://zmedu.blog.csdn.net/article/details/103259748

前言

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

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

说明

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

开发语言:PHP和JAVA

Web服务:Nginx/Tomcat

数据库: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_720242.aspx

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

相关文章

css会对网站排名有影响吗,网站是如何推广的?DIVCSS网页相似太多影响排名?

网站是如何推广的?DIVCSS网页相似太多影响排名?2021-03-07 10:13:50DIVCSS网页布局有益于SEO优化排名,“网站是如何推广的”,搜索引擎一般不会爬到三层以上的表格嵌套,这一点一直没有得到搜索引擎相关官方网络的证实。…

apache http server 停止工作_(二)http协议的网站装ssl升级成https

最终目标:微信小程序要想上线 必须内部所有域名都是https,比如网络图片,比如后端接口,比如其他链接。问:既然https://minihome.top/能直接访问了,那我用eggjs(node)写的后端接口是不是就可以正常访问了&…

【linux】在阿里云服务器上部署网站 WeCenter

文章目录前言操作环境及以有的架构上传WeCenter软件包解压并传至根目录安装weCenter1. 进入阿里云后台,选择域名解析二级域名 bbs.zmkjedu.com3. 设置apache的配置文件4. 开始安装5. 全部通过后,点击下一步:6. 添加管理员7. 安装成功&#xf…

【Linux】网站后台设置及管理

文章目录1. 进入网站后台选择管理,登陆2. 修改全局设置1) 站点信息修改2) 注册访问修改3) 内容设置3. 把网站添加到主网站上去总结1. 进入网站后台选择管理,登陆 从浏览器输入:bbs.zmkjedu.com 2. 修改全局…

【Linux】ab命令实现网站性能压力测试

文章目录ab命令介绍ab命令的安装ab命令的参数使用举例1. 使用gaosh-64服务器对gaosh-1服务器进行压测,模拟10个用户,对百度首页发起1000次请求2. 压测www.zmkjedu.com压测时的信息详解总结ab命令介绍 ApacheBench(即ab)通常用来做网站性能压力测试&…

【Linux】宝塔堡垒机上线网站初体验

文章目录安装环境:官网提供的一键部署方式安装网站测试1. 先上传安装wordpress2.从终端进入并安装3. 找到上传的包4. 解压并加权限5. 线上安装wordpress6. 创建wordpress数据库7. 登陆总结安装环境: 安装要求: 内存:512M以上&am…

自动seo网站源码_做了利于SEO优化的网站建设,企业的网站就能自动排名靠前?...

这些年,eGoBest发现很多人做网站建设有个错误的观点,尤其是做了营销型品牌网站的企业,都以为只要做一个利于SEO优化好的网站,,Google和百度等搜索引擎就能自动排名靠前,这都是错误的观点,下面&a…

新手搭建网站后视频资源在网站上是如何存储的?

前言 本文的起因是一个学员搭建好了一个视频文章,主要做视频的录制,每个视频在10-20M左右,每月产生10G左右的视频素材,想看看怎么存储。 问题解析 作为个人站,没必要花太多钱, 有几种方案可以实施 免费方…

ubuntu 局域网dns服务器_「bind9」ubuntu下配置bind9为局域网的DNS服务器 - seo实验室...

bind9一、配置bind9服务器之前,先了解这些知识点:1、DNS解析过程详解:http://www.cnblogs.com/liyuanhong/articles/7353974.html2、常用域名记录解释(A记录,CNAME,NS记录,MX记录):http://www.c…

九度搜索引擎点击优化_网站点击率对关键词排名到底有没有影响

前一段时间,我听到很多博客都在谈论网站点击率对关键词排名的影响。为此,我特意选择了一些网站做了一个关于点击率对网站排名影响的实验。对于这些网站,我一开始并没有遵循正常的搜索引擎优化思想,只是为了验证在关键词排名中点击…

用自有工作站做服务器建网站,服务器搭建工作站

服务器搭建工作站 内容精选换一换您可以通过Web应用防火墙服务切换工作模式。Web应用防火墙提供了开启防护、暂停防护、Bypass三种工作模式。如果您已开通企业项目,您可以在企业项目下拉列表中选择您所在的企业项目,切换该企业项目下域名的工作模式。防护…

java static 修饰_「static」JAVA static是什么?修饰符总结整理 - seo实验室

static对java中修饰符的总结整理,尤其是static的理解,static总是忘记其他修饰符修饰的变量有效范围如下:类内package内子类其他packageprivateyesnononodefaultyesyesnonoyesyesyesnopublicyesyesyesyes修饰类修饰成员修饰局部变量static可以…

iNetModels 2.0多组学整合网站的使用

揭示各种omics数据之间的关联对于全面了解 在人类健康和疾病中改变的生物过程和疾病的改变至关重要。到目前为止,很少有研究集中在单一数据库中收集和展示多组学关联 。在此,我们提出了iNetModels。一个交互式数据库和可视化平台多组学生物网络&#xff…

换服务器网站会掉排名吗,网站换服务器对seo有影响吗,排名会有点小波动

我们的网站都是放在服务器上面运行的,并且每一台服务器对应的也都有IP地址,我们将域名解析到IP上面,网站就可以访问,但是有时我们会遇到更换服务器的情况,对于服务器这块的一个更换是会涉及到IP的,这块有影…

Django 搭建博客网站-task00:环境配置

Django 搭建博客网站 目录Django 搭建博客网站前言一、软件和平台二、环境搭建步骤1.下载 UbuntuUbuntuUbuntu2.在 vmwarevmwarevmware 上安装 UbuntuUbuntuUbuntu三、在 vscodevscodevscode 上配置 pythonpythonpython 环境1.连接 LinuxLinuxLinux 虚拟机2.在虚拟机上安装 pyt…

Django 搭建博客网站-task01:基础知识

Django 搭建博客网站 目录Django 搭建博客网站前言一、pythonpythonpython 基础知识二、HTML5HTML5HTML5 基础知识三、vscodevscodevscode 实现爬虫心得总结前言 使用 DjangoDjangoDjango 搭建博客需要学会 pythonpythonpython 和前端知识 一、pythonpythonpython 基础知识 1…

Django 搭建博客网站-task02:快速搭建网站

Django 搭建博客网站 目录 Django 搭建博客网站 前言 一、创建 APP 二、将新建的 APP 和项目进行关联 2.1 修改的文件名是 settings.py 2.2 创建超级管理员 2.3 修改后台语言 2.4 创建表 2.5 添加到后台 2.6 同步到数据库 三、编写页面逻辑 3.1 添加页面模板文件夹 …

Django 搭建博客网站-task03:Models的编写

Django 搭建博客网站 目录 Django 搭建博客网站 前言 一、Models 的编写 二、Blog_config 三、comment 总结 前言 在vscode上连接虚拟机,然后输入命令 blog APP python manage.py startapp blog # 这个之前已经创建过了,因此不需要重复创建 blog_conf…

微软网站打开慢怎么办_为什么你的Python包老是装不上?收下这个网站就对了

Python以第三方包丰富而著称,你想要的功能都能通过pip命令安装,避免什么都要自己重新造轮子尬尴。但是pip安装有两个常见问题,第一是下载慢,第二是无法安装。慢的原因是资源服务器放在大洋彼岸的美帝,无法安装多半因为…

windows当服务器不稳定,Windows网站架构服务器的优劣

使用Windows平台来构建网站服务器,很大部分由网站管理员的技术背景决定的,早期的技术人员可能更熟悉Windows,或者负责人认为Windows的易用性、“短平快”的开发模式、人才成本等方面都比较符合团队需求,自然就选择了Windows.后期业…