随笔- 78
文章- 0
评论- 0
阅读-
20140
02 2023 档案
如何设计高并发项目
摘要:高并发为什么会出现? 因为刚开始系统都是连接数据库的,数据库支撑到每秒并发两三千的时候,基本就快完了,系统扛不住压力就会宕机,所以就要考虑到高并发。 提高系统并发 1、系统拆分 将一个系统拆分成多个子系统 ,然后每个系统连接一个数据库,这样本来就一个库,现在变成多个库,就可以保证数据库抗住高并发 2
阅读全文
进程,线程区别
摘要:进程:指在系统中正在运行的一个应用程序;程序一旦运行就是进程;或者更专业化来说:进程是指程序执行时的一个实例,即它是程序已经执行到课中程度的数据结构的汇集。从内核的观点看,进程的目的就是担当分配系统资源(CPU时间、内存等)的基本单位。 线程:系统分配处理器时间资源的基本单元,或者说进程之内独立执行
阅读全文
缓存雪崩,缓存穿透,缓存击穿
摘要:缓存雪崩 对于系统 A,假设每天高峰期每秒 5000 个请求,本来缓存在高峰期可以扛住每秒 4000 个请求,但是缓存机器意外发生了全盘宕机。缓存挂了,此时 1 秒 5000 个请求全部落数据库,数据库必然扛不住,它会报一下警,然后就挂了。此时,如果没有采用什么特别的方案来处理这个故障,DBA 很着
阅读全文
redis持久化
摘要:Redis 持久化的两种方式 RDB:RDB 持久化机制,是对 Redis 中的数据执行周期性的持久化。 AOF:AOF 机制对每条写入命令作为日志,以 append-only 的模式写入一个日志文件中,在 Redis 重启的时候,可以通过回放 AOF 日志中的写入指令来重新构建整个数据集。 通过
阅读全文
redis主从复制的核心原理
摘要:当启动一个 slave node 的时候,它会发送一个 PSYNC 命令给 master node。 如果这是 slave node 初次连接到 master node,那么会触发一次 full resynchronization 全量复制。此时 master 会启动一个后台线程,开始生成一份 RD
阅读全文
redis主从架构
摘要:单机的 Redis,能够承载的 QPS 大概就在上万到几万不等。对于缓存来说,一般都是用来支撑读高并发的。因此架构做成主从(master-slave)架构,一主多从,主负责写,并且将数据复制到其它的 slave 节点,从节点负责读。所有的读请求全部走从节点。这样也可以很轻松实现水平扩容,支撑读高并发
阅读全文
如何保证redis的高可用,高并发
摘要:高可用 考虑如何用 redis 来加多台机器,保证 redis 是高并发的,还有就是如何让 redis 保证自己不是挂掉以后就直接死掉了,即 redis 高可用 高并发 redis 实现高并发主要依靠主从架构,一主多从,单主用来写入数据,单机几万 QPS,多从用来查询数据,多个从实例可以提供每秒 1
阅读全文
Redis 和 Memcached 区别
摘要:Redis 支持复杂的数据结构 Redis 相比 Memcached 来说,拥有更多的数据结构,能支持更丰富的数据操作。如果需要缓存能够支持更复杂的结构和操作, Redis 会是不错的选择。 Redis 原生支持集群模式 在 Redis3.x 版本中,便能支持 cluster 模式,而 Memcac
阅读全文
缓存
摘要:1.为什么使用缓存 主要有两个用途:高性能、高并发。 高性能 假设这么个场景,你有个操作,一个请求过来,吭哧吭哧你各种乱七八糟操作 mysql,半天查出来一个结果,耗时 600ms。但是这个结果可能接下来几个小时都不会变了,或者变了也可以不用立即反馈给用户。那么此时咋办? 缓存啊,折腾 600ms
阅读全文
消息队列的延时以及过期失效,消息队列消息积压及占满问题解决思路
摘要:大量消息在 mq 里积压了几个小时了还没解决 几千万条数据在 MQ 里积压了七八个小时,从下午 4 点多,积压到了晚上 11 点多。这个是我们真实遇到过的一个场景,确实是线上故障了,这个时候要不然就是修复 consumer 的问题,让它恢复消费速度,然后傻傻的等待几个小时消费完毕。这个肯定不能在面试
阅读全文
消息队列数据丢失及可靠性
摘要:用 MQ 有个基本原则,就是数据不能多一条,也不能少一条,不能多,就是前面说的重复消费和幂等性问题。不能少,就是说这数据别搞丢了。那这个问题你必须得考虑一下。 如果说你这个是用 MQ 来传递非常核心的消息,比如说计费、扣费的一些消息,那必须确保这个 MQ 传递过程中绝对不会把计费消息给弄丢。 数据的
阅读全文
消息队列重复消费的问题解决方案
摘要:首先,比如 RabbitMQ、RocketMQ、Kafka,都有可能会出现消息重复消费的问题,正常。因为这问题通常不是 MQ 自己保证的,是由我们开发来保证的。挑一个 Kafka 来举个例子,说说怎么重复消费吧。 Kafka 实际上有个 offset 的概念,就是每个消息写进去,都有一个 offse
阅读全文
消息队列部署选择
摘要:部署是单机还是集群呢?你们高可用是怎么保证的呢? 如果有人问到你 MQ 的知识,高可用是必问的。上一讲提到,MQ 会导致系统可用性降低。所以只要你用了 MQ,接下来问的一些要点肯定就是围绕着 MQ 的那些缺点怎么来解决了。 RabbitMQ 的高可用性 RabbitMQ 是比较有代表性的,因为是基于
阅读全文
各个消息队列功能对比及选择
摘要:Kafka、ActiveMQ、RabbitMQ、RocketMQ 有什么优缺点? 特性 ActiveMQ RabbitMQ RocketMQ Kafka 单机吞吐量 万级,比 RocketMQ、Kafka 低一个数量级 同 ActiveMQ 10 万级,支撑高吞吐 10 万级,高吞吐,一般配合大数据
阅读全文
消息队列优缺点
摘要:优点: 解耦、异步、削峰 缺点: 1.系统可用性降低 系统引入的外部依赖越多,越容易挂掉。本来你就是 A 系统调用 BCD 三个系统的接口就好了,ABCD 四个系统还好好的,没啥问题,你偏加个 MQ 进来,万一 MQ 挂了咋整?MQ 一挂,整套系统崩溃,你不就完了?如何保证消息队列的高可用? 系统复
阅读全文
mysql读写分离,主从复制,解决主从同步的延时
摘要:1.如何实现 MySQL 的读写分离? 基于主从复制架构,简单来说,就搞一个主库,挂多个从库,然后我们就单单只是写主库,然后主库会自动把数据给同步到从库上去。 2.MySQL 主从复制原理 主库将变更写入 binlog 日志,然后从库连接到主库之后,从库有一个 IO 线程,将主库的 binlog 日
阅读全文
mysql数据库分表后id主键处理
摘要:1.数据库自增长ID 这个就是说你的系统里每次得到一个 id,都是往一个库的一个表里插入一条没什么业务含义的数据,然后获取一个数据库自增的一个 id。拿到这个 id 之后再往对应的分库分表里去写入。 优点:非常简单,有序递增,方便分页和排序。 缺点:分库分表后,同一数据表的自增ID容易重复,无法直接
阅读全文
mysql脏读幻读不可重复读出现原理及解决方法
摘要:脏读:脏读又称无效数据的读出,是指在数据库访问中,事务T1将某一值修改,然后事务T2读取该值,此后T1因为某种原因撤销对该值的修改,这就导致了T2所读取到的数据是无效的。 幻读:幻读是指当事务不是独立执行时发生的一种现象,例如第一个事务对一个表中的数据进行了修改,比如这种修改涉及到表中的“全部数据行
阅读全文
mysql范式
摘要:数据库设计的三大范式是一种设计规则,旨在帮助设计出高质量的数据库模型。这些规则旨在确保数据库表中的数据是冗余尽可能少,数据冗余会导致数据的不一致性。 第一范式(1NF)要求每个字段都是原子性的,也就是说,每个字段都只能包含单个值。 第二范式(2NF)要求每个表中的非主键字段都完全依赖于表的主键。 第
阅读全文
mysql底层B树高度
摘要:在 MySQL 中使用 B+ 树做索引时,B+ 树的高度通常取决于树中节点的数量以及每个节点的度数。在 MySQL 中,B+ 树的度数通常为 128,但是这个值也可以在创建索引时通过设置选项来更改。 对于 B+ 树来说,一般来说,树的高度越低越好。低高度意味着树中节点的数量越少,也就意味着树的查询和
阅读全文
mysql数据库进阶
摘要:一.sql优化着手思路 SQL优化,既然是优化,那么首先得要定位问题才能对症下药,开启慢查询日志监控,找出系统中比较慢的SQL。这就减少了筛查范围,然后逐条进行执行计划分析。没建索引的建索引,建了索引的看看索引是不是失效了,然后排查为什么索引失效?这些问题排查完了之后,可能因为表数据量过大,那就要考
阅读全文