高并发、高性能、高可用
目录
一、高并发1
1.1、高并发
1.2、高性能
1.3、高可用
二、高并发2
2.1、概念:
2.2、解决思路:
三、高并发3
3.1、动静分离:
3.2、削峰限流:
3.3、极致响应
3.4、数据一致性
3.5、风险管控:
四、高并发下如何保证接口幂等性和防重复请求?
4.1 概念
4.1 解决方案
(1)前端控制方案
(2)借助Redis的setnx命令
(3)后端发放令牌的方式
(4)数据库的唯一索引机制(去重表机制)
(5)Redis计数方式
(6)状态机方式
五、redis
5.1 QPS :
5.2 如何保证redis和mysql数据一致性?
5.3 分布式锁
六、附录
6.1 canal原理和使用
6.2 ETC
一、高并发1
JAVASE 设计模式 --> Spring框架,SpringBoot脚手架,mybatis,代码生成器,中间件--》代码重构、性能调优,架构设计,技术选型
零拷贝,减少阻塞
- 通信: TCP, https,http, socket, FTP ,UDP,gRpc,smtp,websocket, SSE(CHATGPT)
- 为什么系统调用这么消耗资源?
- 一个tomcat/nginx 可以接受的连接数是多少?servlet
- 串行化,无锁化编程 ( mq kafka 分区 (减少线程切换))/ 分治、隔离/ 锁调优及颗粒度
- 什么是线程/锁/连接/通信/会话/事务/缓存/存储/同步/异步
- 线程池、对象池、内存池、连接池
- completableFuture (get时,线程进入睡眠,不消耗CPU资源)
- JUC CAS synchronized threadlocal(绑定线程)
- 业务隔离,缓存过滤(local缓存,本地缓存放入redis),异步延后
- 缓存与数据库一致性怎么保证?(内存和磁盘≈ 缓存和数据库)
- 双写一致性 读写都在redis-> 写入MQ-> 慢慢消费进mysql
- IO,NIO,BIO
- JVM调优、mysql调优(分区),中间件,JUC,netty,计算机组成原理,系统IO,网络到分布式
- 计算机操作系统的瓶颈是什么? IO (网络和磁盘都属于IO设备)
- 高并发场景下微服务解决方案:
- 读多写少
- CAP or BASE 分布式
- 基本可用,软状态,最终一致性
- CAP : C 一致性, A 可用性, P分区容错性 redis-->AP
- BASE:B A基本可用,S 软状态,E 最终一致性,BASE是对CAP中的一致性和可用性权衡的结果。 Zookeeper 倾向于 CP
- 高性能 ↑ 高并发,高可用 ↓
- 负载均衡, 让不同的客户端去访问不同的tomcat,分而治之
- 四层负载均衡技术+keepalived lvs(软件)、F5(硬件负载均衡服务器) --> 不具备业务识别能力(每个镜像是一样的,业务不能拆开 ),不建立三次握手,只是数据包转发/ 所以后端服务是镜像的(完全一样的)/ 服务要设计成无状态的(例如: 将缓存,session一致性单独出去),以方便扩缩容,弹性的,按需的,可度量的/具备:健康检查,负载均衡,请求亲密度优化(针对同一个请求,尽量下次请求到同一个tomcat)
(AB test A/B Test(AB测试) 流程、常见面试问题及解答_abtest-CSDN博客)
弊端:
-
- 七层负载均衡 Nginx(基于反向代理)
需要建立三次握手得到连接,读取用户请求,基于uri进行匹配进行反向代理。/后端可以做服务拆分,基于反向代理之上可以做负载均衡。 具备: 健康检查,负载均衡,请求亲密度优化,以及服务治理,动静分离(CDN,静态文件),缓存机制等,
-
- 请求-