并发编程中,多个线程共享一个资源时,我们得考虑维护这个资源的原子性,确保 一个线程在操作共享资源时,同时不会被另一个线程所操作 JDK1.6 版本之前,Synchronize...
并发编程中,多个线程共享一个资源时,我们得考虑维护这个资源的原子性,确保 一个线程在操作共享资源时,同时不会被另一个线程所操作 JDK1.6 版本之前,Synchronize...
kafka consumer 通过偏移量来记录消息的消费进度,当consumer poll一次消息时, consumer内部维护了一个指针,能够探测到下一条要消费的数据,当r...
水位是一个单调增加且表征最早未完成工作(oldest work not yet completed)的时间戳。 蓝色部分代表已完成的工作,红色部分代表正在进行的工作,分界线就...
索引的意义在于提高数据的查询速度,就好像书的目录,通过目录我们可以知道什么内容 在第几页从而直接翻到对应的页码上,而不用一页一页的翻找。 索引的模型 第一种,hash表,通过...
首先我们先看一下kafka索引的类关系 可以看出索引主要分成三种,位移索引,时间戳索引和事务索引,都继承于AbstractIndex 这个抽象类,我们看看AbstractIn...
kafka消息在分区中是按序一条一条存储的,假如分区中有10条消息,位移就是0-9, consumer消费了5条消息,那么offset就是5,指向了下一条要消费的记录,con...
redis cluster保存的数据量及吞吐量跟集群的规模相关,Redis 官方给出了 Redis Cluster 的规模上限,是一个集群运行1000 个实例。为什么规定集群...
数据倾斜通常分为两种情况,一是各实例上面的数据不均匀,个别实例数据量特别多; 二是某个实例上的热点数据多,导致的访问量倾斜。发生了数据倾斜,那么保存了大量 数据或者是保存了热...
秒杀场景的特点是短时间、高并发,业务系统要处理瞬时的大量高并发请求,而Redis 的高性能特性就经常被用来支撑秒杀活动。 根据我们的购物体验,我们可以把秒杀场景分为三个阶段,...
关于redis,通常我们的认知是他很快,抛开io设计模式及线程架构,我们单从底层数据结构了解一下redis的trade-off. 先了解一下redis的sds,sds的编码有...
根据当前计算机系统的三层储存架构,cpu缓存,内存,磁盘,我们日常开发通常会模仿这三层储存架构而在数据库之上添加机器本地缓存及redis缓存,既然涉及到了多个储存系统,那么必...
缓存污染 缓存污染指的是缓存中的数据的访问次数很少,当有大量数据只是某些场景下被集体访问了一次或少数几次,或者只是某个时间 段内被访问,后续就无访问,那么这些数据对于内存而言...
从我们编写的java文件到机器上跑起来的系统,中间经历了什么呢? 首先java文件经过类编译成为.class文件,class文件经过类加载加载到虚拟机中,在虚拟机中经过链接、...
redis是内存数据库,所以发生宕机后,数据会消失,所以数据的持久化至关重要,接下来我们看一下redis关于持久化是如何设计的。 AOF 关于日志,我们在学习mysql或者z...
redis为了实现高可靠性,通过RDB和AOF尽量减少了数据的丢失,通过主从模式尽量减少了服务的中断,增加了实例的副本的主从模式和读写分离保证了数据的一致性。 如果没有读写分...
主从模式下的redis集群,如果主库挂了,那么就无法接收写操作,所以哨兵模式应运而生。 哨兵是一个运行在特殊模式下的 Redis 进程,主要负责监控、选主和通知 哨兵通信机制...
随着业务的发展,redis单实例不够存储的时候,我们会考虑通过scale out横向拓展 或者scale up纵向拓展,比如我们目前8G内存100G硬盘的实例,我们可以纵向 ...
codis是在redis官方集群方案redis-cluster发布之前便已被业界广泛使用的redis集群解决方案。 codis server:这是进行了二次开发的 Redis...
Redis以高性能而被广泛使用,所以我们必须重视可能会影响redis性能的阻塞点。 我们从redis交互的对象的角度出发,思考哪些对象的哪些操作将会给redis性能带来风险。...