摘要: Redis 哨兵集群实现高可用 一、哨兵的介绍 sentinel,中文名是哨兵。哨兵是 redis 集群机构中非常重要的一个组件,主要有以下功能: 集群监控:负责监控 redis master 和 slave 进程是否正常工作。 消息通知:如果某个 redis 实例有故障,那么哨兵负责发送消息作为报 阅读全文
posted @ 2020-03-25 23:56 Qmillet 阅读(409) 评论(0) 推荐(1) 编辑
摘要: Redis 主从架构 一、简单介绍 单机的 redis,能够承载的 QPS 大概就在上万到几万不等。对于缓存来说,一般都是用来支撑读高并发的。因此架构做成主从(master-slave)架构,一主多从,主负责写,并且将数据复制到其它的 slave 节点,从节点负责读。所有的读请求全部走从节点。这样也 阅读全文
posted @ 2020-03-25 23:53 Qmillet 阅读(2177) 评论(1) 推荐(1) 编辑
摘要: 一、前言 持久化主要是做灾难恢复、数据恢复,也可以归类到高可用的一个环节中去,比如你 redis 整个挂了,然后 redis 就不可用了,你要做的事情就是让 redis 变得可用,尽快变得可用。 重启 redis,尽快让它堆外提供服务,如果没做数据备份,这时候 redis 启动了,也不可用啊,数据都 阅读全文
posted @ 2020-03-25 22:35 Qmillet 阅读(179) 评论(0) 推荐(0) 编辑
摘要: redis 的并发竞争问题是什么?如何解决这个问题?了解 redis 事务的 CAS 方案吗? 这个也是线上非常常见的一个问题,就是多客户端同时并发写一个 key,可能本来应该先到的数据后到了,导致数据版本错了;或者是多客户端同时获取一个 key,修改值之后再写回去,只要顺序错了,数据就错了。而且 阅读全文
posted @ 2020-03-25 20:55 Qmillet 阅读(296) 评论(0) 推荐(0) 编辑
摘要: 定期从设置过期时间的键中随机抽取删除—》惰性删除(获取某个键时判断是否过期)—》内存淘汰机制 一、redis 过期策略 redis 过期策略是:定期删除+惰性删除。 所谓定期删除,指的是 redis 默认是每隔 100ms 就随机抽取一些设置了过期时间的 key,检查其是否过期,如果过期就删除。 假 阅读全文
posted @ 2020-03-25 20:54 Qmillet 阅读(2066) 评论(0) 推荐(0) 编辑
摘要: 一、redis 和 memcached 有啥区别? 1. redis 支持复杂的数据结构 redis 相比 memcached 来说,拥有更多的数据结构,能支持更丰富的数据操作。如果需要缓存能够支持更复杂的结构和操作, redis 会是不错的选择。 2. redis 原生支持集群模式 在 redis 阅读全文
posted @ 2020-03-25 20:32 Qmillet 阅读(245) 评论(0) 推荐(0) 编辑
摘要: https://zhuanlan.zhihu.com/p/59167071 阅读全文
posted @ 2020-03-25 19:42 Qmillet 阅读(203) 评论(0) 推荐(0) 编辑
摘要: 一、缓存击穿 在高并发下,对一个特定的值进行查询,但是这个时候缓存正好过期了,缓存没有命中,导致大量请求直接落到数据库上,如活动系统里面查询活动信息,但是在活动进行过程中活动缓存突然过期了。 解决方案:在访问key之前,采用SETNX(set if not exists)来设置另一个短期key来锁住 阅读全文
posted @ 2020-03-25 19:17 Qmillet 阅读(164) 评论(0) 推荐(0) 编辑
摘要: 为什么使用缓存? 用缓存,主要有两个用途:高性能、高并发。 【高性能】 假设这么个场景,你有个操作,一个请求过来,吭哧吭哧你各种乱七八糟操作 mysql,半天查出来一个结果,耗时 600ms。但是这个结果可能接下来几个小时都不会变了,或者变了也可以不用立即反馈给用户。那么此时咋办? 缓存啊,折腾 6 阅读全文
posted @ 2020-03-25 19:15 Qmillet 阅读(119) 评论(0) 推荐(0) 编辑
摘要: 分布式事务的实现主要有以下 5 种方案: XA 方案 TCC 方案 本地消息表 可靠消息最终一致性方案 最大努力通知方案 CAP定理是指WEB服务无法同时满足一下3个属性: 一致性(Consistency) : 客户端知道一系列的操作都会同时发生(生效) 可用性(Availability) : 每个 阅读全文
posted @ 2020-03-25 15:38 Qmillet 阅读(178) 评论(0) 推荐(0) 编辑
摘要: 其实这个问题没啥,如果你确实干过 es,那你肯定了解你们生产 es 集群的实际情况,部署了几台机器?有多少个索引?每个索引有多大数据量?每个索引给了多少个分片?你肯定知道! 但是如果你确实没干过,也别虚,我给你说一个基本的版本,你到时候就简单说一下就好了。 es 生产集群我们部署了 5 台机器,每台 阅读全文
posted @ 2020-03-25 13:39 Qmillet 阅读(1523) 评论(0) 推荐(0) 编辑
摘要: 一、性能优化的杀手锏——filesystem cache 你往es里写的数据,实际上都写到磁盘文件里去了,查询的时候,操作系统会将磁盘文件里的数据自动缓存到 filesystem cache 里面去。 es-search-process es 的搜索引擎严重依赖于底层的 filesystem cac 阅读全文
posted @ 2020-03-25 13:36 Qmillet 阅读(4885) 评论(0) 推荐(1) 编辑
摘要: 一、ES写入数据 (选择协调节点—>根据文件进行路由转发给对应的节点—>节点的主分片处理请求—>数据同步到副本分片—>返回响应) 客户端选择一个 node 发送请求过去,这个 node 就是 coordinating node(协调节点)。 coordinating node 对 document 阅读全文
posted @ 2020-03-25 12:39 Qmillet 阅读(4663) 评论(1) 推荐(0) 编辑
摘要: ElasticSearch 设计的理念就是分布式搜索引擎,底层其实还是基于 lucene 的。核心思想就是在多台机器上启动多个 es 进程实例,组成了一个 es 集群。 es 中存储数据的基本单位是索引,比如说你现在要在 es 中存储一些订单数据,你就应该在 es 中创建一个索引 order_idx 阅读全文
posted @ 2020-03-25 00:19 Qmillet 阅读(3177) 评论(0) 推荐(1) 编辑