摘要:
什么情况适合使用压缩? 在使用压缩之前,首先你需要考虑,当前这个场景是不是真的适合使用数据压缩。 比如,进程之间通过网络传输数据,这个数据是不是需要压缩呢?我和你一起来对比一下: 不压缩直接传输需要的时间是: 传输未压缩数据的耗时。 使用数据压缩需要的时间是: 压缩耗时 + 传输压缩数据耗时 + 解 阅读全文
摘要:
全局严格顺序 如果业务必须要求全局严格顺序,就只能把消息队列数配置成 1,生产者和消费者也只能是一个实例,这样才能保证全局严格顺序。 局部有序 大部分情况下,我们并不需要全局严格顺序,只要保证局部有序就可以满足要求了。比如,在传递账户流水记录的时候,只要保证每个账户的流水有序就可以了,不同账户之间的 阅读全文
摘要:
消息模型 RocketMq、JMQ模型分别为Broker、Topic、Queue。 Kafka:将Queue换成Partition。 消费者、MQ、生产者关系图 假设有一个主题 MyTopic,我们为主题创建 5 个队列,分布到 2 个 Broker 中。 假设我们有 3 个生产者实例:Produe 阅读全文
摘要:
确保消息可靠传递 一条消息从生产到消费完成这个过程,可以划分三个阶段,为了方便描述,我给每个阶段分别起了个名字。 生产阶段: 在这个阶段,从消息在 Producer 创建出来,经过网络传输发送到 Broker 端。 存储阶段: 在这个阶段,消息在 Broker 端存储,如果是集群,消息会在这个阶段被 阅读全文
摘要:
用幂等性解决重复消息问题 一般解决重复消息的办法是,在消费端,让我们消费消息的操作具备幂等性。 幂等(Idempotence) 本来是一个数学上的概念,它是这样定义的: 如果一个函数 f(x) 满足:f(f(x)) = f(x),则函数 f(x) 满足幂等性。 这个概念被拓展到计算机领域,被用来描述 阅读全文
摘要:
LSM简介Log Structured Merge Tree,下面简称 LSM。2006年,Google 发表了 BigTable 的论文。这篇论文提到 BigTable 单机上所使用的数据结构就是 LSM。目前,LSM 被很多存储产品作为存储结构,比如 Apache HBase, Apache C 阅读全文
摘要:
阅读全文
摘要:
Redis通过内置的lua编译/解释器,可以使用EVAL命令对lua脚本进行求值。 脚本的命令是原子的,RedisServer在执行脚本命令中,不允许插入新的命令;同时脚本的命令可以复制,RedisServer在获得脚本后不执行,生成标识返回,Client根据标识就可以随时执行。 EVAL命令 通过 阅读全文
摘要:
Redis目前支持两种持久化的方式,RDB和AOF。RDB文件是压缩后的二进制文件,AOF记录的是每一次写操作的命令。所以一般来说AOF文件比RDB占用内存大。 RDB RDB(RedisDataBase)是基于快照(snapshoptting)实现的。redis在运行时会在满足一定条件的情况下将运 阅读全文
摘要:
Redis 应对数据量增多的两种方案:纵向扩展(scale up)和横向扩展(scale out)。 纵向扩展:升级单个 Redis 实例的资源配置,包括增加内存容量、增加磁盘容量、使用更高配置的 CPU。 优势:简单、直接 劣势: 当数据量过大时,使用RDB对数据进行持久化时,需要的内存也会增加, 阅读全文