Curve核心组件之Client - 网易数帆用户调用接口,发起IO请求 2. AioWrite将请求封装成io task并放入任务队列 3. 放入任务队列后,异步请求发起成功,返回用户 IO拆分线程 4. 从任务队列取出任务后进行拆分 5. 拆分过程依赖元数据,可能会通过MDSClient向 MDS获取 6. 拆分成的子请求放入队列CLIENT IO线程模型 IO分发线程 7. 从队列中取出子请求准备发送 8. 发送依赖复制组leader,可能会向 Client接收到IO请求后,直接发送 异步RPC(在用户线程) 发送异步4K RPC的平均延迟在11.26us, 这种情况下单线程只有 89055 iops 发送RPC阻塞了用户线程,导致iops下降 优化点: 增加队列,用户请求放入队列,由后台线 程负责发送 86.4K -> 130KCLIENT性能优化 发送RPC耗时较长 增加发送线程个数 在bthread协程中使用std::mutex/spinl0 码力 | 27 页 | 1.57 MB | 6 月前3
CurveFS S3本地缓存盘方案同时,缓存清理模块会定时检查本地硬盘缓存目录容量情况,如果容量已经达到阈值了,则进行文件的清理工作。 本地缓存盘的异步上传 工作队列: 该队列中保存缓存盘中的待上传文件名 工作线程: 遍历工作队列(队列swap),从缓存盘目录读取到文件内容并上传到对象存储。文件上传到对象存储后,直接删除。 工作队列做好互斥管理 异常管理 如果客户端挂掉,那么写缓存盘中可能会有残留文件没有上传到对象存储;如果忘记处理,那么这些数据也就相当于是丢失了。0 码力 | 9 页 | 150.46 KB | 6 月前3
MySQL 兼容性可以做到什么程度Binlog Maxwell DebeziumPolarDB-X 完全兼容 MySQL Binlog 可行性 • 多节点产生多个增量事件队列 • 不同队列中事件之间的顺序 • 分布式事务完整性 • DDL 引起的多 Schema 版本问题 • 扩缩容引起的队列增减 ? Maxwell Debezium A: PolarDB-X 全局 Binlog:完全兼容 • 与 MySQL Binlog0 码力 | 18 页 | 3.02 MB | 6 月前3
BRPC与UCX集成指南brpc(比较快) –当消息很大时,由brpc提供接收缓冲区(rndv,rendezvous) ●阀值可调 –接收和发送使用无锁队列 ●UcpWorker接收时写入UcpConnection的无锁队列 ●brpc发送时写入UcpWorker的无锁发送队列5455 UcpWorker实现 ●提供命令行参数调整ucp worker的行为 –--brpc_ucp_worker_busy_poll为true时使用busy0 码力 | 66 页 | 16.29 MB | 6 月前3
TGT服务器的优化好处是各target上的CPU使用由OS负责分配,CPU分配粒度更细 • 也可以多个卷的lun都分配到一个target上,这样多个卷共享一个target, 限制使用一个CPU。 • 管理平面不变。主线程里的事件循环及问题: 管理面是主线程,登录,增、删、改target,lun,session,connection,params 都在主线程,而target epoll 线程也要使用这些数据,多线程冲突,数据一0 码力 | 15 页 | 637.11 KB | 6 月前3
Curve文件系统元数据持久化方案设计单靠 redis 的 AOF 机制能否保证数据不丢失? 不能,因为 AOF 与 SET/DEL 这些操作不是同步进行的,即使刷入文件配置项 开启最高级别的 always 选项,也有可能丢失一个事件循环的数据,实现如下: appendfsync // : call(...) // propagate(...) feedAppendOnlyFile(cmd, ...)0 码力 | 12 页 | 384.47 KB | 6 月前3
Curve支持S3 数据缓存方案unkCacheMap_不为空,则表示F lush的过程中有新的cache加入,则需要进行合并,合并的规则是新的cache如果和老的cache有重叠则覆盖老的cache。 FsSync流程 1.循环获取FileCacheManager,执行Flush函数。© XXX Page 9 of 9 后台流程 1.在FsCacheManager中增加一个DataCacheNum_字段,如果该字段为00 码力 | 9 页 | 179.72 KB | 6 月前3
CurveFS S3数据整理(合并碎片、清理冗余)如果标记删除到实际删除之间的时间间隔非常短, 并且在标记删除前已经开始了整理任务, 可能会出现边删除边整理的状态(出现概率较小) 可以在实际删除前检查当前整理的inode列表, 如果在列表里就暂时跳过(同步删除)/重新丢进删除队列(异步删除) 或者就不管, 处理一下报错, 让后续的应该会开发的数据清理工具来删除, 因为出现这个冲突的概率比较小 truncate: 只进行元数据里len的改变, 触发一下compact就行,0 码力 | 3 页 | 101.58 KB | 6 月前3
共 8 条
- 1













