随笔分类 - 高并发/分布式
摘要:(转载) 一、什么是布隆过滤器 本质上布隆过滤器是一种数据结构,比较巧妙的概率型数据结构(probabilistic data structure),特点是高效地插入和查询,可以用来告诉你 “某样东西一定不存在或者可能存在”。 相比于传统的 List、Set、Map 等数据结构,它更高效、占用空间更
阅读全文
摘要:1. 数据库自增id 单独使用一个数据库表(无意义,主要用于获取id)获取自增id,再将此id导入到需要的表中。 2. UUID 太长了,作为主键性能太差。 3. 系统当前时间 并发高容易重复。 4. SnowFlake(雪花)算法 snowflake 算法是 twitter 开源的分布式 id 生
阅读全文
摘要:一、系统拆分 将一个系统拆分为多个子系统,用 dubbo 来搞。然后每个系统连一个数据库,这样本来就一个库,现在多个数据库,不也可以扛高并发么。 二、缓存 缓存,必须得用缓存。大部分的高并发场景,都是读多写少,那你完全可以在数据库和缓存里都写一份,然后读的时候大量走缓存不就得了。毕竟人家 redis
阅读全文
摘要:一、什么是分库分表 分表 比如你单表都几千万数据了,你确定你能扛住么?绝对不行,单表数据量太大,会极大影响你的 sql 执行的性能,到了后面你的 sql 可能就跑的很慢了。一般来说,就以我的经验来看,单表到几百万的时候,性能就会相对差一些了,你就得分表了。 分表是啥意思?就是把一个表的数据放到多个表
阅读全文
摘要:redis 的并发竞争问题是什么?如何解决这个问题?了解 redis 事务的 CAS 方案吗? 这个也是线上非常常见的一个问题,就是多客户端同时并发写一个 key,可能本来应该先到的数据后到了,导致数据版本错了;或者是多客户端同时获取一个 key,修改值之后再写回去,只要顺序错了,数据就错了。而且
阅读全文
摘要:https://zhuanlan.zhihu.com/p/59167071
阅读全文
摘要:一、缓存击穿 在高并发下,对一个特定的值进行查询,但是这个时候缓存正好过期了,缓存没有命中,导致大量请求直接落到数据库上,如活动系统里面查询活动信息,但是在活动进行过程中活动缓存突然过期了。 解决方案:在访问key之前,采用SETNX(set if not exists)来设置另一个短期key来锁住
阅读全文
摘要:为什么使用缓存? 用缓存,主要有两个用途:高性能、高并发。 【高性能】 假设这么个场景,你有个操作,一个请求过来,吭哧吭哧你各种乱七八糟操作 mysql,半天查出来一个结果,耗时 600ms。但是这个结果可能接下来几个小时都不会变了,或者变了也可以不用立即反馈给用户。那么此时咋办? 缓存啊,折腾 6
阅读全文
摘要:分布式事务的实现主要有以下 5 种方案: XA 方案 TCC 方案 本地消息表 可靠消息最终一致性方案 最大努力通知方案 CAP定理是指WEB服务无法同时满足一下3个属性: 一致性(Consistency) : 客户端知道一系列的操作都会同时发生(生效) 可用性(Availability) : 每个
阅读全文
摘要:https://www.cnblogs.com/goodAndyxublog/p/13327412.html 一个用户的 Session 信息如果存储在一个服务器上,那么当负载均衡器把用户的下一个请求转发到另一个服务器,由于服务器没有用户的 Session 信息,那么该用户就需要重新进行登录等操作。
阅读全文
摘要:参考链接1 --分布式系列文章 参考连接2 一、何为分布式一致性 C(一致性)A(高可用)P(分区容错性)理论:在满足CP的基础上尽可能提高可用性。 一致性(Consistency) : 客户端知道一系列的操作都会同时发生(生效) 可用性(Availability) : 每个操作都必须以可预期的响应
阅读全文
摘要:相关链接 超卖事故 一、什么是分布式锁 在多线程模型中,可以使用同步机制实现安全访问数据。但是多个服务器访问时,会导致数据最终不一致问题。常见分布式锁可以基于数据库/Redis/Zookeeper实现。 分布式锁应该具备以下条件: 1.一个方法在同一时间只能被一个机器的一个线程执行(互斥)。 2.高
阅读全文