摘要:
怎么理解缓存雪崩? 举个简单的例子:如果所有首页的Key失效时间都是12个小时,中午13点刷新的,我零点有个秒杀活动大量用户涌入,假设当时每秒6000个请求,本来缓存在可以抗住每秒5000个请求,但是缓存当时所有的Key都失效了。此时1秒6000个请求全部落数据库,数据库必然扛不住,它会报警一下,真 阅读全文
摘要:
时间复杂度是衡量算法好坏的一个重要指标。 衡量代码好坏,包括两个非常重要的指标: 1、运行时间; 2、占用空间; 由于运行环境和输入规模的影响,代码的绝对执行时间是无法评估的,但我们却可以预估代码基本操作执行次数。 基本操作次数 场景一:一条长10寸的面包,每3天吃掉1寸,那么吃掉整个面包需要几天? 阅读全文
摘要:
事务 严格意义上的事务实现应该是具备原子性、一致性、隔离性和持久性,简称ACID。 1、原子性:可以理解为一个事务内的所有操作要么都执行,要么都不执行。 2、一致性:可以理解为数据是满足完整性约束的,也就是不会存在中间状态的数据,比如你账上有400,我账上有100,你给我打200块,此时你的账上应该 阅读全文
摘要:
主从复制以及主从复制的作用: 在实际的生产环境中,对数据库的读和写都在同一个数据库服务器中,是不能满足实际需要的,通过主从复制的方式来同步数据,再通过读写分离来提升数据库的并发负载能力。 mysql支持的复制类型: 1、基于语句的复制:在服务器上执行sql语句,在从服务器上执行同样的语句,mysql 阅读全文
摘要:
消息队列,一般我们会简称它为MQ(Message Queue),嗯,就是很直白的简写。 队列是一种先进先出的数据结构。 消息队列可以简单理解为:把要传输的数据放在队列中。 把数据放到消息队列叫做生产者,从消息队列里边取数据叫做消费者。 为什么要用消息队列? 解耦、异步、削峰/限流 阅读全文
摘要:
在互联网早期时候,单体架构就足以支撑起日常的业务需求,大家的所有业务服务都在一个项目里,部署在一台物理机器上。所有的业务包括你的交易系统、会员信息、库存、商品等都夹杂在一起,当流量一旦起来之后,单体架构的问题就暴漏出来了,机器挂了所有的业务全部无法使用了。 于是,集群架构的架构开始,单机无法抗住的压 阅读全文
摘要:
面对业务急剧增长你怎么处理? 业务量增长10倍、100倍怎么处理? 你们那系统怎么支撑高并发的? 怎么设计一个高并发系统? 高并发系统都有什么特点? 诸如此类,问法很多。 我想大多数人比不知道怎么回答,这种类型的问题,看着很难无处入手,但是我们可以有一个常规的思路去回答,就是围绕支撑高并发的业务场景 阅读全文