高可用与一致性:构建强一致性分布式数据库 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.100 码力 | 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 Controller观察特定领域的 系统状态 Ø 协调Desired State跟 Realized State之间的差 距,维持最终一致性 Ø 定期处理集群中的事件 Ø 系统必须是幂等的 控制器的设计理念 控制逻辑应该只依赖于当前状态 假设任何错误的可能,并做容错处理 尽量避免复杂状态机,逻辑不要依赖无法监控的内部状 态 每个模块都可以在必要时优雅地降级服务 每个模块都可以在出错后自动恢复0 码力 | 44 页 | 2.47 MB | 1 年前3
微服务和Service Mesh 在多个行业落地实践路由 路由 插件 分流 流量 镜像 维护 开关 API 监控 认证 鉴权 治理 文档 报表 微服务框架 (服务治理) 服务 目录 注册 发现 限流 熔断 降级 容错 路由 负载 均衡 参数 分流 拓扑 依赖 配置 中心 服务 监控 服务 告警 认证 鉴权 统计 概览 知识 库 APM (应用运行期监控) 运行时 拓扑 测试,生产镜像仓库分离,自 动同步 开发测试环境自动部署,生产 环境手动触发 持续集成 www.163yun.com 微服务框架 (服务治理) 服务 目录 注册 发现 限流 熔断 降级 容错 路由 负载 均衡 参数 分流 拓扑 依赖 配置 中心 服务 监控 服务 告警 认证 鉴权 统计 概览 知识 库 服务 告警 监控 大屏 账户 审计 注册发现 www.163yun.com 网易容器平台优势 集群规模大:30000+节点 生产检验时间长:国内首个K8S公有云容器平台稳定运行1000+天 全球首批通过K8S一致性认证 基于OVS的网络性能优化 基于Ceph的存储性能优化 多集群统一管理 www.163yun.com 某物流企业 www.163yun.com 线上 系统A API网关0 码力 | 39 页 | 3.06 MB | 1 年前3
降级预案在同程艺龙的工程实践-王俊翔消息队列列 ⽀支付通知 交易易中台 ⽀支付时限任务 出票处理理 队列列故障 已⽀支付订单被取消 ⽀支付超时 订单取消 缺乏降级设计 稳定性之路路到底有多远 如何设计⾯面向容错的系统,如何提升系统的可⽤用性 强弱依赖 • 弱依赖 - 熔断限流,有损服务 • 强依赖 - 备选服务,降级实现 什什么是强弱依赖,如何确定强弱依赖 • ⽤用户是否强烈烈感知 • 核⼼心业务是否有损 serviceA serviceC serviceC- degrade 弱依赖 强依赖 强依赖 备选服务 熔断、限流 降级 业界解决⽅方案 - HYSTRIX Netflix开源的一款容错框架,支持多种降级熔断技术 资源隔离 断路路器器 降级操作 请求合并 请求缓存 实践过程中遇到的问题 • 业务改造成本⾼高,代码耦合,维护成本增⾼高 • 固化策略略,需线下修改代码,测试,发布,线上应急策略略响应不不 降级服务统⼀一注册管理理,通过降 级服务质量量数据从整体反映各应 ⽤用的降级点和可⽤用性保障措施 • 降级策略略集中管理理,通过参数 化、配置化、脚本化⽅方式实现线 上策略略的灵活调整 • 依据服务重要程度,从全局制定 分级预案,对降级点进⾏行行预案编 排,并跟踪监控降级链路路的执⾏行行 • 发现潜在故障,多维度验证预案 有效性,评估系统可靠性,提供 降级策略略、参数调整的优化依据 整体架构 Agent0 码力 | 26 页 | 18.67 MB | 1 年前3
QCon北京2018-业务高速发展下的互联网金融系统架构演变-张现双+用户和业务持续上量,业务快速发展 扩张阶段 业务和团队规模增长迅速,多元化发展,对效率和质量提出更高要求 没有一种� 架构能� 包打天下 DB Server PC WEB 容错性、稳定性差 技术债迅速积累 代码安全带来挑战 初始,� 效率优先 成长,移动后台旁路追赶 DB主 Server PC WEB AND/IOS/H5/Open 静态站 网贷服务 -------Joe Armstrong 关键点 分而治之,缩小竞争面 加速资源交换,更快响应 共享资源串行操作 数据一致性(脏读,丢失更新等) 业务纵向拆分,化整为零 资源拆分,横向扩展 cache,index,partition parallel non-blocking sync、lock,cas stock=(incrby stock –X)� if (stock<0){incrby stock X;}� else { //submit}� 数据竞争� [NoSql方案示例2] 存储+运算,一致性保证 高可用措施保障 兜底策略 Redis+(lua/module)方案: local stock = redis.call("GET","STOCK")0 码力 | 42 页 | 19.96 MB | 1 年前3
分布式异地多活架构实践之路来自:中国科学院《互联网周刊》 大纲 • 产品发展中遇到的问题 • 异地多活存在哪些挑战 • 讯飞输入法异地多活解决方案 • 实际应用效果 • 未来规划 单机房遇到的问题 可用性低 响应时间慢 系统扩容难 可用性低 响应时间慢 系统扩容难 大纲 • 产品发展中遇到的问题 • 异地多活存在哪些技术挑战 • 讯飞输入法解决方案 • 实际应用效果 • 后续规划 技术挑战 几十毫秒的延迟; 单点写,多点读) 非核心业务 老版本兼容服务、运营活动、配置、管 理平台、官网、论坛等 N/A 本地模式 (单点读写) 设计思路 核心业务异地多活 精准流量调度 数据同步 多元化 最终一致性 依赖关系优化 配套系统支撑 主 从 多 主 汇 聚 混 合 场景区分 封装屏蔽细节 容量合理规划 当前总体架构 合肥 北京 广州 HTTPDNS 智能DNS GSLB GSLB 智能DNS 合肥IDC 北京IDC 广州IDC 弱依赖,可控 SDK封装: 重点域名预解析 缓存域名解析结果(sp、 wifi名) 出错或快过期异步解析 合法IP动态下发 IP请求结果统计 多级兜底容错 解析IP合法,IP请求 解析IP不合法,固定IP请求 GSLB HTTPDNS 精准流量调度-用户 智能DNS 路由服务 路由服务 路由服务 北京 IDC 合肥 IDC 广州 IDC0 码力 | 36 页 | 1.66 MB | 1 年前3
数字货币交易系统架构 Python实现 黄毅amount: Decimal price: Decimal user: int class Trade(NamedTuple): taker: Order # 流动性提取方 maker: Order # 流动性提供方 def id(self): return (self.taker.id, self.maker.id) def price(self): 交易系统架构设计 交易系统架构设计-设计目标 • 吞吐量5w TPS, 延迟10ms • 能睡个好觉(数据持久化,数据最终一致性,容错) • 设计简单,运维方便 交易系统架构设计-关键点 • 内存撮合服务的状态持久化和高可用 • 消息处理顺序的保证 • 异步服务之间消息传送的可靠性 • K线:实时的分组聚合操作 • 高效利用关系数据库 交易系统架构设计-架构图 撮合 资金清算 行情推送0 码力 | 24 页 | 799.65 KB | 1 年前3
付钱拉金融云系统架构演进和最佳实践… 数据分析 … 运营后台 用户系统 商户后台 官网 企业网银 个人网银 解决方案 实时监控 业务属性 BUSINESS ATTRIBUTES 实时性、一致性 安全性、中间账户 聚合的复杂性、第三方依赖性 金融系统 The complexity of aggregation, third-party dependency Financial system Security 需求设计阶段- 首次拦截 开发实现阶段-尽可能避免故障 系统运行阶段-及时发现故障 系统运行阶段-出现故障快速解决故障 思路 THINKING 预见运行期、所想即所得、限制和保护 设计可容错的系统(快速失败、超时、自动重路由) 设计具备自我保护的系统(拆分、限制、优雅停止) 制定合适的开发规范 撒网 实时监控(傻瓜式、开发不用查日志) 可视化运营 网络监控 主机监控 服务监控0 码力 | 35 页 | 6.05 MB | 1 年前3
共 35 条
- 1
- 2
- 3
- 4













