摘要:
计数器算法: 原理:在指定时间周期内累加访问次数,达到设定的阈值时,触发限流策略。下一个时间周期进行访问时,访问次数清零。 实现:此算法无论是在单机还是分布式环境下实现都非常简单,使用redis的原子自增性,再结合key的过期时间,即可轻松实现。 缺点:临界问题,在两个周期的临界点处分别达到接近阈值 阅读全文
摘要:
读写分离分散了数据库读写的压力,但没有分散存储的压力。 数据量达到千万甚至上亿的时候,单台数据库服务器的存储能力会成为系统的瓶颈,主要体现在: 1. 数据量太大,读写的性能会下降,即使有索引,索引也会变的很大,性能同样会下降; 2. 数据文件会变的很大,数据库备份和恢复会耗费很长的时间; 3. 数据 阅读全文
摘要:
基本原理:将数据库的读写操作分散到不同的节点上。 基本实现: 1. 数据库服务器搭建主从集群,一主一从,一主多从都可以; 2. 数据库主机负责读写操作,数据库从机只负责读操作; 3. 数据库主机通过复制将数据同步到从机,每台数据库服务器都存储了所有的业务数据; 4. 业务服务器将数据库写操作发送给数 阅读全文
摘要:
innodb引擎索引数据结构:B+树,原型为N叉树,在innodb中N大约为1200,树高为4时,大约可以存1200的3次方的数据,约为17亿(树根的数据块一般在内存中,10亿数据的表上查一个数值,只需要查三次磁盘,且树的第二层大概率也在内存中,访问磁盘的数量又有减少) 主键索引:整行数据存在叶子节 阅读全文
摘要:
这三个问题的发生,会导致大量的请求直接积压到数据库,如果并发量很大,则可能会导致数据库宕机或故障。 缓存雪崩 描述:大量的请求无法在redis缓存中进行处理而被发送到数据库,导致数据库压力陡增。 产生的原因: 1. redis缓存中大量的数据同时到期,导致大量请求无法在缓存中得到处理。 解决方案: 阅读全文
摘要:
首先关于两者数据的一致性包含有两种情况: (1)缓存中有数据时,那数据库中的数据要和缓存中的数据相同; (2)缓存中没有数据时,数据库中的数据必须是最新的。 如果不符合以上两种情况,就属于缓存和数据库数据不一致的问题。 缓存不同的读写模式,所对应的不一致问题也会有所差异,缓存的读写模式主要有两种,读 阅读全文
摘要:
Topic:发布订阅的对象称为主题(topic),可以为每个应用,每个业务甚至每个类创建专属的主题。 clients:生产者和消费者统称为clients。 Producer:向主题发布消息的客户端应用称为生产者,生产者程序通常不断的向一个或多个主题发送消息。 Consumer:订阅这些主题消息的客户 阅读全文
摘要:
给出一个区间的集合,请合并所有重叠的区间。 示例 1: 示例 2: 阅读全文