GaryLee's Blog
07
24
关于对缓存雪崩和缓存穿透的理解,以及如何避免? 关于对缓存雪崩和缓存穿透的理解,以及如何避免?
一、缓存雪崩定义:缓存雪崩是存储在缓存里的大量数据,在同一时刻全部过期,导致所有流量到达了数据库,导致数据库压力增加造成数据库服务端崩溃的现象具体原因&解决方案: 缓存中间件宕机:如redis挂了,可对缓存中间件做高可用集群来避免
2023-07-24
23
Redis和MySQL如何保证数据一致性? Redis和MySQL如何保证数据一致性?
一、背景一般情况下,Redis是用来实现应用和数据库之间读操作的缓存层,主要目的是减少数据库IO,还可以用来提升数据的IO性能 二、设计思想当应用需要读取某个数据的时候,会有几个步骤: 尝试去Redis查询,如果命中就直接返回 如果没有命
2023-07-23
21
如何解决幂等性问题? 如何解决幂等性问题?
一、什么是幂等?幂等指一个方法被多次重复执行的时候产生的影响和第一次执行的影响相同 二、哪些行为会导致幂等性问题? 用户行为:用户的重复提交或用户的恶意攻击,导致这个请求被多次重复进行 网络异常:在分布式架构中,为了避免网络通信导致的数据丢
2023-07-21
19
如何设计分布式ID? 如何设计分布式ID?
一、为什么要使用分布式ID? 比如MySQL的主键ID一般用自增的方式,但如果用分表的话,多个表中会生成重复的ID 二、设计方案 使用MySQL的全局表:每获取一次都需要更新数据库,性能差 使用redis的自增id UUID 雪花算法
2023-07-19
19
如何设计一个高并发系统? 如何设计一个高并发系统?
一、背景二、如何设计一个高并发系统?通常设计一个高并发系统要从多个方面优化,大概方面如下: 分布式架构:将系统拆分为多个模块,采用分布式架构来降低单点故障的风险,并提高系统的可伸缩性和性能 集群部署:即多机器部署,结合负载均衡技术将请求均
2023-07-19
19
如何限流? 如何限流?
一、限流目的限流算法是一种系统保护策略,主要是避免流量高峰导致系统被压垮,造成系统不可用的问题 二、常见的限流算法 计数器限流:一般用在单一维护的访问频率限制上(如短信验证码每60s只能发送一次) 滑动窗口限流:本质也是计数器,区别是通过时
2023-07-19
17
如何设计一个秒杀系统? 如何设计一个秒杀系统?
一、分析秒杀系统1、秒杀系统的特点 高并发:瞬间流量大 超卖问题:秒杀商品库存少 接口防刷:秒杀前刷新频繁 2、秒杀系统需要考虑的点秒杀前: 页面资源访问多:资源静态化,存CDN就近访问,开启资源压缩,减少传输数据量,提高速度 秒杀按钮
2023-07-17
17
12
Kafka面试题 Kafka面试题
一、Kafka面试题1、Kafka的副本机制有什么用?Kafka的副本机制是保证消息可靠性的重要手段之一,它可以: 提高可用性:Kafka每个topic有多个分区,每个分区有多个副本,但其中只能有一个是leader副本,其余的都是foll
2023-07-12
12
GC学习笔记 GC学习笔记
一、介绍背景:我们在Java开发中,会不断创建很多的对象,这些对象会占用系统内存,如果得不到有效的管理,内存的占用会越来越多,甚至会出现内存溢出的情况,所以,我们需要进行对内存合理地释放, 介绍:GC,也就是Garbage Collecti
2023-07-12
06
MySQL锁 MySQL锁
一、介绍MySQL的锁主要为: 全局锁 表锁 行锁 二、全局锁全局锁分为: 读锁(共享锁):允许别人读取数据,不允许更新数据 写锁(排它锁):不允许别人读取和更新数据 使用场景:进行一些需要确保整个数据库一致性的操作,例如全库备份、
2023-07-06
03
Http学习笔记 Http学习笔记
一、面试题1、HTTP/1.0和HTTP/1.1有什么区别?参考:https://www.cnblogs.com/loren-Yang/p/7490011.htmlhttps://pythonjishu.com/vuboqpkalikqgm
2023-07-03
11 / 16