Skip to content

v1.8.1

Compare
Choose a tag to compare
@qinzuoyan qinzuoyan released this 30 May 10:53
· 5732 commits to master since this release

功能改进

  • 支持通过config sync定期更新app envs;
  • 冷备份在删除过期文件夹时,调用FDS接口选择不进入回收站,实现彻底删除,以支持GDPR;
  • MetaServer的load balance支持黑名单机制,以避免往特定节点增加备份;
  • 改进manual compact,通过app envs方式控制执行,支持periodic和once两种触发模式,并支持指定options;
  • 在pegasus_server_impl的读写操作打印日志时增加打印远程RPC地址,以方便定位问题;
  • 增加pegasus_event_listener,用来监听rocksdb的flush和compaction事件,并增加统计flush和compaction的perf-counter;
  • 增加partition killer,支持随机关闭replica,提高kill测试的覆盖能力;

Bug修复

  • 修复replica close时并发存取app造成非法访问core的问题;
  • 修复info collector中将stat_timer的间隔时间单位用错的bug;
  • 修复configuration中处理uint64类型可能溢出的bug;

性能优化

  • 默认开启rocksdb的bloom filter功能,bits_per_key设置为10,读操作的延迟下降约10%;
  • 默认开启rocksdb的block cache功能,使用LRUCache,capacity设置为10GB;
  • 程序动态链接tcmalloc库,整体性能提升10%~20%;
  • 通过随机化设置rocksdb的write_buffer_size和level0_file_num_compaction_trigger配置项,避免因为同时触发flush和compaction执行而形成CPU和IO使用高峰,提升服务稳定性;

rdsn模块的化简与重构

  • 移除rpc_address相关的C接口;
  • 引入rpc_holder工具类,方便编写RPC交互逻辑;
  • 引入pipeline机制,方便编写更清晰和易测试的异步交互逻辑;
  • 重构tls memory allocator,移除无用的memory provider;
  • 移除rdsn的layer2层的RPC_L2_CLIENT_READ/WRITE,简化rpc code的注册与分派逻辑;
  • 引入format库,提供ddebug_replica系列日志宏,简化日志打印;
  • 引入replica_base类,提供replica的get_gpid()和replica_name()公共方法;
  • 移除task和task_tracker相关的C接口,并用future_task替换原来的safe_late_task,提升代码可读性;
  • 重构configuration相关的API;
  • 重构pegasus_server_impl的写流程,使代码结构更清晰;

rocksdb模块

  • 为pegasus-rocksdb项目增加travis-ci支持;
  • 改进CompactRange函数,在ReFitLevel完成后打印lsm_state,帮助进行性能分析;
  • 改进FlushMemTable函数,不再返回NoNeedOperate错误码;

Shell工具

  • 增加操作app envs的相关命令,包括get_app_envs/set_app_envs/del_app_envs/clear_app_envs;
  • 改进ls命令,不再显示envs列;
  • 改进app命令,修改health状态的统计项;
  • 改进app_stat命令,重新整理统计数据列,调整对齐格式;
  • 改进help命令,支持帮助信息的自动换行;

脚本工具

  • 增加pegasus_set_usage_scenario.sh,用于设置表的使用场景,支持normal/preper_write/bulk_load三种场景;
  • 改进download-thirdparty.sh,支持在下载第三方库时检查md5sum;
  • 增加pegasus_offline_node_list.sh,用于下线一批机器;
  • 改进pegasus_manual_compact.sh,支持periodic和once两种触发模式,支持指定options;
  • 改进pack_server.sh,不再打包pegasus_rproxy程序;

其他

  • 为pegasus项目增加travis-ci支持;
  • 将pegasus项目的默认编译模式从debug改为了release;
  • 将rdsn共享库的名字由dsn_layer2_stateful_type1改为dsn_replica_server;
  • 修复因为缺少__STDC_FORMAT_MACROS宏引发的编译问题;
  • 修改src/server/config.ini,提供更合理的推荐配置;