新一代云原生分布式存储
易用性:跨平台,超融合,弹性 小型主机 容量有限分布式存储的分类 按照各种应用场景所需的存储接口分类 对象 存储 文件 存储 块存储 接口为简单的 Get、PUT、DEL 和其他扩展 通常意义是支持 POSIX 接口 传统意义的文件系统: Ext4 对指定地址空间进行随机读写 传统意义的块存储:磁盘分布式存储的要素 如何构建分布式文件系统? 以分布式块存储为例。 •提供大容量的块设备 •可以在指定地址空间内随机读写 —— 多副本/EC 服务不可用时 间 数据一致性 —— 一致性协议 如何保证数据不丢?如何保证各种硬件故障的时候读 写都正常? 可扩展性 —— 和数据分布的方式相关 所用容量都用完后,可以新增机器扩展容量分布式存储的要素 — 数据分布 无中心节点:哈希算法 INPUT (Offset, Len) HASH HASH mod 72 (DiskNums) (0, 4MB) 163342856 io抖动(一致性协议): 异常场景(比如阵列卡一致性巡检,坏盘,慢盘,网络异常),服务升级 • 性能差(一致性协议):在通用硬件下,无法支撑数据库、kafka等中间件对存储性能和稳定性要求 • 容量不均衡(数据放置):集群各节点容量不均衡需要人为干预 • 上述问题和架构涉及、核心功能的选型有关,在已有开源版本上改进代价很大分布式存储介绍 01 存储的发展 | 分布式存储的分类 | 分布式存储的要素 020 码力 | 29 页 | 2.46 MB | 5 月前3CurveFS S3本地缓存盘方案
条件后,那么则准备持久化。 如果未配置本地硬盘作为写缓存,那么直接持久化到远端的对象存储;如果配置了本地硬盘作为写缓存,那么则尝试先写入本地硬盘写缓存目录。 写本地硬盘缓存目录之前先判断缓存目录容量是否已达到阈值,如果已经达到阈值,那么则直接写入到远端对象存储;否则,则写入到本地硬盘写缓存目录中。文件写入本地硬盘写缓存目录后,从本地硬盘读目录© XXX Page 4 of 9 做一个硬链接链接到该文件。 本次io在本地硬盘写入好之后,异步上传模块会适时把本地硬盘写缓存目录中的文件上传到远端对象存储集群,上传成功后,删除本地写缓存目录中的对应文件。 同时,缓存清理模块会定时检查本地硬盘缓存目录容量情况,如果容量已经达到阈值了,则进行文件的清理工作。 另外,异常管理模块处理客户端挂掉后的文件重新上传问题。 主要数据结构定义 class DiskCacheManagerImpl : public DiskCacheManager{ 这样,写缓存目录中的文件上传完之后就可以直接删除了,那么该文件的读缓存还是存在的。 缓存盘空间管理 当缓存文件内容达到阈值时,停止向本地缓存盘写入。 同时,缓存清理模块会定时检查本地硬盘缓存目录容量情况,如果容量已经达到阈值了,则进行文件的清理工作。 本地缓存盘的异步上传 工作队列: 该队列中保存缓存盘中的待上传文件名 工作线程: 遍历工作队列(队列swap),从缓存盘目录读取到文件内容并上传到0 码力 | 9 页 | 150.46 KB | 5 月前312-从数据库中间件到云原生——Apache ShardingSphere 架构演进-秦金卫
Apache Dubbo/ShardingSphere PMC 秦金卫(kimmking) 2020-12-04 20:00 云 原 生 学 院 # 1 2 目录 1.数据库框架:从数据库的性能与容量到数据库框架技术的产生 2.数据库中间件:从框架技术到分布式的数据库中间件技术 3.分布式数据库:从数据库中间件技术发展到分布式数据库 4.数据库网格:数据库与微服务、云原生的发展关系 5.数据库解决方案:如何基于 生态创建数据库解决方案 1.数据库框架 1.数据库框架 摩尔定律失效 分布式崛起 1.数据库框架 随着数据量的增大,读写并发的增加,系统可用性要求的提升,单机 MySQL面临: 1、容量有限,难以扩容 2、读写压力,QPS过大,特别是分析类需求会影响到业务事务 3、可用性不足,宕机问题 1.数据库框架 1.数据库框架 计算机领域的任何问题都可以通过增加一个中间层来解决。 Cockroach DB …… 3.分布式数据库 1.水平扩展性 2.计算存储分离 3.分布式事务 4.多副本机制 5.SQL接入支持 6.云原生支持 容量 性能 一致性 可高用 易用性 伸缩性 代替单机数据库(注意,主要解决容量问题)。 3.分布式数据库 1、需要较多的机器资源; 2、对于替换数据库技术的公司,代价较大,放弃多年积累; 1)引入框架,研发人员 2)引入中间件,研发人员+运维人员=》研发团队0 码力 | 23 页 | 1.91 MB | 6 月前3分布式NewSQL数据库TiDB
什么是TiDB 产品优势 产品优势 ⾼度兼容 MySQL 动态扩展 分布式事务 HTAP 真正⾦融级⾼可⽤ 适⽤场景 适⽤场景 对数据⼀致性及⾼可靠、系统⾼可⽤、可扩展性、容灾要求较⾼的⾦融⾏业属性的场景 对存储容量、可扩展性、并发要求较⾼的海量数据及⾼并发的 OLTP 场景 Real-time HTAP 场景 数据汇聚、⼆次加⼯处理的场景 真正⾦融级⾼可⽤ UCloud 云上 云上 TiDB 架构⽰意图 架构⽰意图 障时系统可⾃动进⾏切换,确保系统的 RTO <= 30s 及 RPO = 0。 对存储容量、可扩展性、并发要求较⾼的海量数据及⾼并发的 对存储容量、可扩展性、并发要求较⾼的海量数据及⾼并发的 OLTP 场景 场景 随着业务的⾼速发展,数据呈现爆炸性的增⻓,传统的单机数据库⽆法满⾜因数据爆炸性的增⻓对数据库的容量要求,可⾏⽅案是采⽤分库分表的中间件产品或者 NewSQL 数据库替代、 采⽤⾼端的存储设备等,其中性价⽐最⼤的是 采⽤⾼端的存储设备等,其中性价⽐最⼤的是 NewSQL 数据库,例如:TiDB。TiDB 采⽤计算、存储分离的架构,可对计算、存储分别进⾏扩容和缩容,计算最⼤⽀持 512 节点,每个节点最 ⼤⽀持 1000 并发,集群容量最⼤⽀持 PB 级别。 Real-time HTAP 场景 场景 随着 5G、物联⽹、⼈⼯智能的⾼速发展,企业所⽣产的数据会越来越多,其规模可能达到数百 TB 甚⾄ PB 级别,传统的解决⽅案是通过0 码力 | 120 页 | 7.42 MB | 6 月前322-云原生的缘起、云原生底座、PaaS 以及 Service Mesh 等之道-高磊
杂性和运维难度 • 按实际调用量进行自动的容量扩缩 • 专注业务逻辑开发,无须关心基础设施 • 只需要将视频存入存储,接入极其简单,达到极致业务体验 • 按需加载资源,使用时调度,不使用时自动回收,达到极致 成本的体验。 • 并行执行,可以同时出产不同维度业务结果,达到极致性能 体验。比如上图,同时从不同维度进行业务处理。 • 减少了传统微服务体系中容量规划和服务治理的负担,专注 于业务本身。 • Scheduler Gateway Gateway 传统Gateway在云原生高弹性环境下容易变成单点故障区,或者流量瓶 颈点,所以需要根据业务规模进行容量和稳定性治理,那么就需要通 过定制化一套CRD声明管理控制器,控制器根据POD实例情况来通知 k8s调度对齐进行容量和稳定性治理 网关上容器云之后,面临一个隐含的问题,就是K8s或 者其他容器云都具备自己的流量网关,而ServiceMesh 也有自己的网关组件(比如Istio的Istio0 码力 | 42 页 | 11.17 MB | 6 月前3CurveFS Copyset与FS对应关系
metaserver 子模块拆分 8、inode和dentry的内存估算 8.1 一台机器上能存放多少个inode和dentry 8.2 一台机器上建议的copyset数量 8.3 每个copyset建议管理存储容量的大小 1、背景 curvefs使用raft作为元数据一致性的保证。为了提高元数据的可扩展性和并发处理能力,采用元数据分片的方式管理inode和dentry的元数据。inode的分片依据是fsid 用最多的空间。这里忽略掉其他次要的因素,考虑全是空间碎片信息,每条记录只保存4KB数据,可以保存多少元数据。 选取占用空间更多的S3ChunkInfo。按照一台metaserver 256GB内存容量全部用来保存空间分配计算。可以的保存chunkinfo 条数 = 256GB / 64B = 4G。可以保存的文件的大小为4G * 4KB = 64TB的空间。 inode和dentry按照1: vefs也可按照curve的规格,每个机器上管理100个copyset。实际上这个值通过配置文件控制,到时候可以根据测试结果确定合适的copyset的数量。 8.3 每个copyset建议管理存储容量的大小 如果有100个的copyset,每个copyset管理2GB大小的元数据。0 码力 | 19 页 | 383.29 KB | 5 月前324-云原生中间件之道-高磊
高性能 存在性能瓶颈 类似日志方式的顺 序写,性能高 易用程度 封闭体系,集成各 类优秀能力较差 集成能力强,多模 态接口,兼容各类 协议 可用性、稳定性 需要强大的旁路运 维能力 简化运维、自动化 容量和故障转移 云原生数据库其特点,使得应用场 景会更加广泛 高级能力-云原生数据库-应用的基石-2-技术架构 Application Application Application Read 供了一个范本,并不是原封不动的迁移就变成云原生 高级能力-云原生数据库-应用的基石-3-场景 数据源 数据日志 消息数据 订单数据 云原生 DB 高并发写入 用户 MR 云DB 用户 日志消息类数据实时分析 支持企业低成本、大容量存储和查询各类日志、消息、交易、用户行为、画像等 结构化/半结构化数据,支持高吞吐量实时入库及数据实时查询,实现数据资源 智慧化运营。 优势 低成本存储: 支持PB级数据存储 高并发: 千亿数据实时分析 (Serverless化) 在过去,每家公司自建消息中间件集群,或是自研的、或是开源的,需要投入巨大的研发、运维成本。云原生时代的消息服务借助Serverless等弹 性技术,无需预先Book服务器资源,无需容量规划,采取按量付费这种更经济的模式将大幅度降低成本。 易用性 (Mesh化) 在云原生时代,消息服务第一步将进化成为一种所见即所得、开箱即用的服务,易用性极大的提高。接下来,消息服务将以网格的形式触达更复0 码力 | 22 页 | 4.39 MB | 6 月前3TiDB中文技术文档
节点,第一台 TiDB 机器同时用作监控机 默认情况下,单台机器上只需部署一个 TiKV 实例。如果你的 TiKV 部署机器 CPU 及内存配置是部署建议的两倍 或以上,并且拥有两块 SSD 硬盘或单块容量超 2T 的 SSD 硬盘,可以考虑部署两实例,但不建议部署两个以上实 分配机器资源,编辑 inventory.ini 文件 Ansible 部署方案(强烈推荐) - 211 - 本文档使用 书栈(BookStack = CPU 核数 0.8。 iii. 如果多个 TiKV 实例部署在同一块物理磁盘上,需要修改 conf/tikv.yml 中的 capacity 参数: capacity = 磁盘总容量 / TiKV 实例数量,例如 “100GB” 部署目录通过 deploy_dir 变量控制,默认全局变量已设置为 /home/tidb/deploy ,对所有服务生效。如数据盘挂 载目录为 书栈(BookStack.CN) 构建 如果你指定了配置文件,TiKV 会首先读取配置文件的配置。然后如果对应的配置在命令行参数里面也存在, TiKV 就会使用命令行参数的配置来覆盖配置文件里面的 TiKV 存储数据的容量 默认: 0 (无限) PD 需要使用这个值来对整个集群做 balance 操作。(提示:你可以使用 10GB 来替代 10737418240,从 而简化参数的传递) TiKV 数据存储路径 默认:0 码力 | 444 页 | 4.89 MB | 6 月前3深入 Kubernetes 的无人区-蚂蚁金服双十一的调度系统
Part 1:蚂蚁金服的Kubernetes现状 非云 资源 云化 资源 基础 服务 蚂蚁 k8s 核心 CRI Kubernetes API Server 极速交付 分时复用 弹性容量 资源画像 规模化调度 高可用容灾 可视化 服务 Cluster Control Panel 在线应用 计算型混部任务 CSI CNI Device Plugin runc nanovisor 2:资源分时调度 Kubernetes Node 分时调度 Agent Pod 资源 Node 分时调度 Agent Pod 资源 Node 分时调度 Agent Pod 资源 容量平台 监控平台 巡检平台 流量控制 流量平台 配置中心 流量控制器 流量状态CRD 资源状态CRD 资源及流量控制CRD 资源控制 分时调度 控制器 Pod 资源 Pod 资源0 码力 | 19 页 | 2.18 MB | 5 月前3Curve 分布式存储设计
CURVE I/O 抖动Curve文件存储 1. 元数据服务 2. 高性能 3. 可扩展易运维 4. 云原生 设计目标Curve文件存储 1. 兼顾性能与容量的机器学习 场景 2. 快速跨云弹性发布的业务 3. 低成本大容量需求的业务 4. 中间件冷热数据自动分离 5. S3和POSIX统一访问需求 主要挑战和支持场景Curve Roadmap 1. 架构 1. 文件存储支持分布式缓存、完善冷热数据分层存储能力0 码力 | 20 页 | 4.13 MB | 5 月前3
共 22 条
- 1
- 2
- 3