06 2021 档案
摘要:为什么要分库分表? 垂直分库的作用,表都在一个库中,一个服务能承担的请求压力是有限的,可以垂直分库来提高数据库的服务能力 水平分库的作用,单个库中的表数据量减少 提高查询效率,容灾效果一个库不能用不会影响到所有的用户 垂直分表的作用,单个表的页数量减少,提高查询效率 将承受并发的能力提升 将大数据了
阅读全文
摘要:1. 系统拆分 把系统拆分成多个子系统,每个系统连接一个数据库 2. 缓存 大部分场景都是读多写少,大量读走缓存,写走数据库 3. MQ 写压力过大的时候,让写请求积压在mq中,缓解数据库压力 4. 分库分表 当数据库处理能力不够时 处理不过来mq的数据了 5. 数据库读写分离 读请求压力过大时使用
阅读全文
摘要:为什么要把系统分成分布式? 服务独立自治 dubbo的简单流程 provider注册服务到注册中心 consumer订阅服务从注册中心,consumer从注册中心获取对应服务的ip+端口号 通过代理负载均衡调用响应的接口 consumer和provider异步通知检测中心 注册中心挂掉之后还能提供服
阅读全文
摘要:redis备份 aof重写是根据redis的现存数据来重写的 rdb与aof优缺点? rdb优点 写入影响最小 恢复更快 适合冷备份 缺点: 容易丢数据 fork线程生成rdb文件时 数据量大会会阻塞主线程 aof优点 尽量数据不丢失 缺点: 占用磁盘多一点 qps会受一点影响 数据恢复的时候比较慢
阅读全文
摘要:1. kafka/rabbitMQ/rocketMQ的优缺点 kafka 优点: 高吞吐量属于顶级 10w/s 高可用集群 性能高 通过配置可以消息0丢失 缺点: 功能比较单一 只有推和拉 不适用复杂的业务场景 rabbitMQ 优点: 可以保证数据不丢失 高可用 高级功能,死信队列 消息重试等 劣
阅读全文
摘要:1. 选择排序 o n平方/o1 在剩余的数组中选取最小值与数组第一位替换 缺点是:无论是基本有序的数组还是乱序的数组,使用的时间是一致的 1 public void selectSort(int[] a){ 2 for (int i = 0; i < a.length; i++) { 3 int
阅读全文
摘要:高可用需要保持数据尽量不丢失,服务尽量少中断,redis使用AOF/RDB来实现数据尽量不丢失 redis如何保证尽量少的服务不中断呢? redis提供了主从库模式,为了保证数据一致性,主从库使用读写分离,任何节点都可以提供读操作,主库才能 提供写操作,然后主库同步数据到从库 思考一下为什么不所有的
阅读全文
摘要:完全二叉树: 1 2 3 4 5 6 满二叉树: 1 2 3 4 5 6 7 满二叉树是完全二叉树 完全二叉树不一定是满二叉树
阅读全文