高可用分布式流数据存储设计-李玥⾼高可⽤用分布式流数据存储设计 李玥 京东集团 技术架构部 架构师 ⾃自我介绍 ⾃自我介绍 李李玥 京东集团 技术架构部 架构师 负责主导设计新⼀一代京东消息中间件系统,专注于流数据的⼀一致性分发和可靠存储、分布式实时计算和⾼高可⽤用分 布式系统架构等技术领域。 从事互联⽹网研发、架构10余年年,曾在浪潮集团、当当⽹网等公司从事架构相关⼯工作。2017年年加⼊入京东,期间提升京 如何定位?如何融入生态系统? How 如何实现?如何优化? WHY 为什什么需要流数据存储? 单体应⽤用 烟筒式 SOA 微服务 那些年年的服务 MySQL ES HDFS KV HBase Hive 这些年年的数据 Services Data MySQL ES HDFS KV HBase Hive 统⼀一的流数据存储平台 我们的愿景 Services Streaming Storage PLRU淘汰策略略 ⾼高并发 ≠ ⾼高性能 减少等待 异步: Future, Callback, React框架 流程拆分 减少锁:CAS原语 减少锁等待: 读写锁, 细粒度锁 写⼊入数据流程 IOThreads 接收请求 Requests Queue WriteThread 处理理 FlushThread 刷盘 ReplicationThread 发送复制请求 IOThreads0 码力 | 36 页 | 6.02 MB | 1 年前3
高可用与一致性:构建强一致性分布式数据库 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
分布式异地多活架构实践之路流量调度 存储系统自带同步 不成熟; 自研组件之间同步 数据同步 大纲 • 产品发展中遇到的问题 • 异地多活存在哪些技术挑战 • 讯飞输入法异地多活解决方案 • 实际应用效果 • 未来规划 业务特点分析 业务分类 业务举例 业务特点 场景归类 核心业务 皮肤、表情、资源、广告、应用墙译等 读多写少 主从模式 (单点写,多点读) 用户个性化数据同步、账号等 读写均衡 多主模式 (多点写,单点读, 单点写,多点读) 非核心业务 老版本兼容服务、运营活动、配置、管 理平台、官网、论坛等 N/A 本地模式 (单点读写) 设计思路 核心业务异地多活 精准流量调度 数据同步 多元化 最终一致性 依赖关系优化 配套系统支撑 主 从 多 主 汇 聚 混 合 场景区分 封装屏蔽细节 容量合理规划 当前总体架构 合肥 北京 广州 HTTPDNS 智能DNS Servers MS MS GSLB MS 上报/探测 上报 上报 上报/探测 上报/探测 上报 获取入口地址 服务访问 根据运行情况进行负载均衡/踢出故障入口 入口 入口 入口 三地同步/调用 核心业务异地多活 核心系统 非核心系统 原有系统 单向依 赖 传统DNS调度存在问题 LocalDNS 智能DNS (权威域名 服务器) root域名服 务器 com域名服0 码力 | 36 页 | 1.66 MB | 1 年前3
高性能高可用机票实时搜索系统海海量量数据 设计思路路 搜索框架 报价引擎 待解问题 系统诉求 • 全⽹网价最低 • 航线报价最全 • 实时性最好 • 产品最丰富 • 预定最流畅 ⾯面临问题 航班舱位时刻变动 供应商规则调整密集 航司政策各有不不同 供应商的office权限不不⼀一致 运价规则变化繁多 GDS数据成本不不菲 低价缺失 报价不不全 变价 海海量量数据 • 规则量量 App WWW Touch 分销 Cache Redis MQ MQ 航班数据 运价数据 应⽤用层 聚合层 报价源 基础数据 搜索框架 遇到问题 解决⽅方案 • 报价数量量多,内存问题 • 报价源多,不不稳定 • 响应时间要求苛刻 • 搜索条件有热点 • 缓存报价不不准 • 尽量量⽤用原⽣生数据类型,编码 • 回数⽐比例例,异步搜索更更新 • 分批回数 • ⼀一致性哈希,负载均衡 • 要求同步延迟很低,不不超过60s • 保持顺序⼀一致性,如果先删后插变成 先插后删,数据会不不⼀一致 • 数据最终⼀一致 • 系统⾼高可⽤用 报价引擎 — 组织索引 北北 京 | 上 海海 成 都 | 杭 州 ⼴广 州 | 郑 州 南 宁 | 天 津 … 索引库 DB Sync 规则库 供应商 A 供应商 B 供应商 M … 报价引擎 — 数据同步 Pipeline0 码力 | 26 页 | 1.94 MB | 1 年前3
分布式 KV 存储系统 Cellar 演进之路分布式KV存储Cellar演进之路 美团点评·基础架构 齐泽斌 美团点评基础架构部,存储研发团队负责人 • Cellar:分布式KV存储服务 • Databus:数据库变更实时传输服务 • Venus:图片服务 11年毕业于天津大学 11 年到 14 年任职于百度,负责分布式文件系统和 KV 存储系统研发 有多年分布式存储研发经验 个人简介 • Cellar起源 • 中心节点架构演进 • Cellar日请求量达万亿级,美团点评最大NoSQL存储 Cellar起源 Cellar起源—Tair架构 路由表 Cellar起源—Tair架构 HASH Key 桶号 存储节点 固定HASH算 法 固定数目 数据分片 桶->存储节点 对照表 Cellar起源—Tair架构 服务层 请求 mdb 响应 ldb fdb rdb 引擎层 迁移 复制 • 中心化集群问题 • 可用性问题 • 性能问题 • Zookeeper选主 • 元数据Zookeeper存储 Cellar—中心节点架构演进 一致性: • 主备强一致 • observer同步强一致 • Cellar起源 • 中心节点架构演进 • 节点高可用和异地容灾 • 服务可用性提升 • Cellar规划 目录 存储节点Failover,越快越好? • 数据补全对业务影响 • 机器宕机五分钟,数据补全两小时 节点升级,先切走流量再操作?0 码力 | 34 页 | 1.66 MB | 1 年前3
领域驱动设计&中台/可视化的遗留系统微服务改造拆成微服务 微服务架构的九⼤大特征 •通过服务进⾏行行组件化 •围绕业务能⼒力力组织 •做产品⽽而不不是做项⽬目 •智能端点与傻⽠瓜管道 •去中⼼心化地治理理技术 •去中⼼心化地管理理数据 •基础设施⾃自动化 •容错设计 •演进式设计 可视化能帮我们什什么 掌握系统业务 明确系统边界 ⼩小步改造系统 可视化的认识遗留留系统 C4模型、⽤用户画像、⽤用户旅程 C4模型系统架构可视化 ⼀一⽽而且清晰; 2. ⽤用“XXX已XXX”的格式在橙⾊色便便利利贴上写下事 件,⼯工作坊参与者需要对事件定义达成⼀一致; 3. 根据时间顺序把事件便便利利贴贴到⽩白板上; 4. 如果⼀一个事件有同步发⽣生的其它事件,把其它 事件放在事件下⽅方; 5. 如果发现了了业务中的问题点,⽤用红⾊色便便利利贴记 录为什什么是⼀一个问题; 6.以上步骤完成以后,再从最后⼀一个事件开始来 反向验证事件的完整性(即:⾛走查前后事件的关 明确服务的范围 明确核⼼心模型 明确服务包含的数据表 可视化的拆解遗留留系统 微服务架构、绞杀模式、代码依赖分析、数据库依赖分析、 遗留留系统拆解评分表、降⻰龙⼋八步 庖丁解⽜牛拆解的最⾼高境界 了了解⽜牛的⽣生理理构造 避开筋腱⻣骨节交错的组织 从⻣骨节的缝隙下⼿手 ⼗十九年年⼑刀依然锋利利 再看⼀一眼微服务架构 我们要做应⽤用代码拆分 我们要做数据库拆分 绞杀者模式 ‣“绞杀者模0 码力 | 54 页 | 3.85 MB | 1 年前3
领域驱动设计&中台/物联网平台的反应式设计为什什么需要反应式架构 设备影⼦子业务说明 1. 设备上报状态 2. 将上报状态持久化到数据库 3. 应⽤用查询上报的状态 4. 应⽤用设置期望的状态 6. 期望状态和上报状态的 差异 (delta) 同步⾄至设备 7. 设备上报新的状态 8. 将新的上报状态持久化到数据库 5. 将期望状态持久化到数据库 { “state”: { “desired”: { 10 } 设备影⼦子业务说明 1. 设备上报状态 2. 将上报状态持久化到数据库 3. 应⽤用查询上报的状态 4. 应⽤用设置期望的状态 6. 期望状态和上报状态的 差异 (delta) 同步⾄至设备 7. 设备上报新的状态 8. 将新的上报状态持久化到数据库 5. 将期望状态持久化到数据库 { “state”: { “desired”: { 11 } 设备影⼦子业务说明 1. 设备上报状态 2. 将上报状态持久化到数据库 3. 应⽤用查询上报的状态 4. 应⽤用设置期望的状态 6. 期望状态和上报状态的 差异 (delta) 同步⾄至设备 7. 设备上报新的状态 8. 将新的上报状态持久化到数据库 5. 将期望状态持久化到数据库 { “state”: { “desired”: {0 码力 | 18 页 | 1.81 MB | 1 年前3
海量用户推送后台系统架构实践-曾振波万 APP 198 亿 移动终端 10.4 亿 月独立 活跃设备 90 % 覆盖率 亿级长连接用户 SDK多版本并存 消息实时性 触达率要求 移动网络环境复杂性 海量用户数据存储 消息推送系统面临的挑战 极光推送服务架构 系统通道 API 用户筛选 用户分发 推送通道 极光通道 共享通道 短信通道 极光推送后台系统架构 iOS SDK Android 功能按照业务拆分解耦 • 数据和业务分离 • 快速迭代 • 模块间通过MQ/RPC交互 极光推送后台系统架构 01 Segment Conn StatCenter OnlineMsg 异步化 • 充分利用资源,减少请求等待时间,提升系统吞吐量 • 消息化请求 • MQ - RabbitMQ, RocketMQ • 模块间解耦 • IDC数据同步 • 异步RPC • ICE ICE - 负载均衡,AMI,AMD,多线程 极光推送后台系统架构 02 并行化 • 横向扩展处理能力 • 数据分片存储 • 多节点+分片+多副本架构 • 数据读写动态路由 • 请求并行处理 • 模块级别并行 • 代码级别并行 极光推送后台系统架构 03 MQ Segment OnlineMsg OnlineMsg OnlineMsg Data0-0 Data0-10 码力 | 23 页 | 1.26 MB | 1 年前3
声明式自愈系统——高可用分布式系统的设计之道-王昕无状态分布式系统的高可用问题 处理消息的服务节点可以随机选择 不必处理数据复制和同步的问题 系统容量和高可用能力可以同步提升 服务节点可以随意迁移,不必固定 IP 和存储 有状态分布式系统的高可用问题 一致性 可用性 分区容错性 Paxos Raft 2PC Gossip Ø 处理请求需要特定节点 Ø 必须要考虑数据备份和同步 的问题 Ø 容量扩展和高可用需要不同 解决方案 Ø 服务节点不能随便迁移 Networking Data 启动异常 进程被杀 服务器假死 断电 启动异常 超卖 进程死锁 负载均衡失效 业务线程池满 监控错误 流控不合理 心跳异常 缓存热点 缓存限流 数据库热点 数据库宕机 数据库延迟 CPU 抢占 内存抢占 内存错乱 上下文切换 磁盘满 磁盘坏 网络抖动 网卡慢 断网 DNS 故障 系统单点 异步阻塞 依赖超时 内存溢出 不可读写 目录 Ø 分布式系统面临的高可用问题 注意慢操作可能造成的客户端冲突问题 最佳实践分享 有关缓存的使用 Ø 缓存的内容:服务发现应答,DNS 结果,元数据, 数据,之前的请求 Ø 逻辑正确性不能依赖缓存,写操作服务端必须有校 验而且幂等,没有缓存情况下系统仍可服务 Ø 错误回复缓存,过期时间不能太长,而且有清晰的 修复建议 Ø 数据库更新与缓存失效的策略 最佳实践分享 有关配置文件 Ø 集群使用统一的配置来源 Ø 定义正常的默认配置,满足读取不到配置的正0 码力 | 44 页 | 2.47 MB | 1 年前3
领域驱动设计&中台/淘宝应用架构升级——反应式架构的探索与实践• 就职于阿⾥里里,经历: • 负责淘宝应⽤用架构升级 • 核⼼心开发 - 建设⽤用户增⻓长设施与平台建设 • 负责过分布式调⽤用链跟踪框架 & 系统 • 核⼼心开发 - 分布式数据库同步系统 • Github :https://github.com/zavakid • 开源项⽬目: • otter 核⼼心开发者: https://github.com/alibaba/otter 到底是怎样的架构升级 能达到这种效果? CONTENTS 01 架构升级的效果 02 架构升级的思考 03 架构升级的实践 架构升级的思考 现有架构的问题? 现有架构的问题 同步等待 • 现有同步模型,线程 多 load ⾼高 • 资源利利⽤用率 应⽤用本身的解决⽅方案? 并⾏行行度有限 • ⽆无法纯业务依赖并发 • 微服务化让问题更更凸 显 • RT 累积 多个流之间才可能是并⾏行行的 Your Mouse is a Database! — Erik Meijer 流定义 • ⾯面向数据 • 操作、组合 ⾯面向流 • 业务逻辑 → 数据变换 • 数据变换 → 业务逻辑 数据 vs 逻辑 ⾯面向流编程是 ⾯面向数据编程 流式架构 流 分布式 性能 并发控制 业务编写 流 - 业务编写 创建 just / from* /0 码力 | 27 页 | 1.13 MB | 1 年前3
共 32 条
- 1
- 2
- 3
- 4













