Releases
v1.8.1
功能改进
支持通过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,提供更合理的推荐配置;
You can’t perform that action at this time.