Raft在Curve存储中的工程实践
r a f t 在 C u r v e 存 储 中 的 工 程 实 践 陈威Curve介绍 01 02 raft和braft 03 raft在Curve中的应用 05 Q&A 04 Curve对raft的优化项目背景 Curve是一个 高性能、更稳定、易运维 的 云原生 分布式存储系统,支持 块存储 和 文件存储 2018~2021 Curve块存储 2021~2022 Curve文件存储 • 稳定性挑战 • 算力平台kubernetes的迅速发展 • AI/大数据业务的快速增长 • 存储使用Ceph文件存储/HDFS • 成本/性能挑战 Curve块存储和文件存储均采用raft协议整体架构 • 对接OpenStack平台为云主机提供高性能块 存储服务 • 对接Kubernetes为其提供RWO、RWX等类 型的持久化存储卷 • 对接PolarFS作为云原生数据库的高性能存储 开发者 操作系统 芯片 数据库 云原生 AI训练 大数据 社区生态Curve介绍 01 02 raft和braft 03 raft在Curve中的应用 05 Q&A 04 Curve对raft的优化RAFT协议简介 什么是raft • raft 是一种新型易于理解的分布式一致性复制协议,由斯坦福大学的Diego Ongaro和John Ousterhout提出,《In Search0 码力 | 29 页 | 2.20 MB | 5 月前3SOFAMesh的通用协议扩展
SOFA MESH 的通用协议扩展 Service Mesh Meetup #3 深圳站 邵俊雄(熊啸) 2018.08.25AGENDA • SOFA MESH 介绍 • SERVICE MESH 落地的问题 • SOFA MESH 的通用落地方案 • DNS 服务寻址方案 • X-PROTOCOL 通用协议 • 问答SOFA MESH • 从 ISTIO 克隆并保持同步更新 • 使用 使用 Controller Pattern 通过 CRD 扩展新的能力 • …MESH 落地碰到的问题 • 客户端服务发现与负载均衡无法与 ISTIO 一起工作 • ENVOY 不支持微服务使用的通信协议 • RPC 服务使用的接口,方法,参数语义无法匹配 ISTIO 的路由模 型 • 一个应用上部署了多个 RPC 服务,每个服务有自己的版本 • …ISTIO 控制平面路由的抽象模型 INBOUND DUBBO 服务的路由规则 XDS 适配 • 开发 DUBBO 协议支持SOFA MESH 的统一解决方案 • 采用 Kubernetes Native 方式落地微服务应用 • 使用 INTERFACE 作为 DNS 来寻址服务 • 开发一个通用协议处理框架 • 避免为不同的微服务框架修改 PILOT 代码 • 通过插件的方式按需支持新的协议 • 对应用代码无侵入性 • 为微服务框架提供轻量化客户端落地一个微服务框架需要的工作0 码力 | 28 页 | 4.73 MB | 5 月前313 Istio 流量管理原理与协议扩展 赵化冰
Istio 流量管理原理与协议扩展 赵化冰 赵化冰 腾讯云 服务网格团队 https://zhaohuabing.com Service Mesh Service Mesh Layer 处理服务间通信(主要是七层通信)的云原生基础设施层: Service Mesh 将各个服务中原来使用 SDK 实现的七层通信相关功能抽象 出来,使用一个专用层次来实现,Service Mesh 对应用透明,因此应用 通信安全: 服务身份认证、访问鉴权、通信加密 Proxy Application Layer Service 1 Istio 流量管理 – 概览 • 控制面下发流量规则: Pilot • 数据面标准协议:xDS • 集群内Pod流量出入: Sidecar Proxy • 集群外部流量入口:Ingress Gateway • 集群外部流量出口:Egress Gateway(可选,在一个集中点对外部访问进行控制) Service CLB 对外请求 对外请求(Passthrough/ServiceEntry) 缺省路由 (服务名) 5 Istio 流量管理 – 数据面 – Envoy配置模型和xDS协议 ADS Server LDS RDS CDS EDS Envoy 配置模型的主要概念: • Downstream:连接到 Envoy 的下游 Host,发送请求并接收响应。 • Upstream:0 码力 | 20 页 | 11.31 MB | 5 月前3TiDB v8.5 中文手册
· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 824 7.6.8 输出数据协议· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 7.8.9 创建同步任务时,如果不指定 --config 配置文件,TiCDC 的默认的行为是什么? · · · · · · · · · 953 7.8.10 TiCDC 是否支持输出 Canal 协议的变更数据? · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 953 7.8.11 为什么 TiCDC 到 · · · · · · · 1231 9.7.3 TiFlash_raft_read_index_duration · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 1231 9.7.4 TiFlash_raft_wait_index_duration · · · · · · · ·0 码力 | 5095 页 | 104.54 MB | 9 月前3TiDB v8.4 中文手册
· · · · · · · · 977 9.7.3 TiFlash_raft_read_index_duration · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 977 9.7.4 TiFlash_raft_wait_index_duration · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 1475 12.1.1 了解 Raft 协议 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 2561 14.2.5 Partitioned Raft KV · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·0 码力 | 5072 页 | 104.05 MB | 9 月前3TiDB v8.2 中文手册
· · · · · · · · 912 9.7.3 TiFlash_raft_read_index_duration · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 912 9.7.4 TiFlash_raft_wait_index_duration · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 1408 12.1.1 了解 Raft 协议 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 2552 14.2.5 Partitioned Raft KV · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·0 码力 | 4987 页 | 102.91 MB | 9 月前3TiDB中文技术文档
的水平扩展,按需扩展吞吐或存储,轻松应对高并发、海量数据场景。 分布式事务 TiDB 100% 支持标准的 ACID 事务。 真正金融级高可用 相比于传统主从 (M-S) 复制方案,基于 Raft 的多数派选举协议可以提供金融级的 100% 数据强一致性保 证,且在不丢失大多数副本的前提下,可以实现故障的自动恢复 (auto-failover),无需人工介入。 一站式 HTAP 解决方案 TiDB 作为典型的 Placement Driver (简称 PD) 是整个集群的管理模块,其主要工作有三个: 一是存储集群的元信息(某个 Key 存储在哪个 TiKV 节点);二是对 TiKV 集群进行调度和负载均衡(如数据的迁移、Raft group leader 的迁 移等);三是分配全局唯一且递增的事务 ID。 PD 是一个集群,需要部署奇数个节点,一般线上推荐至少部署 3 个节点。 TiKV Server 负责存储数据,从外部看 (从 StartKey 到 EndKey 的左闭右开区间)的 数据,每个 TiKV 节点会负责多个 Region 。TiKV 使用 Raft 协议做复制,保持数据的一致性和容灾。副本以 Region 为单位进行管理,不同节点上的多个 Region 构成一个 Raft Group,互为副本。数据在多个 TiKV 之 间的负载均衡由 PD 调度,这里也是以 Region 为单位进行调度。 TiDB Server0 码力 | 444 页 | 4.89 MB | 5 月前3Nacos架构&原理
简介 13 Nacos 架构 17 Nacos 总体设计 17 Nacos 架构 17 Nacos 配置模型 21 Nacos 内核设计 28 Nacos ⼀致性协议 28 Nacos 自研 Distro 协议 38 Nacos 通信通道 42 Nacos 寻址机制 56 Nacos 服务发现模块 63 Nacos 注册中心的设计原理 63 Nacos 注册中心服务数据模型 规模:十万级服务/配置,百万级连接,具备强大扩展性。 15 > 简介 Nacos 生态 Nacos 几乎支持所有主流语言,其中 Java/Golang/Python 已经支持 Nacos 2.0 长链接协议,能 最大限度发挥 Nacos 性能。阿里微服务 DNS(Dubbo+Nacos+Spring-cloud-alibaba/Seata/ Sentinel)最佳实践,是 Java 微服务生态最佳解决方案;除此之外,Nacos 接口,简单易用,方便多语言集成。 Console:易用控制台,做服务管理、配置管理等操作。 SDK:多语言 SDK,目前几乎支持所有主流编程语言。 Agent:Sidecar 模式运行,通过标准 DNS 协议与业务解耦。 CLI:命令行对产品进行轻量化管理,像 git ⼀样好用。 业务层 服务管理:实现服务 CRUD,域名 CRUD,服务健康状态检查,服务权重管理等功能。 配置管理:实现配置管0 码力 | 326 页 | 12.83 MB | 9 月前3PingCAP TiDB&TiKV Introduction OLTP
新一代NewSQL分布式关系型数据库 Ti Project (TiDB + TiKV) ● 基于 2013 年 Google Spanner / F1 论文 ● 基于 2014 年 Stanford 工业级分布式一致性协议实现 Raft 论文 概括: 无限水平线性扩展、高并发高吞吐、跨数据中心多活、MySQL 兼容的真正意义上的分布式数据库 ● 我们是全球仅有的在该领域进行技术创新的两家公司之一(对标美国 CockroachDB) 通过简单的增加节点,提供无上限的、线性扩展的的高并发、高吞吐的处理能力 ,卓越的集群处理能力。同时提供跨行事务处理能力。 我们的数据库能解决什么问题 - 2 ● 高可用、跨数据中心多活 分布式算法 Raft 自动完成多副本写入、数据分片(region)的拆分、聚合、重分布 ,从而保证数据高可用,天然支持跨数据中心多活且可配置。 ● 底层数据打通,集中管控 通过增加节点即可获得无限数据存储能力,从架构层面轻松支持多个业务系统 JDBC) TiDB TiKV RPC MySQL Protocol F1 Spanner Applications TiDB ● 开源 F1 实现 ● 无状态的分布式 SQL 层 ● MySQL 协议兼容 ● 针对分布式场景的执行计划,优化器 ○ Push-down / MPP ● Online DDL ○ 业务不中断,进行表结构变更 TiDB 逻辑架构 ● 支持关系型的表结构 ● 全局一致索引0 码力 | 21 页 | 613.54 KB | 5 月前3Curve 分布式存储设计
pgbench 延迟降低21% TPS提升26% 研究现状Curve块存储 1. 分布式块存储服务 2. KVM块存储服务 3. iSCSI协议 4. 容器云块存储(CSI) 应用场景Curve块存储 1. 高可用性/高可靠性 (易运维) 2. RAFT一致性协议 3. CopySet分配算法 4. 拓扑结构 5. 高性能 6. chunkfilepool (降低写放大) 7. data chunkserver按照故障域分组 4. copyset中的节点属于不同的 故障域 数据组织Curve块存储 IO流程Curve块存储 1. chunkserver负责数据的存储 2. RAFT协议保持数据的一致 性 3. chunkfile pool降低元数据开 销 Chunkserver服务Curve块存储 性能设计Curve块存储 在线升级设计 1. 客户端分成NebdClient与 性能 1. 完善RDMA/SPDK方案,发布稳定版本 2. 更高性能硬件选型、适配及性能调优 3. 大文件读写性能优化,RAFT优化,降低写放大 3. 功能 1. 文件存储支持回收站/生命周期管理/配额/用户权限等 2. 支持NFS、CIFS/SMB、HDFS等协议 3. 块存储支持按存储池创建卷Curve 社区介绍 1. Curve的成长离不开社区贡献者的支持和参与。非常欢迎广大0 码力 | 20 页 | 4.13 MB | 5 月前3
共 112 条
- 1
- 2
- 3
- 4
- 5
- 6
- 12