高可用与一致性:构建强一致性分布式数据库 TiDB-沈泰宁
构建强⼀一致性分布式数据库 TiDB 沈泰宁 R & D Engineer @ PingCAP ⾃自我介绍 ⾃自我介绍 • 沈泰宁 • R&D Engineer @ PingCAP • Maintainer • rust-prometheus • grpc-rs • … ⽬目录 • What is TiDB? • How to test? What is TiDB? Single0 码力 | 45 页 | 4.63 MB | 1 年前3超大规模高可用性云端系统构建之禅-蔡超
0 码力 | 40 页 | 6.52 MB | 1 年前3大型Web项目可用性提升 零脚本错误的实战 郭林烁 2017.10
0 码力 | 62 页 | 7.09 MB | 1 年前3声明式自愈系统——高可用分布式系统的设计之道-王昕
有状态分布式系统的高可用问题 一致性 可用性 分区容错性 Paxos Raft 2PC Gossip Ø 处理请求需要特定节点 Ø 必须要考虑数据备份和同步 的问题 Ø 容量扩展和高可用需要不同 解决方案 Ø 服务节点不能随便迁移 CAP Is Not Simply 2 out of 3 Ø 没有分区时,可用性和一致 性要兼得 Ø 经常要考虑的是可用性和一 致性各有一部分 Ø 根据不同设计应用需求有不 根据不同设计应用需求有不 同的组合 Ø 重要的是系统如何恢复到 “最佳状态” 分区容错性 可 用 性 一 致 性 系 统 服 务 等 级 分区容错性 可 用 性 一 致 性 系 统 自 愈 程 度 Look Distributed System in another Way Safety •Something bad will never happen •e.g. received Observe Analyze Action u 观察当前的Realized State u 当前有2个正常运行的Pod u 比较Desired State跟Realized State的差距 u 期望3个Pod u 实际状态2个Pod u 控制器执行动作协调到Desired State u 创建1个新的Pod Ø Controller观察特定领域的 系统状态 Ø 协调Desired0 码力 | 44 页 | 2.47 MB | 1 年前3高性能高可用机票实时搜索系统
⾼性能⾼可⽤机票实时搜索系统 去哪⼉⺴ 梁启康 议题 系统诉求 海海量量数据 设计思路路 搜索框架 报价引擎 待解问题 系统诉求 • 全⽹网价最低 • 航线报价最全 • 实时性最好 • 产品最丰富 • 预定最流畅 ⾯面临问题 航班舱位时刻变动 供应商规则调整密集 航司政策各有不不同 供应商的office权限不不⼀一致 运价规则变化繁多 GDS数据成本不不菲 报价数量量多,内存问题 • 报价源多,不不稳定 • 响应时间要求苛刻 • 搜索条件有热点 • 缓存报价不不准 • 尽量量⽤用原⽣生数据类型,编码 • 回数⽐比例例,异步搜索更更新 • 分批回数 • ⼀一致性哈希,负载均衡 • 供应商粒度,主动更更新 报价引擎 供应商规则 航司运价 航班舱位状态 套餐搭售 + + 低价特惠 商旅优选 头等舱 。。。 报价引擎—供应商规则 报价引擎 • • 规则库 => 索引库 • 规则库写⼊入量量⼤大,集群峰值达20K TPS • 要求同步延迟很低,不不超过60s • 保持顺序⼀一致性,如果先删后插变成 先插后删,数据会不不⼀一致 • 数据最终⼀一致 • 系统⾼高可⽤用 报价引擎 — 组织索引 北北 京 | 上 海海 成 都 | 杭 州 ⼴广 州 | 郑 州 南 宁 | 天 津 … 索引库 DB Sync0 码力 | 26 页 | 1.94 MB | 1 年前3高可用分布式流数据存储设计-李玥
⾼高可⽤用分布式流数据存储设计 李玥 京东集团 技术架构部 架构师 ⾃自我介绍 ⾃自我介绍 李李玥 京东集团 技术架构部 架构师 负责主导设计新⼀一代京东消息中间件系统,专注于流数据的⼀一致性分发和可靠存储、分布式实时计算和⾼高可⽤用分 布式系统架构等技术领域。 从事互联⽹网研发、架构10余年年,曾在浪潮集团、当当⽹网等公司从事架构相关⼯工作。2017年年加⼊入京东,期间提升京 统⼀一的流数据存储平台 我们的愿景 Services Streaming Storage Data 有序 Append only:尾部写入,不变 顺序读取 分布式 高性能 可靠性 顺序一致性 (近乎)无限容量 我们需要什什么样的存储? WHAT Pub/Sub Powered by United Stream Store Streaming Connector Distributed Consistency ⼀一致性 Availability 可⽤用性 Performance 性能 例⼦ ⽤用Redis给MySQL做缓存 ⼤大促限流 Complexity 复杂度 Apache ZooKeeper “程序员都喜欢ZooKeeper,但用户正相反” 可维护性问题 多机房部署时可⽤用性问题 数据容量量有限,集群规模有限 选举恢复速度慢,不不可⽤用时间较⻓长0 码力 | 36 页 | 6.02 MB | 1 年前3降级预案在同程艺龙的工程实践-王俊翔
⽀支付通知 交易易中台 ⽀支付时限任务 出票处理理 队列列故障 已⽀支付订单被取消 ⽀支付超时 订单取消 缺乏降级设计 稳定性之路路到底有多远 如何设计⾯面向容错的系统,如何提升系统的可⽤用性 强弱依赖 • 弱依赖 - 熔断限流,有损服务 • 强依赖 - 备选服务,降级实现 什什么是强弱依赖,如何确定强弱依赖 • ⽤用户是否强烈烈感知 • 核⼼心业务是否有损 service 降级服务统⼀一注册管理理,通过降 级服务质量量数据从整体反映各应 ⽤用的降级点和可⽤用性保障措施 • 降级策略略集中管理理,通过参数 化、配置化、脚本化⽅方式实现线 上策略略的灵活调整 • 依据服务重要程度,从全局制定 分级预案,对降级点进⾏行行预案编 排,并跟踪监控降级链路路的执⾏行行 • 发现潜在故障,多维度验证预案 有效性,评估系统可靠性,提供 降级策略略、参数调整的优化依据 整体架构 Agent 使⽤用ETCD实现注册中⼼心 • 简单 - Go语⾔言编写部署维护简单,定义良好的API • 安全 - SSL认证机制 • 快速 - ⽀支持上万次写⼊入操作 • 可信 - Raft算法保证强⼀一致性,Proxy反向代理理模式⽀支持 • 服务数据存储 • 应⽤用、服务元数据、状态数据,etcd、mysql双份存储 • 后台实时监控应⽤用、服务,实时变更更降级策略略 proxy 服务质量量数据采集0 码力 | 26 页 | 18.67 MB | 1 年前3从百度文件系统看大型分布式系统设计中的定式与创新
System - 持久化存储 百度文件系统架构 设计一个分布式系统要考虑的 • 数据与计算的分片 • 分区故障容忍 • 数据一致性 • 系统扩展性 • 延迟与吞吐 • 成本与资源利用率 • … 数据与计算的分片 • 哈希分片 - 简单、均衡 - 扩容复杂、易用性差 - 一致性哈希、虚拟节点 • 按范围、数据量分 - 使用简单 - 需要管理元数据 - 中心化与去中心化 元数据管理 • 去中心化 影响可用性 • 可以读从节点 - 刚写入的读不到 - 不一致 • 只允许读主节点 - 扩展性受限 数据处理模块 数据接收模块 存储 主 从 从 1. 写入 2. 通知 3. 读取 CAP理论 • 简要历史 - Eric Brewer 1998年提出 - 2002年证明 • CAP三选二 - Consistency 一致性 - Availability 可用性 - Partition W+R>N,就不会丢失更新 • 一致性协议 - Paxos - Raft CAP到CAD的演变 • 必须容忍网络隔离 - CAP->CA • 跨地域的延迟 - CA->CAD/CAL • 多数情况下我们更重视可用性 - CAD->CD • 一致性与延迟的折衷 - 要求强一致的, 容忍延迟 - 要求低延迟的, 选择最终一致 提升系统扩展性 • 架构的可扩展性 - 拆分元数据节点 -0 码力 | 24 页 | 937.45 KB | 1 年前3领域驱动设计&中台/演进式架构的平台化落地
让架构可以快速跟上业务发展与技术⽣生 态变化,并保持稳定 变化 tech ecosystem business ux everything changes all the time! 当事物在以不不可预期 的⽅方式持续改变时, 怎么可能进⾏行行有效的 预先计划? 动态平衡 evolvability accessibility reliability repeatability accountability guided 沿着特定⽅方向(guided)的演进 guided 架构“适应性函数 (Architectural Fitness Functions)” 对⼀一些架构特征提供客观的⼀一致性评估。 fitness functions metrics tests monitors 适应性函数分类 atomic holistic triggered continuous driven Contract Correlation IDs Chaos Monkey incremental change “架构量量⼦子(architectural quantum)”是⼀一个可独 ⽴立变化并部署的单元组件,其具有⾼高功能内聚性, 包含⼀一个系统正常⼯工作所需的所有结构要素。 Checkout component component component database0 码力 | 42 页 | 2.95 MB | 1 年前3刘道平-从0到1,移动政务应用小程序系统架构演化
需根据场景单独对接,如人脸识别、支付等 产品自主性 需依托微信平台 完全自主可控 数据安全性 微信前端数据通过HTTPS传输 全业务流程数据传输监控 使用路径 微信端二级应用 一级入口 从技术的角度来比对,小程序和APP各具优势:小程序具备轻量级、跨平台、成本低、功能强和易传播的特征; 而APP则在产品自主可控、数据全程管控、使用路径更短、功能灵活多样方面更具优势。 6、探索需求 -- 分析可行性,选取合适的需求场景 用户登录后,业务系统不再要求用户登录 9、前端开发 -- 封装公共组件 ,磨刀不误砍柴工 1、封装DGD-SDK公共组件 2、合包工具 3、Taro框架预研 10、API网关 – 限流保护已有系统、提升访问安全性 • 1.业务应用A 向网关申请接入,网关分配paasid、token给业务应用; • 2.业务应用A 使用paasid、token,接入网关,网关进行鉴权;业务应用A在网关上发布服务,或申请授权访问其他服务; 采用etcd 构建微服务框架 etcd是一个分布式的 、一致的key-value存储,主要用途是共享配置和服务发现。Etcd已经在很多分布式系统中得 到广泛的使用。Etcd采用raft协议,来保证一致性。 2.后台服务采用Go开发,围绕业务功能需求,构建后台服务模块 包括个人中心、服务、待办服务、证照服务、公共服务、外部能力、业务办理服务和运营管理服务模块 12、系统部署架构反复评审论证 一、部署架构0 码力 | 35 页 | 15.60 MB | 1 年前3
共 36 条
- 1
- 2
- 3
- 4