 副本如何用CLup管理PolarDBCLup管理节点2 高可用机制自动切换  数据一致性保证 数据可用性  提供读写VIP  读写高可用 读写分离  多个读库之间负载均衡 负载均衡  读线性扩展  支持分库分表 高扩展性 写 VIP 读 VIP PG (Primary) PG (Standby1) PG (Standby2) PG (Standby3) 数据同步复制 写请求 读请求  安装要求 需要有共享盘:盘的大小需要大于等于20GB CLup的高可用需要VIP 操作系统:CentOS7.X 盘要求有路径:/dev/nvmeXnY  机器需求 4台虚拟机器或物理机 1台做CLup管理节点:内存大于2GB 3台做数据库节点:内存需要大于4GB,最好有反亲和性,即能分布在不同的 物理机上以保证高可用性阿里云的环境中创建Polardb的方法 • 华北2(北京)可用区K • 华南1(深圳)可用区F。 只有某些规格的虚拟机可以挂载Nvme共享盘: • g7se • c7se • r7se 虚拟机要求是按量付费才可以挂载Nvme共享盘 阿里云的VIP功能目前还在内侧阶段,需要申请其他云环境中使用CLup创建Polardb的情况  天翼云 共享盘:所有虚拟机都 可以挂载 有VIP 机器有反亲和性  华为云 有共享盘0 码力 | 34 页 | 3.59 MB | 6 月前3 副本如何用CLup管理PolarDBCLup管理节点2 高可用机制自动切换  数据一致性保证 数据可用性  提供读写VIP  读写高可用 读写分离  多个读库之间负载均衡 负载均衡  读线性扩展  支持分库分表 高扩展性 写 VIP 读 VIP PG (Primary) PG (Standby1) PG (Standby2) PG (Standby3) 数据同步复制 写请求 读请求  安装要求 需要有共享盘:盘的大小需要大于等于20GB CLup的高可用需要VIP 操作系统:CentOS7.X 盘要求有路径:/dev/nvmeXnY  机器需求 4台虚拟机器或物理机 1台做CLup管理节点:内存大于2GB 3台做数据库节点:内存需要大于4GB,最好有反亲和性,即能分布在不同的 物理机上以保证高可用性阿里云的环境中创建Polardb的方法 • 华北2(北京)可用区K • 华南1(深圳)可用区F。 只有某些规格的虚拟机可以挂载Nvme共享盘: • g7se • c7se • r7se 虚拟机要求是按量付费才可以挂载Nvme共享盘 阿里云的VIP功能目前还在内侧阶段,需要申请其他云环境中使用CLup创建Polardb的情况  天翼云 共享盘:所有虚拟机都 可以挂载 有VIP 机器有反亲和性  华为云 有共享盘0 码力 | 34 页 | 3.59 MB | 6 月前3
 Open Flags 调研*how, size_t size); open系统调用会打开pathname指定的文件(如果不存在,如果携带O_CREAT flag则会创建),返回一个文件描述符fd(该fd是进程打开文件描述符表的index),在后续系统调用(read(2)、write(2)、lseek(2)、fcntl(2) etc.)中指向这个打开的文件。打开的文件描述符记录中保存着文件的offset 和 文件status。 Page 17 of 23 一般来说,当调用 open() 系统调用打开文件时,如果不指定 O_DIRECT 标志,那么就是使用缓存I/O来对文件进行读写操作。系统缓存位于VFS和真实文件系统之间,当虚拟文件系统读文件时,首先从缓存中查找要读取的文件内容是否存在缓存中,如果存在就直接从缓存中读取。对文 件进行写操作时也一样,首先写入到缓存中,然后由操作系统同步到块设备(如磁盘)中。对于通用块设备层来0 码力 | 23 页 | 524.47 KB | 6 月前3 Open Flags 调研*how, size_t size); open系统调用会打开pathname指定的文件(如果不存在,如果携带O_CREAT flag则会创建),返回一个文件描述符fd(该fd是进程打开文件描述符表的index),在后续系统调用(read(2)、write(2)、lseek(2)、fcntl(2) etc.)中指向这个打开的文件。打开的文件描述符记录中保存着文件的offset 和 文件status。 Page 17 of 23 一般来说,当调用 open() 系统调用打开文件时,如果不指定 O_DIRECT 标志,那么就是使用缓存I/O来对文件进行读写操作。系统缓存位于VFS和真实文件系统之间,当虚拟文件系统读文件时,首先从缓存中查找要读取的文件内容是否存在缓存中,如果存在就直接从缓存中读取。对文 件进行写操作时也一样,首先写入到缓存中,然后由操作系统同步到块设备(如磁盘)中。对于通用块设备层来0 码力 | 23 页 | 524.47 KB | 6 月前3
 Curve文件系统元数据持久化方案设计Q&A 单靠 redis 的 AOF 机制能否保证数据不丢失? redis 的高可用、高可扩方案? redis + muliraft 存在的问题? redis 改造 vs 自己实现? redis 中哈希表实现的优点? 参考 前言 根据之前讨论的结果,元数据节点的架构如下图所示,这里涉及到两部分需要持久化/编码的内容: Raft Log:记录 operator log Raft Snapshot:将内存中的数据结构以特定格式 STL 中的哈希表(unsorted_map),之后有可能根据需求换成 B+ 树或跳表,但是 redis 中的这些数据结构我们是不需要的 另外,如果 C++ 中的哈希表在后期使用中发现性能不达标的话(特别是在 rehash 扩桶的时候),我们可以把 redis 中的哈希表借鉴过来用(redis 中的哈希实现很独立,单独的文件 t_hash.c,其性能表现也非常好) redis 哈希表实现主要优点参考以下 redis 感觉不是很划算 redis 中哈希表实现的优点? 主要是当哈希表需要扩桶的时候,rehash 过程中 redis 采用了均摊/渐进式的思想,把 rehash 中的性能损耗均摊在每一次 SET/DEL 操作中(如 rehash 总耗时 1 秒,均摊给 100 个请求,那么每个请求只增加延时 10 毫秒),rehash 过程如下: 哈希表渐进式 rehash 的详细步骤: (1)0 码力 | 12 页 | 384.47 KB | 6 月前3 Curve文件系统元数据持久化方案设计Q&A 单靠 redis 的 AOF 机制能否保证数据不丢失? redis 的高可用、高可扩方案? redis + muliraft 存在的问题? redis 改造 vs 自己实现? redis 中哈希表实现的优点? 参考 前言 根据之前讨论的结果,元数据节点的架构如下图所示,这里涉及到两部分需要持久化/编码的内容: Raft Log:记录 operator log Raft Snapshot:将内存中的数据结构以特定格式 STL 中的哈希表(unsorted_map),之后有可能根据需求换成 B+ 树或跳表,但是 redis 中的这些数据结构我们是不需要的 另外,如果 C++ 中的哈希表在后期使用中发现性能不达标的话(特别是在 rehash 扩桶的时候),我们可以把 redis 中的哈希表借鉴过来用(redis 中的哈希实现很独立,单独的文件 t_hash.c,其性能表现也非常好) redis 哈希表实现主要优点参考以下 redis 感觉不是很划算 redis 中哈希表实现的优点? 主要是当哈希表需要扩桶的时候,rehash 过程中 redis 采用了均摊/渐进式的思想,把 rehash 中的性能损耗均摊在每一次 SET/DEL 操作中(如 rehash 总耗时 1 秒,均摊给 100 个请求,那么每个请求只增加延时 10 毫秒),rehash 过程如下: 哈希表渐进式 rehash 的详细步骤: (1)0 码力 | 12 页 | 384.47 KB | 6 月前3
 Curve 分布式存储设计器资源物理隔离 2. zone故障隔离的基本单元 3. server表示物理服务器 4. chunkserver物理服务器上 的服务实例 拓扑结构Curve块存储 1. Curve块存储将虚拟块设备 映射到文件 2. 每个文件包含的chunk分散 在集群的存储节点 3. chunkserver按照故障域分组 4. copyset中的节点属于不同的 故障域 数据组织Curve块存储0 码力 | 20 页 | 4.13 MB | 6 月前3 Curve 分布式存储设计器资源物理隔离 2. zone故障隔离的基本单元 3. server表示物理服务器 4. chunkserver物理服务器上 的服务实例 拓扑结构Curve块存储 1. Curve块存储将虚拟块设备 映射到文件 2. 每个文件包含的chunk分散 在集群的存储节点 3. chunkserver按照故障域分组 4. copyset中的节点属于不同的 故障域 数据组织Curve块存储0 码力 | 20 页 | 4.13 MB | 6 月前3
 Curve核心组件之Client - 网易数帆实现了Curve-NBD,与内核NBD模块进行交互 可以作为容器的数据存储 CSI插件也已经开源: https://github.com/opencurve/curve-csi CLIENT上层应用CLIENT虚拟块设备CLIENT主要功能  提供接口  数据面:AioWrite/AioRead、Write/Read  控制面:Create/Delete、Open/Close、Rename等 0 码力 | 27 页 | 1.57 MB | 6 月前3 Curve核心组件之Client - 网易数帆实现了Curve-NBD,与内核NBD模块进行交互 可以作为容器的数据存储 CSI插件也已经开源: https://github.com/opencurve/curve-csi CLIENT上层应用CLIENT虚拟块设备CLIENT主要功能  提供接口  数据面:AioWrite/AioRead、Write/Read  控制面:Create/Delete、Open/Close、Rename等 0 码力 | 27 页 | 1.57 MB | 6 月前3
 CurveFs 用户权限系统调研name是便于人工记忆,它们和uid、gid是一一对应的关系。 UID(User Identify) GID(Group Identity) 超级用户: UID:0 默认是root用户,UID为0的用户为超级用户, 虚拟用户: UID:1~499 与真实普通用户区分开来,这类用户最大的特点是安装系统后默认就会存在,且默认情况大多数不能登录系统 普通用户: UID:500~65535 具备系统管理员root的权限的运0 码力 | 33 页 | 732.13 KB | 6 月前3 CurveFs 用户权限系统调研name是便于人工记忆,它们和uid、gid是一一对应的关系。 UID(User Identify) GID(Group Identity) 超级用户: UID:0 默认是root用户,UID为0的用户为超级用户, 虚拟用户: UID:1~499 与真实普通用户区分开来,这类用户最大的特点是安装系统后默认就会存在,且默认情况大多数不能登录系统 普通用户: UID:500~65535 具备系统管理员root的权限的运0 码力 | 33 页 | 732.13 KB | 6 月前3
 CurveFS方案设计inode → blk_list {blk1, blk(M*N)} 在文件系统mount的时候,读取所有inode的信息就可以重建出当前哪些block是已经分配的,哪些未分配,因此空间分配信息的表无需另外做持久化。这一信息可以缓存在 client 或者 metaserver。© XXX Page 12 of 14 1. 2. 3. blk的粒度为多少? 从调研的系统来看,如0 码力 | 14 页 | 619.32 KB | 6 月前3 CurveFS方案设计inode → blk_list {blk1, blk(M*N)} 在文件系统mount的时候,读取所有inode的信息就可以重建出当前哪些block是已经分配的,哪些未分配,因此空间分配信息的表无需另外做持久化。这一信息可以缓存在 client 或者 metaserver。© XXX Page 12 of 14 1. 2. 3. blk的粒度为多少? 从调研的系统来看,如0 码力 | 14 页 | 619.32 KB | 6 月前3
 Curve文件系统元数据管理com/happyfish100/libfastcommon/tr ,(LGPL) ee/master/src hash table O(1)~O(n) O(n) + table 需要占用额外空间,性能和hash表的大小有关,最理想可以达到O(1)复杂度,最差O(n)复杂度。 c++ stl unordered_map moose,使用c实现 4、curve文件系统的元数据内存组织0 码力 | 24 页 | 204.67 KB | 6 月前3 Curve文件系统元数据管理com/happyfish100/libfastcommon/tr ,(LGPL) ee/master/src hash table O(1)~O(n) O(n) + table 需要占用额外空间,性能和hash表的大小有关,最理想可以达到O(1)复杂度,最差O(n)复杂度。 c++ stl unordered_map moose,使用c实现 4、curve文件系统的元数据内存组织0 码力 | 24 页 | 204.67 KB | 6 月前3
共 8 条
- 1













