BRPC与UCX集成指南
BRPC EventDispatcher ●是socket事件分发的中心 ●使用epoll和边沿触发 ●提供监视一个fd是否可读写,并调用对应socket对象的成员函数1314 Socket 输入事件处理15 Socket options ●是创建socket的参数 ●主要成员: –fd 是socket文件句柄 –void (*on_edge_triggered_events)(Socket*) Listener 获得一个socket fd后,创建通讯Socket。 SocketOptions关键字段: fd, on_edge_triggered_events18 例子:Request输入处理19 Channel创建Socket20 Channel远程调用的发起21 UCX ●NVIDIA Mellanox 开源项目 ●支持RDMA,TCP,Shared memory等 git –curve主干分支 –ucx_am当前rdma分支 ●对brcp的改动不大,加入的模块基本上独立 ●降低了开发难度 ●ucx满足我们对rdma支持的需求 ●已经测试通过了curve验证,取得了不错的性能提升66 Thank You!0 码力 | 66 页 | 16.29 MB | 5 月前3Open Flags 调研
文件status。 每个进程都有个 task_struct 描述符用来描述进程相关的信息,其中有个 files_struct 类型的 files 字段,里面有个保存了当前进程所有已打开文件 描述符的数组,而通过 fd 就可以找到具体的文件描述符:© XXX Page 3 of 23 open & openat 系统调用的区别:如果pathname是绝对路径,则dirfd参数没用。如果pathna O_EXCL: 与O_CREATE一起使用,如果pathname已经存在则返回失败(EEXIST),否则创建文件成功。 : 该参数不会使打开的文件成为该进程的控制终端。如果没有指定这个标志,那么任何一个 输入都将会影响用户的进程。 O_NOCTTY : 如果文件存在,且是个普通文件,具有对该文件的写权限,该flag会将文件长度截断为0。 O_TRUNC : 追加写,每次write都会将file offset0 码力 | 23 页 | 524.47 KB | 5 月前3MySQL 兼容性可以做到什么程度
也从阿里巴巴的“去IOE”运动说起 业务驱动下的分布式技术实践之路 5月17日,支付宝最后一台小型 机下线标志去IOE落下帷幕 首次双十一大考卡顿半分钟后稳 定度过 7月,TDDL+AliSQL首次验证支 持核心库 无法弹性扩展 成本高 去 IOE 商品库去O TDDL首次双十一 “去IOE完成” 天价账单 上云 2009 2011 2012 2013 2013 2015 TDDL 同一连接串 已验证工具或系统 • MySQL Slave(change master) • DTS • Canal/CloudCanal • Maxwell • Debezium • Streamsets • mysql-binlog-connector-java • Flink CDC 性能指标 • 25w rps • 8GB 大事务 • 5s 延迟* 下一步 • 验证更多工具 支持 MySQL Change Master 指令 • 原生作为 MySQL 备库的能力 • 支持 PolarDB-X 之间数据同步 • 支持 DDL 同步 • 支持事务复制、行级复制 已验证工具或系统 • MySQL/MariaDB • PolarDB-X 性能指标 • 1.5w rps • 1s 延迟* 下一步 • 多流 • GTID事务并行复制 • 更多源端完全兼容0 码力 | 18 页 | 3.02 MB | 5 月前3CurveFS S3本地缓存盘方案
© XXX Page 1 of 9 Curvefs-S3 本地写缓存盘方案© XXX Page 2 of 9 背景 方案设计 主要数据结构定义 方案设计思考 POC验证 背景 当前,s3客户端在写底层存储的时候是直接写入远端对象存储,由于写远端时延相对会较高,所以为了提升性能,引入了写本地缓存盘方案。也即要写底层存储时,先把数据写到本地缓存硬盘,然后再把本地缓存 硬盘中的数据异步上传到远端对象存储。 如果客户端挂掉,那么写缓存盘中可能会有残留文件没有上传到对象存储;如果忘记处理,那么这些数据也就相当于是丢失了。 所以在客户端初始化建立的时候,可以先遍历写缓存目录,如果里面有文件,那么则上传到远端对象存储 POC验证© XXX Page 9 of 9 CacheWrite_->AsyncUploadRun(); char* buf = (char*)malloc(1024*4); memset(buf0 码力 | 9 页 | 150.46 KB | 5 月前3Curve支持S3 数据缓存方案
读写缓存分离 缓存层级 对外接口 后台刷数据线程 本地磁盘缓存 关键数据结构 详细设计 Write流程 Read流程 ReleaseCache流程 Flush流程 FsSync流程 后台流程 poc测试验证 背景 基于s3的daemon版本基于基本的性能测试发现性能非常差。具体数据如下: 通过日志初步分析有2点原因© XXX Page 3 of 9 1.append接口目前采用先从s3 get 更新元数据,清理DataCache缓存,DataCacheNum_减1。 5.遍历完一轮DataCache后,获取DataCacheNum值,如果不为0,则继续遍历,如果为0则回到1步骤。 poc测试验证 根据上述设计,完成初步daemon,测试结果如下图 目前看写性能有明显的提升,但时延仍然很高, 。 需要进一步分析0 码力 | 9 页 | 179.72 KB | 5 月前3Curve质量监控与运维 - 网易数帆
小需求(改动小)将实现思路记录到任务管理系统中(JIRA),即可进行开发; 大需求(新模块、复杂功能)需要输出独立设计文档,并进行评审;对于功能或 性能影响较大的功能,还需要进行POC验证;评审和验证通过后才能启动开发 工作。 小需求 实现思路 开发 大需求 设计文档 POC 开发 7/33设计文档规范 设计文档需要具备以下内容: 修订记录 审批记录 系统介绍0 码力 | 33 页 | 2.64 MB | 5 月前3NJSD eBPF 技术文档 - 0924版本
相关⼯作 • extFUSE • google android12 passthrough什么是eBPF • ebpf是不同环境下内核配置, 调试,监控⼯具 • map映射 • 验证器 • Hook • Helper api配置TCP Initial RTO • 场景 内核4.12之前 initial RTO是⼀个常数1s • 应⽤类型BPF_PROG_TYPE_SOCK_OPS0 码力 | 20 页 | 7.40 MB | 5 月前3curvefs client删除文件和目录功能设计
实现简单,开发代价小,且后续可以增加metaserver端打开(session)等机制,向着moosefs的演进也是可以的。 我们的整个架构设计本身就类似chubao方式,这个方案本身是chubaofs的成熟方案,说明是已经被验证过是可行的方案。 缺点: 由于link、unlink等接口涉及跨服务器的两个请求的处理,可能会存在孤儿inode的问题,这一情况,chubaofs是通过运维手段去修复,见遗留问题。moosefs由于单mds,不存在这个问题。0 码力 | 15 页 | 325.42 KB | 5 月前3
共 8 条
- 1