Skip to content

Latest commit

 

History

History
718 lines (424 loc) · 62.5 KB

CHANGELOG_CN.MD

File metadata and controls

718 lines (424 loc) · 62.5 KB

v3.5.5

New features

  • 给 RTC 模型增加处理开关,可以根据开关控制是否开启 RTC 模型#2841@cheniujh

  • 用 RTC 模型处理 Pika 访问缓存部分,提升 Pika 服务的读性能#2837@cheniujh

  • incr、append 命令在传输 binlog 时,使用 pksetexat 命令,防止因为不正确的操作导致数据无法过期,出现脏数据#2833@chejinge

  • 添加定时删除日志的任务,默认 7 天删除一次,可以根据自己需求在 config 文件中进行配置#2829@XiaoLiang2333

  • 将管理命令移出主线程,防止因为管理命令调用频繁或者耗时过高,阻塞主线程#2727@chejinge

  • Pika 线程整理,避免启动无用线程造成资源浪费#2697@chejinge

  • 添加 pika benchark 工具,旨在提升压测效率,并输出可视化的统计图表#2663@luky116

Improvement

  • 优化主从复制,确保 Master 端的 SlaveNode 在提交 bgsave 任务前进入 DBSync 状态,防止bgsave执行时的 binlog 在极端情况下被清除#2798@cheniujh

  • 优化 Apply binlog 时锁机制,减少不必要的锁竞争#2773@cheniujh

  • 添加 Geo 数据类型的 TCL 测试,并修复测试过程中遇到的 bug#2753@saz97

  • 更新 Pika Docker Readme, 可以按照 Readme 在 Docker 中部署 Pika 服务#2743@luky116

  • 支持对更多的 RocksDB 参数进行动态调整,用户根据不同的业务使用场景调整参数提升 Pika 的读写性能#2728@cheniujh

  • Pkpatternmatchdel 命令支持删除 Redis Stream 数据类型#2723@wangshao1

  • 重构主从复制模式 slave 节点的主从同步线程模型,尽可能减少 binlog 消费阻塞问题#2638@cheniujh

  • 增加主从复制状态指标 repl_connect_status,方便运维人员清晰明确的判断当前的主从复制状态#2656@cheniujh

  • 新增 RocksDB Compaction 策略动态调整参数,用户可以根据业务调整 Compaction 策略,降低 Compaction 操作对服务性能的损耗#2538@wangshao1

  • 对事务新增 TCL 测试并修复测试中遇到的 bug#2844@luky116

Bugfix

  • 修改 Pika 自动化测试客户端链接 server 端的超时时间,避免因为长时间断开导致测试失败#2863@cheniujh

  • 修复 kill client 命令杀连接流程不正确的#2862@cheniujh

  • 修复 blpop/brpop 更新数据库的时候未更新缓存可能回导致 RocksDB 数据库与 RedisCache 缓存不一致的现象#2858@cheniujh

  • 修复 Pika 不支持 Redis-Sentinel 的问题#2854@cheniujh

  • 修改 flushall 的逻辑避免统一处理时,多清理一次数据#2846@cheniujh

  • PkPatternMatchDel 命令在删除 DB 的同时删除 RedisCache,避免出现 RocksDB 数据库与 RedisCache 缓存数据不一致的情况#2839@chejinge

  • 用 Rocky 环境替代 CentOS, github CI 流程总体支持 MacOS/Ubuntu/Rocky 三个环境#2823@QlQlqiqi

  • 优化读锁的范围,避免因为重复消费 binlog 导致主、从数据不一致的问题#2818@cheniujh

  • 修改 client watch 的 key,被任何人修改(包括自己的改动),都会失效的问题#2815@luky116

  • 修改 slave_priority 的默认值,防止因为运维同学没有设置该值,导致主从切换失败#2813@chejinge

  • Multi 命令更新数据库的同时更新缓存,避免读取不到数据#2810@luky116

  • 修复执行 slaveof no one 时出现异常日志输出的问题#2800@cheniujh

  • 修复 Pika block-cache 信息计算不准确,内存使用计算不标准的问题#2797@bigdaronlee163

  • 修改主从复制过程中 flushdb binlog 的处理逻辑,确保按照顺序执行,避免出现主从不一致的情况#2794@cheniujh

  • 添加标志位、时间戳和返回值机制,确保 Pika 在执行 flushdb 且处理异步删除旧目录时冲突时正确处理#2790@cheniujh

  • 修改主从复制过程中 flushdb binlog 的处理逻辑,确保按照顺序执行,避免出现主从不一致的情况#2790@cheniujh

  • 修复 PKPatternMatchDel 命令未删除迭代器可能会导致 RocksDB 删除数据不彻底的问题#2786@wangshao1

  • timerTaskThread_ 重命令为 timer_task_thread_#2776@cheniujh

  • 修复 min-blob-size 参数解析失败,导致 kv 分离使用出错的问题#2767@wangshao1

  • 修复 sentinel 主从切换时,由于主节点和从节点数据量不一致导致主从切换状态扭转错误问题#2766@cheniujh

  • 修复 Zverank 命令计算错误,导致返回值错误的问题#2763@chejinge

  • 修复 Pksetat 命令更新 DB 的同时未更新 RedisCache 缓存,可能会存在 RocksDB 数据库与 RedisCache 缓存不一致的问题#2759@chejinge

  • 修复 Pika-port 传输数据过程中报错的问题#2758@guangkun123

  • 修复 RsynClient 异常退出后,未做失败处理导致全量复制数据不完整的问题#2756@cheniujh

  • 修复 Pika 不能批量扩容的问题#2746@cheniujh

  • 修复参数未初始化导致 slotsscan 等命令不能和 bgsave 命令相互制衡的问题#2745@chejinge

  • 修复 SlotMigrate 返回值错误,可能会导致数据迁移中断的问题#2741@wangshao1

  • Pksetexat 更新数据库的同时更新 RedisCache,避免出现RocksDB 数据库与 RedisCache 缓存不一致的问题#2736@longfar-ncy

  • 修复 RedisCache 层因为没有使用 storage 层解析的 ttl 可能会导致 RocksDB 数据库与 RedisCache 缓存不一致的问题#2729@chejinge

  • 修复 Stream 类型数据不能被 RocksDB compaction 会导致过期数据一直存在的问题#2724@wangshao1

  • 修复 ACL 认证可能会偶发性失败的问题#2714@luky116

  • 修复 Pika cmdID 赋值在 Cmd 初始函数中,可能会导致并发构造的时候出现内存泄漏的问题#2692@gukj-spel

  • 修复 Spop 在写 binlog 时可能会出现竞态问题#2674@cheniujh

  • 修复 server_stat 中的数据竞态问题#2671@cheniujh

  • 修复多 DB 下全量同步超时后不重试的问题#2667@cheniujh

  • 修复多 DB 主从超时场景下,可能会出现窗口崩溃的问题#2666@cheniujh

  • 修复主从同步限速逻辑中重复解锁的问题#2657@cheniujh

v4.0.0

New features

  • Pika Geo 数据类型增加 TCL 测试,并修复测试过程中遇到的缺陷#2753@saz97

  • Pika 支持在 FreeBSD14 平台上进行编译打包#2711@lqxhub

  • Pika 线程整理,避免启动过多无用线程,对不同的线程进行命名,方便问题定位#2697@chejinge

  • Mget 支持多 key 查询缓存, 记录未命中的 key 去 DB 中查询,提升 Pika 服务的读性能#2675@chejinge

  • Codis 支持 info 命令, 可以通过该命令查询 Codis-proxy 的 info 信息#2688@chienguo

  • 添加 Floyd 的 compaction-filter 的 Gtest#2669@Mixficsol

  • Codis-proxy 新增 P99 P95 等监控耗时指标#2668@chejinge

  • 添加 Pika 压测指标,提升 Pika 压测效率,并输出可视化的统计图表#2663@luky116

  • Pika 主从复制新增监控指标 repl_connect_status, 可以更加明确清晰的确定当前的主从复制的状态#2638@cheniujh

  • Pika 不支持不同类型的重复 key, 写入重复 key 返回非法类型#2609@Mixficsol

  • 添加支持分区索引过滤的功能#2601@vacheli

  • Pika 支持第三代存储引擎 Floyd, 通过支持多 rocksdb 实例、对 Blob 的使用进行优化、对过期数据的清理进行优化,提升了 Pika 实例的读写性能#2413@wangshao1

Improvement

  • 更新 Pika Docker Readme, 可以按照 Readme 在 Docker 中部署 Pika 服务#2743@luky116

  • 优化重复查询 meta value 导致影响 Pika 服务读写性能的问题#2735@wangshao1

  • 支持对更多的 RocksDB 参数进行动态调整,用户根据不同的业务使用场景调整参数提升 Pika 的读写性能#2728@cheniujh

  • 对 HyperLogLog 和 String 进行类型隔离,确保 HyperLogLog 操作与 String 操作明确区分开#2720@saz97

  • 更新了 PR 标题验证,不允许在标题末尾出现中文字符#2718@baerwang

  • 重构主从复制模式 slave 节点的主从同步线程模型,尽可能减少 binlog 消费阻塞问题#2638@cheniujh

  • 新增 RocksDB Compaction 策略动态调整参数,用户可以根据业务调整 Compaction 策略,降低 Compaction 操作对服务性能的损耗#2538@MalikHou

Bugfix

  • 修复 iter 未被析构,导致 pkpatternmatchdel 在返回之前不会删除 iter,这可能会导致 rocksdb 永远引用一个版本,导致数据不符合预期的问题#2785@wangshao1

  • 修复 config 参数 min-blob-size 带单位时解析错误的问题#2767@wangshao1

  • 修复 zverank 返回值异常的问题#2763@chejinge

  • 修复 Pika-port 传输数据过程中报错的问题#2758@guangkun123

  • 修复因为堆上分配的缓冲区越界导致 Dbsize 命令运行时崩溃的问题 #2749@wangshao1

  • 修复批量扩容时,多个 slave 同时连接 master, 短时间多次 bgsave 导致部分从节点数据不完整的问题#2746@cheniujh

  • 修复参数未初始化导致 slotsscan 等命令不能和 bgsave 命令相互制衡的问题#2745@chejinge

  • 修复 Slotmigrate 迁移数据的过程中,返回值设置错误,异常场景下会终止数据迁移的问题#2741@chejinge

  • 修复 Mget 没有使用解析 ttl 的函数导致出现部分key的ttl未被更新,数据不一致的问题#2730@chejinge

  • 修复 pkpatternmatchdel 命令使用错误导致的 stream 类型数据删除异常的问题#2726@wangshao1

  • 修复 pkpatternmatchdel 不能正确删除掉对应的 keys 的问题#2717@wangshao1

  • 修复 ACL 密码验证错误问题#2714@luky116

  • 修复 Keyspace 命令未计算 Stream 类型数据的问题#2705@wangshao1

  • 对部分命令定制化处理逻辑,避免写 binlog 导致从节点的 binlog 解析失败的问题#2693@cheniujh

  • 修复 Pika cmdID 赋值在 Cmd 初始函数中,可能会导致并发构造的时候出现内存泄漏的问题#2692@gukj-spel

  • 修复 ExpectedStale 未考虑 String 类型, 如果存在已经过期的 String 类型的 key, ExpectedStale 会返回错误的问题#2682@wangshao1

  • 修复 Spop 在写 binlog 时可能会出现竞态问题#2674@cheniujh

  • db instance 设置不合理时,给用户错误提示#2672@Mixficsol

  • 修复 server_stat 中的数据竞态问题#2671@cheniujh

  • 修复多 DB 下全量同步超时后不重试的问题#2667@cheniujh

  • 修复多 DB 主从超时场景下,可能会出现窗口崩溃的问题#2666@cheniujh

  • 修复主从同步限速逻辑中重复解锁的问题#2657@cheniujh

  • 发版支持自动打包 centos7 和 centos8 平台的二进制编译包#2535@baerwang

  • 修复 Codis 侧的 getrange 命令没有返回预期结果的问题#2510@luky116

v3.5.4

New features

  • Pika 支持动态调整全量同步限速参数 rsync-timeout-ms 和 throttle-bytes-per-second#2633@cheniujh

  • 将 info key space 1 的结果输出至 info all 并展示到监控界面中#2603@XiaoLiang2333

  • Pika 磁盘IO 限速参数支持 OnlyRead、OnlyWrite、ReadAndWrite,默认支持OnlyWrite#2599@vacheli

Improvement

Bugfix

  • 修复使用 Pika Exporter 时可能会出现 slots 分配不均衡的问题#2651@chejinge

  • 修复 Codis dashboard 不能正确更新 master 实例状态的问题#2650@vacheli

  • 修复 Redis 事务 binlog 解析失败导致的主从同步异常问题#2642@chejinge

  • 修复 Pika Expoter 启动时不带参数导致启动失败问题#2640@Polaris3003

  • 修复使用 Pika Operater 拉起集群Codis-proxy panic 的问题 #2632@chejinge

  • 修复 CI 编译出的二进制进行自动化测试时 cp 命令失败问题#2614@cheniujh

  • 修复变量未初始化导致 cache 启动失败的问题#2613@chejinge

  • 修复 userpass 和 userblacklist 动态修改参数功能异常问题#2600@chejinge

  • 修复 scard sscan 结果不一致的问题#2596@chejinge

  • 修复当 max-rsync-parallel-num 大于4,slave 会在主从复制时 coredump 的问题#2595@chejinge

  • 调整不常用的线程池线程数,避免因为空跑导致性能损耗#2590 @chejinge

  • 修复 Pika 事务边缘测试 case 不通过的问题#2586 @chejinge

  • 将 cache-model 修改成 cache-mode#2585@chejinge

  • 修复使用 info keyspace 后,info all 死锁的问题#2584 @chejinge

  • 修复因修改 zsetscorekeycomparatorimpl 字典序比较熟顺序,导致353 352极端场景不兼容的问题#2583 @wangshao1

  • 修复 compact 死锁的问题 #2581 @chejinge

  • slotmigrate 添加 go test #2576@chejinge

  • 更新 Pika Operater 使用的 pika 版本#2572@chejinge

  • 修复 config rewrite 后 blockcache 数值异常的问题#2561@chejinge

  • 修复 slotmigrate 动态修复后值错误的问题#2548@chejinge

  • 修复 spop 可能会出现主从数据不一致的问题#2541@chenbt-hz

  • 修复 CloseFd(it->second[i]) 出现越界的问题#2539@chejinge

  • 修复 Flushall 和 FlushDB 死锁的隐患,并删除 FlushSubDB 接口#2533@Mixficsol

  • 增加参数控制是否清理 tcl 测试后产生的数据文件,防止废弃数据占据磁盘#2507@Mixficsol

v3.5.3

新特性

Bugfix

  • 修复 Pika 有从节点进行全量复制期间会误删除 dump 文件的问题#2377@wangshao1

  • 修复主从复制过程中, slave 节点收到 master 异常回包后的处理逻辑#2319@wangshao1

  • 在 Pika 执行 shutdown 命令时调用 disable compaction, 提升进程退出速度 #2345 @panlei-coder

  • 修复 Codis-dashboard Redis Memory 值不准确的问题#2337 @Mixficsol

  • INFO 命令耗时优化,降低查磁盘频率 #2197 @chejinge

  • 修复 Rsync 删除临时文件路径不对,删除失败,导致rocksdb打开失败的问题#2186@wangshao1

  • 修复 Compact ,Bgsave ,Info keyspace 命令未指定db名称,导致部分命令 coredump 的问题#2194@u6th9d

  • Codis dashboard 用 info replication 替代 info 命令查寻 master ip 降低对 Pika 的性能影响 #2198 @chenbt-hz

  • 修复 Pika cache 使用边缘case,解决部分场景下 cache 和 DB 数据不一致的问题#2225 @chejinge

  • 修复当 dump 文件夹为空时,会启动报错 Segmentation fault 的问题#2265 @chenbt-hz

  • 修复因为flag计算错误,导致的部分命令缓存没有生效问题#2217 @lqxhub

  • 修复主从复制模式下,主实例 flushdb 后,从实例因为死锁导致的不能访问的问题#2249@ForestLH

  • 修复部分命令未对 RocksDB 的返回值进行判断的问题#2187@callme-taota

  • 规范函数的返回值及初始值#2176@Mixficsol

  • 修复网络监控指标统计不准确的问题#2234@chengyu-l

  • 修复配置文件加载部分参数异常的问题#2218@jettcc

  • 修复 Codis dashboard cpu 100% 的问题#2393@chengyu-l

  • 修复 Codis fe pika 主从角色显示异常的问题#2387@chengyu-l

  • 修复迁移数据后数据不一致的问题#2485@chejinge

  • 修复dbsize 计算错误问题#2494@chejinge

  • 修复扩缩容或者 pod 起停后,Codis-dashboard 界面显示不准确的问题#2475@chengyu-l

  • 修复 DB 层重复上锁的问题#2372 @Mixficsol

  • 修复全量复制失败后,未做处理导致数据丢失问题#2439@wangshao1

  • 修复主从复制过程中,主实例执行 bgsave 过程中,没有正确回应从的同步请求#2437@wangshao1

  • 全量复制过程中,添加数据同步状态,明确数据同步进度#2430@baixin01

  • 修复从库在 Apply binlog 时,没有对操作的 key 加锁,导致数据不一致的问题#2409 @chejinge

  • 修复 codis slot 迁移过程中 master 实例 coredump 的问题#2415 @chejinge

  • 修复在主从复制过程中,删除正在使用的 dump 文件的问题#2377@wangshao1

  • 修复主从复制过程中从实例 rsync 响应错误的问题#2319@wangshao1

  • 修复主从复制模式下,主实例flushdb后,从实例因死锁而无法访问的问题#2372 @Mixficsol

v3.5.2

新特性

Bugfix

  • 修复 pika 在使用 SETRANGE 命令出现 coredump的问题 #2125 @chejinge

  • 修复因删除 Clearreplicationid 写进 binlog 导致的全量复制问题 #2136 @Mixficsol

  • 修改锁粒度,提升 pika 写 binlog 的性能 #2129 @wangshao1

  • 增加 redis-copy 流量复制工具 #2044 @Mixficsol

  • 修复复杂数据类型成员变量可能出现数据溢出 #2016 @u6th9d

  • 修复 decr 命令返回值错误问题 #2092 @dingxiaoshuai123

  • 修复 setrange 和 setbit 命令没有保留原 key 的过期时间的问题 #2095 @u6th9d

v3.5.1

新特性

  • slow log 增加队列等待时间统计 #1997 @wangshao1

  • 主从复制使用 ReplicationID #1951 @Mixficsol

  • WAL 以 disablewal 命令方式支持动态关闭 #2015 @Mixficsol

  • flush 线程数和 compaction 线程数动态调整,合二为一 #2014 @Tianpingan

  • 升级了 RocksDB 版本到 v8.3.3 #1999 @dingxiaoshuai123

  • 增加了 Macos 环境下配置 Pika 的使用方法文档 #2003 @klboke

  • 新增周期性打印工作队列的长度功能,在队列阻塞的时候可以快速定位问题 #1978 @Tianpingan

  • 新增利用一个 pika_exporter 检测整个集群的指标 #1953 @chenbt-hz

  • 实现在 K8s 环境上 Pika 服务的自动注册,在启动时自动注册,从而实现集群的自组织 #1931 @machinly

Bugfix

  • 减少了 exporter 非必要的日志打印,降低 CPU 利用率 #1945 @Mixficsol

  • 升级了 sentinel 机制,对于掉线的主节点,进行逻辑删除 #1949 @Mixficsol

  • 调整 rate_limit 参数,修复压测时出现 RPS 为 0 的情况 #2009 @chejinge

  • 修复了 INFODATA 命令中对于遍历数据文件时出现空路径的逻辑判断 #1996 @Mixficsol

  • 完善了文档的一些部分缺失的描述 #1962 @baerwang

  • 使用 make -j 提高构建速度 #1933 @xiezheng-XD

  • 解决了 Codis 在线上出现大毛刺的问题 #2016 @chejinge

  • 修复了 Macos 环境下编译使用 tools 导致编译不过的问题 #2011 @A2ureStone

v3.5.0

重大特性

1.去除 Rsync

  1. 去除 Rsync
  2. 实现断点续传,速率限制,文件检验
  3. Pika 主从同步时,进行 master run_id 的检验

2.兼容更多 Redis 命令

  1. 支持 UNLINK 命令
  2. 支持 INFO COMMANDSTATS 命令
  3. 支持 HELLO、SETNAME 命令
  4. 支持 BLPOP、BRPOP 命令
  5. 新增 Pika 原创命令 DISKRECOVERY

3.RocksDB 版本升级和分级压缩

  1. 升级 RocksDB 版本到 v8.1.1
  2. 实现 RocksDB 分级压缩
  3. 新增 RocksDB 缓存配置项 num-shard-bits 能够从配置文件中读取

4.支持 Blobdb

  • 在 v3.5.0 版本我们支持 BlobDB KV 分离

    #1456

    @lqxhub

  1. 支持 BlobDB KV 分离

5.基于 Codis 的集群模式

  1. 引入 Codis 到 Pika
  2. 引入 Codis 的 CI
  3. 支持 Codis 迁移 slot 命令
  4. 新增是否在 reload 的 slotmigrate 状态

6.可观测性

  1. 新增 Pika 可观测系统 pika_exporter
  2. 新增网络 I/O 流量监控指标
  3. 新增命令统计耗时指标
  4. 新增 estimate_pending_compaction_bytes 度量来分析碎片率指标
  5. 新增 RocksDB 指标

7.云原生部署

  • 在 v3.5.0 版本我们实现了一个 pika-operator mvp 版本,主要实现了 Pika 单实例服务在 K8s 上的快速部署

    #1243 #1330 #1347

    @machinly

  1. 实现 Pika 单例服务在 K8s 上快速部署
  2. 实现了在 MiniKube 环境中部署 Pika
  3. 给 pika-operator 添加 E2E 测试

8.跨平台编译

  1. 支持 MacOS 平台

9.多平台 CI、Go 集成测试、TCL 单元测试、PythonE2E 测试、CTest 单元测试

  1. 新增 CentOS 环境下的 CI
  2. 新增 MacOS 环境下的 CI
  3. 新增 E2E 测试框架
  4. 新增在 Github CI Workflow 中添加 CMake 编译环境
  5. 新增在 TCL 脚本中 populate 方法模拟 Redis debug populate 方法,用以填充测试数据
  6. 新增单测启动脚本
  7. 新增在 blackwidow 中添加 cmake 文件,添加对 blackwidow 的单元测试
  8. 使用 CTest 进行单元测试
  9. 移植 Redis 测试脚本
  10. 在 CI 流程中添加新的任务,以验证 Pika 是否能在 CentOS 系统上成功编译

新增功能

改进

Bug 修复

注意事项