每分钟访问10万+,11种策略教你保持亿级流量网站稳定性!

news/2024/5/11 1:16:12/文章来源:https://blog.csdn.net/caiguoqing0908/article/details/84924088

稳定性在大型网站运行中至关重要,面对每分钟 10 万次的网络访问,稍有不慎就会引起重大故障。今天这篇文章一起讨论下亿级流量网站在稳定性方面的一些做法,希望对您有帮助。本文已发布在公众号和网站。

 

基础策略

 

配置化

配置化就是把很多业务流程相关的数据统一放在一个配置平台上,从代码中抽离出来,使得代码仅处理通用的业务逻辑。配置化之后,代码拥有处理所有场景的能力,通过配置数据来决定线上运行时具体操作什么样的数据。

 

 

配置化的设计使得我们能够对线上进行快速更改,做到实时的增加、变更和删除,对于快速处理问题有很好的效果。

 

业务开关

业务开关就是针对具体一个流程的开关,通过开关的打开和关闭可以实时控制处理逻辑。开关可以有多种类型,常用的有以下几种。

Boolean 类型:是否使能某个流程,如开启和关闭某个校验;

Number 类型:业务对应的数字配置;

String 类型:业务对应的文本配置;

Collection 类型:业务对应的集合开关,如指定特定类型的业务启动或关闭流程;

Map 类型:业务对应的映射开关,如指定特定类型的业务进行特定类型的处理。

 

 

部署策略

面对每分钟达 10 万次的访问流量,系统的部署是个很大的挑战。我们采用按机房、按机器分组进行分批次的部署策略,也就是在部署过程中,新版本与老版本共存,同时提供服务,整个的部署过程是一个逐步替换的过程。

 

 

灰度部署逐步提高新版本在服务中的比例,分流线上用户进行灰度测试。如果发现机器日志有异常或有用户反馈服务问题,可以第一时间进行新版本回滚,避免产生更大范围的影响。

 

错误处理

在软件架构中要对错误处理有一套统一的流程和规范,对错误码进行分类处理,做到根据统计到的错误码能够快速判断错误类型。要做到这一点,错误码需要约定好统一的格式,比如 CHK 开头表示校验失败、THD 开头表示第三方服务错误、SYS 表示当前系统错误,REQUIRED 结尾表示必填项未填、INVALID 结尾表示数据错误、EXCEPTION 结尾则表示出现异常。

 

日志收集

程序运行一定会产生日志,日志是排查线上问题的第一手原始资料。准确完整地记录下有意义的日志,才能进行有效的分析。比如基于日志,我们可以统计服务调用量并分析成功率,可以明确地看到错误信息,包括哪些用户出错、出错的原因是什么,并可以建立线上问题报警机制。

 

日志需要按照统一的格式打印,存储在一个统一的日志分析服务中,做到实时记录、实时搜索。

 

线上监控策略

 

链路跟踪

分布式系统的一个难题,就是如何跟踪处理链路。通常情况下,我们会在链路的起点为每一个请求生成一个唯一识别码,比如 UUID,并在以后的每一个处理节点都记录下识别码并传播给下一个处理节点。

 

基于这样的唯一识别码,我们可以从海量日志中完整地还原出一个请求在链路上的处理过程,以及输入输出数据,进行全链路分析。

 

异常监控

对 Java 抛出的异常进行处理,打印到日志中,可以建立起异常监控。在异常监控中,我们重点关注异常发生的次数、栈信息、变化趋势。

 

通过异常监控,可以快速定位线上问题,直接根据栈信息找到异常发生的地点。如果是第三方服务的异常,比如分布式调用超时,也能够快速分析并定位。

 

机器监控

机器监控则是重点关注机器的 CPU、内存、网络使用情况,JVM 的线程数量、内存使用、Full GC 次数等。流量洪峰到来时,服务器承压,很可能出现 CPU、内存不足等情况,也可能导致 JVM 内存不足进行 Full GC,进而引起服务崩溃。服务器运行状况如此重要,不能不重视。

 

面对流量洪峰的策略

 

服务降级

服务降级是指在特定情况下,比如双十一、双十二期间,当流量超过系统服务能力时,跳过特定的处理流程。比如在一个卖家下单后,我们可能需要进行风险评估、数据校验等一系列流程,当发生服务降级时,就跳过了数据校验逻辑,来保证服务的稳定性。

 

 

服务降级是面对流量洪峰保证用户体验和预防系统崩溃的有效手段。比如图片内容的校验通常都是比较耗时的操作,面对流量洪峰取消这样的校验可以避免用户的长时间等待、降低对下游链路的冲击,确保服务稳定。

 

服务限流

服务限流是指,根据服务的处理能力提前预估出一个阈值,当流量大于该阈值时直接放弃处理直接返回错误。服务限流是应对流量峰值时,系统进行自我保护的重要措施。比如双十一零点下单峰值、余额宝九点抢购峰值、活动结束商品编辑峰值,都需要进行相应的限流来保护系统。

 

 

在分布式部署中,基于 dubbo、Spring cloud 或 HSF 的数据统计功能,很容易推算出系统平时的流量压力。借助于全链路压测,可以很容易看到系统在流量峰值下的具体表现。因此,服务限流的实施并不困难。

 

故障容灾

单机系统的容灾能力几乎为零,一旦服务崩溃就马上变成不可用。分布式系统通过服务多活,可以不间断提供服务;借助于 nginx、Apache 进行负载均衡可以进一步提高可用性。

 

实际上,即便进行了负载均衡和服务分布式部署,系统仍然面临容灾问题。现在的大型服务,比如淘宝、天猫、微信、京东都进行了异地多活的部署。异地多活部署的主要目的,在于通过多机房提供服务,来降低单机房故障带来的影响,提高容灾能力。

 

 

总结

这篇文章大概整理了一个亿级流量网站在稳定性方面需要注意和做好的点,关于稳定性还有很多问题值得探讨和深思。您有什么观点和看法呢?欢迎留言交流。

 

本文为原创文章,首发于 程序之心 公众号和网站,转载请注明作者及原文链接。

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

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

相关文章

微网站、手机站和APP的区别

因为之前写了一篇微网站的文章,有人问我微网站和手机站之间的区别,那我就在这里总体说一下吧。 首先,手机站和微网站都是移动互联网发展下的产物。这样一天24小时,商家就可以多点机会出现在人们的生活中。由于这样的特性&#xf…

微网站、手机站和APP的区别

因为之前写了一篇微网站的文章,有人问我微网站和手机站之间的区别,那我就在这里总体说一下吧。 首先,手机站和微网站都是移动互联网发展下的产物。这样一天24小时,商家就可以多点机会出现在人们的生活中。由于这样的特性&#xf…

ThinkPHP中使用网页模板快速搭建网站

ThinkPHP中使用网页模板快速搭建网站 公司要建一个网站,我刚接触PHP,还不是很熟悉,了解了一下ThinkPHP框架之后,简单的搭建了一个网站,网站内容目前还是写死的,还没有做具体的功能,想先分享一下…

Linux网站服务-搭建一个论坛

概念 前言 UI的转变:B/S架构 名词 HTMLHyperText Markup Language 超级 文本 标记 语言网页使用HTML,PHP,JAVA语言格式书写的文件。主页网页中呈现用户的第一个页面。网站多个网页组合而成的一台网站服务器URLhttp://www.baidu.com/1.htmlUniform Resource Locator…

Linux网站服务-用云服务器搭建论坛网站

前言 互联网的访问依靠IP地址。但IP地址不好记。 所以使用域名服务(DNS,好记名),来替代访问的地址。 基本概念 hosts文件(老的) 一、hosts文件 作用: 实现名字解析,主要为本地主…

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

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

网站维护业务

您当前的位置:>>>首页-->网站建设-->网站维护业务 网站维护业务 发布日期:2007年10月1日 来源:中亚网络服务部 网站维护   互联网技术的瞬息万变,决定了网站必须时时更新。一个好的网站,是…

网站部署之--- 起始页错误

An error occurred while starting the application. 1在IIS中找到应用程序池 2点进去找到对应的网站 3有点有个高级设置 4找到加载用户配置文件 设置成TRUE 转载于:https://www.cnblogs.com/mamiyiya777/p/9364752.html

3GPP网站查找协议的使用方法

1.首先打开3GPP网页,选择Specifications>>Specification Numbering 2.可以看到种通信技术的发行版本的序号,4G是36,5G在38里面 3.点开你要查找的协议版本号,就能看到协议下的各个分支的具体内容,有关物理信道的在…

Day04 使用PolarDB和ECS搭建门户网站

一.准备工作 本场景将提供一台基础环境为CentOS的ECS(云服务器)实例和已经创建好的PolarDB数据库实例。我们将会在这台服务器上安装WordPress,帮助您快速搭建自己的云上博客。 参考:https://developer.aliyun.com/article/773856…

如何才能做到网站高并发访问

文章架构简图: 高并发访问的核心原则其实就一句话“把所有的用户访问请求都尽量往前推”。 如果把来访用户比作来犯的"敌人",我们一定要把他们挡在800里地以外,即不能让他们的请求一下打到我们的指挥部(指挥部就是数据…

SVN利用钩子中的post-commit同步版本库到网站目录

这些钩子会在不同的点触发事务 # start-commit 提交前触发事务 # pre-commit 提交完成前触发事务 # post-commit 提交完成时触发事务 # pre-revprop-change 版本属性修改前触发事务 # post-revprop-change 版本属性修改后触发事务 svn同步版本库到网站目录就是利用p…

制作一个餐饮网站的头部

样式如下&#xff1a; 代码如下&#xff1a; <!DOCTYPE html> <html> <head><title>餐饮网站header部分</title><meta charset"UTF-8"><meta http-equiv"x-ua-compatible" content"IEedge"><me…

JSON.parseObject(String str)和JSON.toJSONString()的区别?

在刚刚毕业步入之后的工作过程中&#xff0c;看到公司的代码频繁的使用JSON&#xff0c;在学校的时候基本只有了解&#xff0c;也没有很多的去使用过&#xff0c;在看了一段时间代码后&#xff0c;总结了JSON中最常使用的几个方法&#xff01; 一、JSON格式 什么是JSON? JSON …

介绍一个GWT的网站 和 decode javascript.encode using java +FCKEditor 在 jsp中的使用说明

http://www.gwtpowered.org/ 有超多的GWT组建&#xff0c;比如&#xff1a;超好的日期输入[插图][演示]可排序的table&#xff1a;[插图][演示]还有很多其他的&#xff0c;大家自己去寻找需要的组件。自己再修改&#xff0c;扩展&#xff0c;汉化变成自己的超级GWT组件吧&#…

利用压缩网页来提升网站浏览速度 [摘]

网站的访问速度是由多个因素所共同决定的&#xff0c;这些因素例如应用程序的响应速度、网络带宽、服务器性能、与客户端之间的网络传输速度等等。其中最重要的一个因素是应用程序本身的响应速度&#xff0c;因此当你为网站性能所苦恼时&#xff0c;你第一个需要着手进行处理的…

基于ssm的校园门户网站源码+开题报告+需求分析+mysql数据库+前端html文件

下载地址&#xff1a;https://download.csdn.net/download/biyesheji250/28740242 项目介绍: 基于ssm的校园门户网站源码开题报告需求分析mysql数据库前端html文件 系统说明: 南京晓庄学院本科毕业论文&#xff08;设计&#xff09;开题报告 所属系(院)&#xff1a;信息工程…

一、一步步构建高并发分布式网站架构(1.1)

1.1 分什么布 我尽量不把这类文章写成软件工程专业的死板教学用书。但是每章第一节的确都是构建一个健全系统不可或缺的概念知识。 其实在前言中&#xff0c;我就已经叨叙了为什么要使用分布式架构。简而言之&#xff0c;就是要采用“分而治之”的思想&#xff0c;将网站这个…

一、一步步构建高并发分布式网站架构(1.2)

1.2 瓶颈分析 不同网站有不同的属于该类型网站的特定性能瓶颈。比如资讯类网站大部分在进行读数据库&#xff0c;文件存储类网站大部分在进行文件I/O操作&#xff0c;而如果网站业务是计算密集型&#xff0c;性能瓶颈一般在CPU。 1.2.1 Linux 下的性能监测 要找到网站的瓶颈…

一、一步步构建高并发分布式网站架构

前言 适合对象 我用LA(N)MP ✔ 我用ThinkPHP5 ✔ 我为小但逐渐发展网站工作 ✔ 我开发/管理的PHP网站遇到了瓶颈 ✔ 我会基本操作 ✔ 本文会带你了解一般的适合PHP网站的分布式系统的构建&#xff0c;对一个PHP程序员来说&#xff0c;应该易于理解、实现&#xff0c;希望能实…