[高并发] - 1.高并发综述

1. 必备条件

高并发,高性能分布式ID

高并发过滤组件 Bloom FIlter

2. 数据库

(1)不要让mysql干不擅长的工作,例如全文搜索,而是采用对应的nosql来处理;对于擅长的存取数据则能很好胜任;

(2)master/slave 主从架构(1主三从)来分散读压力;

(3)双中心提高可用性(专线可以让两个机房的数据同步延迟在1毫秒内),并且通过路由进一步分散读压力;

(4)分库分表解决数据量压力:十几亿的数据分成1000多张表(每张表的数据在几十万的级别)。

3. 数据平滑迁移

全量同步、增量同步、实时流量灰度切换。

(1)首先,在一个夜黑风高的深夜,流量最小的时候,完成SQL Server到MySQL数据库的全量数据同步。

(2)然受,为了保证数据的无缝切换,采用实时双写的方案。如果写失败,重试三次,如果依然失败,则记日志,然后人工排查原因,解决后,继续双写

(3)通过A/B平台逐步灰度流量,刚开始100%的流量读取SQL Server数据库,然后逐步切流量读取MySQL数据库,先1%,如果没有问题,再逐步放流量,最终100%的流量都走MySQL数据库。

1)在一次查询请求里,通过异步线程,比较SQL Server和MySQL的查询结果是否一致,如果不一致,记日志,再人工检查不一致的原因,直到彻底解决不一致的问题后,再逐步灰度流量。

2)日志监控,看双写是否有问题,看数据比对是否一致等等。

4. ES的双机房方案

5. Redis双中心多集群

更新缓存数据时,双写,只有两个机房的Redis集群都写成功了,才返回成功。查询缓存数据时,机房内就近查询,降低延时。

6. 高并发架构图

6.1 注册中心高可用

单个Nacos实例故障:利用Load Balancer集群提供的健康检查能力自动从VIP中摘除;
某个VIP集群故障:利用客户端重试机制解决;
单个AZ故障:利用客户端重试机制解决;
MySQL集群故障:MySQL与注册发现过程无关,不受影响;
整个Nacos服务故障:客户端兜底机制,如服务实例缓存等。

6.2 注册中心监控

服务监控是所有业务团队都极为关注的主题。完整的微服务监控体系一般需要有以下3个方面组成:

(1)指标监控:涵盖QPS/响应延时/错误率等黄金指标、业务的自定义指标、JAVA应用的JVM指标,以及基础环境相关指标,如CPU、内存利用率等;
(2)日志监控:例如错误日志数量;可以利用AI技术对日志模式进行统计分析等;
(3)链路监控:由于微服务调用关系的复杂性,调用链追踪显得尤为重要,它可以帮助业务人员更好地分析应用间的依赖关系,并能够监控各个调用关系上的关键指标。

6.3 IM 架构图

6.4 号段模式提高分布式 ID 的并发性

以人为单位,设置一段可用的id range

6.5 Disruptor实现高并发生产消费

美团一面:如何实现一个100W ops 生产者消费者程序?

7. 高并发恶意狂刷

7.1 防护措施

  • 交互式验证
  • 安全参数校验
  • 使用 HTTPS
  • 用户访问认证
  • 资源访问授权
  • 访问限流
  • IP封禁
  • 日志监控和异步分析
  • 升级硬件设备
  • 基于时序的统计预警:Prometheus +Grafana +Alertmanager 

8. 秒杀高并发下单

在秒杀抢购等极端情况下,如何处理每秒上万次的下单请求。1 秒钟之内,有 1 万个数据库连接同时达到,系统的数据库濒临崩溃。

9. 高并发分布式ID

滴滴太狠:分布式ID,如何达到1000Wqps?

10. 高并发处理请求

(1)全链路拆分

  • 接受下游请求环节
  • 上游请求分裂后入列环节
  • 执行上游调用环节
  • 上游结果聚合和响应环节

(2)多层次异步化

  • 应用层:编程模型的异步化
  • 框架层:IO线程的异步化
  • OS层: IO模型的异步化

(3)多维度优化

1)业务线程,IO线程优化

合理的设置线程池的大小、拒绝策略。 并且结合不同的框架和组件,结合自己的业务场景实现异步。

2)网络传输

  • 连接复用:短链接变成长连接
  • 多路复用

11. 高并发概念

(1)QPS: Queries Per Second 是每秒查询率 ,

(2)TPS: Transactions Per Second 也就是事务数/秒。

  • 用户通过client工具完成一个页面的一次访问,形成一个Tps;
  • 如果一次页面请求,产生多次对服务器的api请求,这个Tps 包含多个 qps。
  • 如果一次页面请求,产生1次对服务器的api请求,这个Tps 包含1个 qps。 也就是 tps=qps

(3)RT:响应时间,执行一个请求从开始到最后收到响应数据所花费的总体时间。

单节点QPS公式:QPS=1000ms/RT

对同一个分布式系统而言,支持的节点数越多,QPS越高。可见QPS随着节点横向扩展、节点的增加而线性增长。

(4)并发数:指系统同时能处理的请求数量,同样反应了系统的负载能力。

并发数 = QPS*平均响应时间

(5)吞吐量:

系统的吞吐量(承压能力)与request对CPU的消耗、外部接口、IO等等紧密关联。单个request 对CPU消耗越高,IO速度越慢,那么,系统吞吐能力越低。

(6)PV(Page View):页面访问量,即页面浏览量或点击量,用户每次刷新即被计算一次。

(7)UV(Unique Visitor):独立访客,统计1天内访问某站点的用户数。

可以统计服务一天的访问日志并根据用户的唯一标识去重得到。

(8)DAU(Daily Active User):日活跃用户数量。

DAU通常统计一日(统计日)之内,登录或使用了某个产品的用户数(去除重复登录的用户),与UV概念相似

(9)MAU(Month Active User):月活跃用户数量,指网站、app等去重后的月活跃用户数量

12. 高并发架构图

高并发访问时,如何抵抗?

1. 接入层

(1)扩容:ngnix单节点qps为2.5W,SpringCloud gateway单节点5K qps

(2)限流,nginx 限流,SpringCloud gateway 限流

2. 缓存

redis集群架构横向扩展,单节点一般在3w qps左右.还可以使用本地缓存

HotKey探测方案:

HotKey探测方案1: 流计算集群

HotKey探测方案2: 流计算集群

HotKey探测方案3: 结合开源hotkey,做热点探测

13. 红包业务

(1)微信红包在信息流上可以分为订单纬度与用户纬度。其中订单是贯穿红包发、抢、拆、详情列表等业务的关键信息,属于交易类信息;而用户纬度指的是红包用户的收红包列表、发红包列表,属于展示类信息。

(2)南北分布
1、订单层南北独立体系,数据不同步

用户就近接入,请求发红包时分配订单南北,并在单号打上南北标识。抢红包、拆红包、查红包详情列表时,接入层根据红包单号上的南北标识将流量分别引到南北系统闭环。根据发红包用户和抢红包用户的所属地不同,有以下四种情况:

1)深圳用户发红包,深圳用户抢

订单落在深圳,深圳用户抢红包时不需要跨城,在深圳完成闭环。

2)深圳用户发红包,上海用户抢

订单落在深圳,上海用户抢红包,在上海接入后通过专线跨城到深圳,最后在深圳闭环完成抢红包。

3)上海用户发红包,上海用户抢

订单落在上海,上海用户抢红包时不需要跨城,在上海完成闭环。

4)上海用户发红包,深圳用户抢

订单落在上海,深圳用户抢红包,从深圳接入后通过专线跨城到上海,最后在上海闭环完成抢红包。

系统这样设计,好处是南北系统分摊流量,降低系统风险。

14. 高并发下的限流和降级

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

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

相关文章

Linux进程间通信(三)-----System V消息队列

消息队列的概念及原理 消息队列实际上就是在系统当中创建了一个队列,队列当中的每个成员都是一个数据块,这些数据块都由类型和信息两部分构成,两个互相通信的进程通过某种方式看到同一个消息队列,这两个进程向对方发数据时&#x…

MySQL DQL 基本查询

一.概念 数据查询不应只是简单返回数据库中存储的数据,还应该根据需要对数据进行筛选以及确定数据以什么样的格式显示。 二.语法格式 select 列名 from 表 where 条件 1.查询所有的商品 select * from product; 2.查询商品名和商品价格 select pname,price from…

最新PyCharm安装详细教程及pycharm配置

目录 一、PyCharm简介及其下载网站 二、单击网站的Downloads,进入二级页面,选择对应的操作系统下载PyCharm 三、PyCharm的安装程序的安装及其配置(configuration) 1、运行PyCharm Setup 2、安装位置设置 3、安装选项设置 4、开始菜单中PyCharm快捷方式的…

【C语言】实现队列

目录 (一)队列 (二)头文件 (三) 功能实现 (1)初始化 (2) 销毁队列 (3) 入队 (4)出队 (5&a…

centos7系列:出现ZooKeeper JMX enabled by default这种错误的解决方法

出现ZooKeeper JMX enabled by default这种错误的解决方法 前言一 问题描述二 解决方法2.1 可能的原因分析2.2 小编的问题解决方法First:检查/etc/profile里面zookeeper的环境变量配置Second:检查 zookeeper/conf/zoo.cfg里面的dataDir的路径 总结 前言 …

【Linux内核】从0开始入门Linux Kernel源码

🌈 博客个人主页:Chris在Coding 🎥 本文所属专栏:[Linux内核] ❤️ 前置学习专栏:[Linux学习]从0到1 ⏰ 我们仍在旅途 ​ 目录 …

Midjourney绘图欣赏系列(五)

Midjourney介绍 Midjourney 是生成式人工智能的一个很好的例子,它根据文本提示创建图像。它与 Dall-E 和 Stable Diffusion 一起成为最流行的 AI 艺术创作工具之一。与竞争对手不同,Midjourney 是自筹资金且闭源的,因此确切了解其幕后内容尚不…

MATLAB知识点:nchoosek函数(★★★☆☆)用来计算组合数,也能返回从向量v中抽取k个元素的所有组合

讲解视频:可以在bilibili搜索《MATLAB教程新手入门篇——数学建模清风主讲》。​ MATLAB教程新手入门篇(数学建模清风主讲,适合零基础同学观看)_哔哩哔哩_bilibili 节选自第3章:课后习题讲解中拓展的函数 在讲解第三…

模型 4E(交换、体验、随处、传教)理论

系列文章 分享 模型,了解更多👉 模型_总纲目录。重在提升认知。聚焦体验营销。 1 模型 4E(交换、体验、随处、传教)理论的应用 1.1 4E 理论在软件产品营销中的应用 某软件公司利用 4E 理论提升软件产品的市场占有率。具体如下: Exchange&a…

人工智能学习与实训笔记(四):神经网络之NLP基础—词向量

人工智能专栏文章汇总:人工智能学习专栏文章汇总-CSDN博客 本篇目录 四、自然语言处理 4.1 词向量 (Word Embedding) 4.1.1 词向量的生成过程 4.1.2 word2vec介绍 4.1.3 word2vec:skip-gram算法的实现 4.2 句向量 - 情感分析 4.2.1 LSTM (Long S…

C语言之日历问题

一、代码展示 #include<stdio.h> int leapyear(int year)//判断是不是闰年函数 {if (year % 4 0 && year % 100 ! 0 || year % 400 0)return 1;elsereturn 0; } int days(int year, int month, int* day)//判断一个月有几天 {if (month ! 2)return day[month…

7.JS里表达式,if条件判断,三元运算符,switch语句,断点调试

表达式和语句的区别 表达式就是可以被求值的代码比如什么a 1 语句就是一段可以执行的代码比如什么if else 直接给B站的黑马程序员的老师引流一波总结的真好 分支语句 就是基本上所有的语言都会有的if else 语句就是满足不同的条件执行不同的代码&#xff0c;让计算机有条件…

【Java程序员面试专栏 Java领域】Java虚拟机 核心面试指引

关于Java 虚拟机部分的核心知识进行一网打尽,主要包括Java虚拟机的内存分区,执行流程等,通过一篇文章串联面试重点,并且帮助加强日常基础知识的理解,全局思维导图如下所示 JVM 程序执行流程 包括Java程序的完整执行流程,以及Javac编译,JIT即时编译 Java程序的完整执…

会声会影2024新功能及剪辑视频步骤教程

会声会影2024的新功能主要包括&#xff1a; 全新的标题动态与特效&#xff1a;用户可以为文字标题指定进入、中场和退出的不同动态效果&#xff0c;比如闪现进入、中场弹跳和淡出退出等&#xff0c;让文字标题更具动感。此外&#xff0c;还新增了多个标题特效&#xff0c;包括…

037-安全开发-JavaEE应用JNDI注入RMI服务LDAP服务JDK绕过调用链类

037-安全开发-JavaEE应用&JNDI注入&RMI服务&LDAP服务&JDK绕过&调用链类 #知识点&#xff1a; 1、JavaEE-JNDI注入-RMI&LDAP 2、JavaEE-漏洞结合-FastJson链 3、JavaEE-漏洞条件-JDK版本绕过 演示案例&#xff1a; ➢JNDI注入-RMI&LDAP服务 ➢JNDI注…

阿里云香港服务器cn2速度测试和租用价格表

阿里云香港服务器中国香港数据中心网络线路类型BGP多线精品&#xff0c;中国电信CN2高速网络高质量、大规格BGP带宽&#xff0c;运营商精品公网直连中国内地&#xff0c;时延更低&#xff0c;优化海外回中国内地流量的公网线路&#xff0c;可以提高国际业务访问质量。阿里云服务…

YOLO v5项目实战 P5 解决运行detect文件时设置了--view-img但是显示不出来的问题

up主讲的实时显示目标检测后的图片的两种方法&#xff1a; &#xff08;1&#xff09;在下面的Terminal中输入下列命令&#xff1a; python detect.py --view-img &#xff08;2&#xff09;点击进入右上方的detect的Edit Configurations 然后在这个参数这里输入 --view img…

人工智能学习与实训笔记(八):百度飞桨套件使用方法介绍

人工智能专栏文章汇总&#xff1a;人工智能学习专栏文章汇总-CSDN博客 本篇目录 八、百度飞桨套件使用 8.1 飞桨预训练模型套件PaddleHub 8.1.1 一些本机CPU可运行的飞桨预训练简单模型&#xff08;亲测可用&#xff09; 8.1.1.1 人脸检测模型 8.1.1.2 中文分词模型 8.1…

自然语言编程系列(四):GPT-4对编程开发的支持

在编程开发领域&#xff0c;GPT-4凭借其强大的自然语言理解和代码生成能力&#xff0c;能够深刻理解开发者的意图&#xff0c;并基于这些需求提供精准的编程指导和解决方案。对于开发者来说&#xff0c;GPT-4能够在代码片段生成、算法思路设计、模块构建和原型实现等方面给予开…

《数字电子电路》 课程设计:十字路口红绿灯自动控制系统(上)(multisim仿真及PCB实现)

&#xff08;一&#xff09;前言 本系列文章就笔者在大二下学期进行《数字电子线路》课程设计的题目&#xff1a;十字路口红绿灯自动控制系统 进行详细的讲解&#xff0c;希望对读者有所帮助。 &#xff08;二&#xff09;目录 一、主要指标及要求 二、电路工作原理 1、工作原…