BRPC与UCX集成指南●是socket事件分发的中心 ●使用epoll和边沿触发 ●提供监视一个fd是否可读写,并调用对应socket对象的成员函数1314 Socket 输入事件处理15 Socket options ●是创建socket的参数 ●主要成员: –fd 是socket文件句柄 –void (*on_edge_triggered_events)(Socket*) ●可读事件的回调函数16 SocketOptions.fd为-1表示尚未连接。 ●UcpCm返回的文件句柄实际上是pipe的写端句柄 ●记得brpc的event dispatcher是边沿触发 ●写端句柄永远不会触发可读事件 ●写端句柄第一次epoll会返回可写,可写是brpc判断连接成功的措施 ●UcpCm从来不会写入pipe,如果pipe有可读字节,会打印错误,说明有地方遗漏了修 改。 ●Socket通过关闭 UcpWorker的实现 ●提供Release Connection。 –在UcpCm决定关闭连接时53 UcpWorker的实现 ●使用了ucp active message –当消息很短时,ucx使用内部缓冲提供给brpc(比较快) –当消息很大时,由brpc提供接收缓冲区(rndv,rendezvous) ●阀值可调 –接收和发送使用无锁队列 ●UcpWorker接收时写入UcpConnection的无锁队列0 码力 | 66 页 | 16.29 MB | 6 月前3
Curve元数据节点高可用2.4.3 MDS1、MDS2、MDS3的租约全部过期 4.2.4.4 总结 4.2.5 异常情况四: Etcd集群与MDS1(当前leader)出现网络分区 4.2.5.1 事件一先发生 4.2.5.2 事件二先发生 4.2.6 异常情况4:Etcd集群的follower节点异常 4.2.7 各情况汇总 1. 需求 mds是元数据节点,负责空间分配,集群状态监控,集群节点间的资源均衡 此时会有两件事情发生, 顺序不定: 一是MDS1定期去get Leader/MDS1失败后MDS退出 [事件1] 二是MDS2收到Leader/MDS1被删除,MDS2开始提供服务 [事件2] 如果事件1先发生,那么就是MDS1退出后,MDS2再当选为leader, 如果事件2先发生,那么就是MDS2当选为leader时,MDS1还在提供服务, ,这是有问题的。 出现双主 双主出现的时 server把MDS1注册过来的Key删掉 2. MDS1获取Leader/MDS1失败,退出 3. MDS2和MDS3事件如下: 事件一: MDS2收到Leader/MDS1退出的消息,Campaign返回成功 MDS3收到Leader/MDS2退出的消息,Campagin返回成功© XXX Page 25 of 30 事件二: MDS2 Campagin成功后再次获取竞选时使用的key值Leader/MDS2,获取失败,退出0 码力 | 30 页 | 2.42 MB | 6 月前3
MySQL 兼容性可以做到什么程度问题背景 数据孤岛怎么办? 下游MySQL 怎么做 Binlog Maxwell DebeziumPolarDB-X 完全兼容 MySQL Binlog 可行性 • 多节点产生多个增量事件队列 • 不同队列中事件之间的顺序 • 分布式事务完整性 • DDL 引起的多 Schema 版本问题 • 扩缩容引起的队列增减 ? Maxwell Debezium A: PolarDB-X 全局0 码力 | 18 页 | 3.02 MB | 6 月前3
Curve核心组件之snapshotclone在curve中创建内部快照,并返回快照信息, 然后将快照信息更新到etcd。此时,即返回用 户快照成功,可以进行读写。 • 3.向mds查询快照的元数据,转储快照元数据 块metaObject。 • 4.根据快照元数据信息,转储快照数据块 dataObject。 • 5.调用mds接口,移除curve内部的快照。 • 6.mds调用chunkserver接口,删除内部快照 数据 快照流程: 获取快照元数据 datastore metastore http service clone Task user 快照元数据 2.创建内部快照 5.删除内部快照 快照数据 1.发起快照 SnapshotCloneServer 6.删除内部快照数据快照的元数据和数据组织 字段 类型 说明 uuid string 快照唯一Id user string 所属用户 fileName 使用snapfile中的bitmap标记复制过的PageCHUNKSERVER端快照实现-转储内部快照 a) 打快照后未写过,未触发cow, 无snap file产生,直接读取chunk file b) 打快照后写过,触发了cow, 有snap file, 合并读取 c) 卷从未写过, 两者都没有,返回NOTEXIST 转储内部快照,即读内部快照的三种情况:克隆总体流程 • 1. 用户发起克隆,生成克隆任务,并持0 码力 | 23 页 | 1.32 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核心组件之chunkserverCURVE是高性能、高可用、高可靠的分布式存储系统 • 高性能、低延迟存储底座 • 可扩展存储场景:块存储、对象存储、云原生数据库、EC等 • 当前实现了高性能块存储,对接 openstack 和 k8s 网易内部线上无故障稳定运行500+天 • 已开源 • github主页: https://opencurve.github.io/ • github代码仓库: https://github.com/o OpRequest,将上下文保存在里面,然 后发起Propose提交给raft,等raft apply后再执行后面的操作。 ChunkServer架构CloneManager主要负责克隆相关的功 能,内部是一个线程池,主要负责异 步完成克隆chunk的数据补全。关于克 隆相关的内容将会在快照克隆相关介 绍文档中详细介绍。 ChunkServer架构Metric统计模块使用brpc中的bvar计数 1中对client和chunkserver分别进行了优化,fio性能测试的结果如下表格: Nbd 10盘: Nbd单盘:新版本ChunkServer性能优化 单深度fio测试chunkserver内部时延统计 Raft 日志落盘延迟 优化前性能分析:braft日志落盘时延占据了ChunkServer处理时延的50%以上,因此推断braft日志落盘存在瓶颈 ChunkServer性能优化主要是braft日志落盘优化,包括三个方面:0 码力 | 29 页 | 1.61 MB | 6 月前3
Curve核心组件之mds – 网易数帆陈威Curve 是高性能、高可用、高可靠的分布式存储系统 • 高性能、低延迟 • 可支撑储场景:块存储、对象存储、云原生数据库、EC等 • 当前实现了高性能块存储,对接OpenStack和 K8s 网易内部线上无故障稳定运行一年多 • 已开源 • github主页: https://opencurve.github.io/ • github代码仓库: https://github.com/opencurve/curve 率最大化。SCHEDULE Schdedule的具体实现 Coordinator: 调度模块的对外接口。心跳会将 chunkserver上报上来的copyset信息提交给 Coordinator,内部根据该信息判断当前copyset是否 有配置变更任务执行,如果有任务则下发。 任务计算: 任务计算模块包含了多个定时任务 和 触 发任务。 • 定时任务由调度模块定时触发。 • 触发任务由外部触发,管理员通过工具触发。0 码力 | 23 页 | 1.74 MB | 6 月前3
CurveFs 用户权限系统调研/** * For future use.© XXX Page 14 of 33 */ unsigned reserved[22]; }; 未实现任何权限检查的文件系统通常 应在内部添加此选项,可与参数‘allow_other’一起达到共享文件访问控制。© XXX Page 15 of 33 # LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libjemalloc ext4_super_block 中指定的 s_inode_size, 然而一个 Inode 不一定用到这么多的大小,节点信息只用到 128 个字节的空间。剩下的部分作为扩展文件属性 (Xattr),扩展属性内部是由一个扩展属性头和若干个扩展属性实体项构成的。© XXX Page 29 of 33 // fs/ext4/xattr.h struct ext4_xattr_header { __le32 h_magic;0 码力 | 33 页 | 732.13 KB | 6 月前3
Curve设计要点李小翠Curve 是高性能、高可用、高可靠的分布式存储系统 • 高性能、低延迟 • 可支撑储场景:块存储、对象存储、云原生数据库、EC等 • 当前实现了高性能块存储,对接OpenStack和 K8s 网易内部线上无故障稳定运行一年多,线上异常演练 • 已开源 • github主页: https://opencurve.github.io/ • github代码仓库: https://github.com/opencurve/curve0 码力 | 35 页 | 2.03 MB | 6 月前3
共 15 条
- 1
- 2













