科大讯飞高级系统架构师 凌军 - 分布式异地多活架构实践之路

2020-02-27 1120浏览

  • 1.讯飞输入法异地多活架构实践之路 凌军
  • 2.自我介绍 • 凌军 • 2010年加入科大讯飞 • 讯飞输入法、灵犀语音助手等产品服务端架构负责人 • 科大讯飞消费者BG基础平台架构负责人
  • 3.产品介绍 • 稳居国内输入法第一阵营 • 2010-10~至今 • 4亿用户 • 1.1亿月活 来自:中国科学院《互联网周刊》
  • 4.大纲 • 产品发展中遇到的问题 • 异地多活存在哪些挑战 • 讯飞输入法异地多活解决方案 • 实际应用效果 • 未来规划
  • 5.单机房遇到的问题 可用性低 响应时间慢 系统扩容难
  • 6.可用性低
  • 7.响应时间慢
  • 8.系统扩容难
  • 9.大纲 • 产品发展中遇到的问题 • 异地多活存在哪些技术挑战 • 讯飞输入法解决方案 • 实际应用效果 • 后续规划
  • 10.技术挑战 机房天然延迟 几十毫秒的延迟; 跨机房性能较慢 数据同步 存储系统自带同步 不成熟; 自研组件之间同步 跨机房专线问题 专线费用高; 专线不稳定 服务依赖问题 依赖小服务,有一 定改造成本; 依赖外部服务 业务开发影响 减少对业务开发影响; 需要封装屏蔽细节 流量调度 如何精准调度; 如何合理调度
  • 11.大纲 • 产品发展中遇到的问题 • 异地多活存在哪些技术挑战 • 讯飞输入法异地多活解决方案 • 实际应用效果 • 未来规划
  • 12.业务特点分析 业务分类 业务举例 皮肤、表情、资源、广告、应用墙译等 核心业务 用户个性化数据同步、账号等 分布式日志收集等 内容统计指标获取、内容榜单等 非核心业务 老版本兼容服务、运营活动、配置、管 理平台、官网、论坛等 业务特点 读多写少 读写均衡 写多读少 读写均衡 N/A 场景归类 主从模式 (单点写,多点读) 多主模式 (多点读写) 汇聚模式 (多点写,单点读) 混合模式 (多点写,单点读, 单点写,多点读) 本地模式 (单点读写)
  • 13.设计思路 精准流量调度 数据同步 多元化 核心业务异地多活 场景区分 主多汇混 从主聚合 最终一致性 依赖关系优化 封装屏蔽细节 容量合理规划 配套系统支撑
  • 14.当前总体架构 获取入口地址 服务访问 HTTPDNS 智能DNS 根据运行情况进行负载均衡/踢出故障入口 入口 入口 GSLB GSLB Servers 上报 MS Servers 上报 MS 北京 上报/探测 合肥 上报/探测 入口 GSLB Servers 上报 MS 广州 上报/探测 三地同步/调用
  • 15.核心业务异地多活 原有系统 核心系统 单向依 赖 非核心系统
  • 16.传统DNS调度存在问题 获取服务IP LocalDNS DNS劫持严重 用户设置DNS服务器 DNS各级缓存 DNSTTL不遵循 EDNS普及缓慢 IP请求 root域名服 务器 com域名服 务器 智能DNS (权威域名 服务器) 根据用户IP来 进行运营商区 域的调度 GSLB 北京IDC 合肥IDC 广州IDC 结果:无法就近返回最优的机房IP、机房之间负载不均衡、机房异常后无法快速容灾
  • 17.精准流量调度-全局 弱依赖,可控 HTTPDNS SDK封装: 重点域名预解析 缓存域名解析结果(sp、 wifi名) 出错或快过期异步解析 合法IP动态下发 IP请求结果统计 多级兜底容错 LocalDNS 解析IP合法,IP请求 解析IP不合法,固定IP请求 北京IDC 智能DNS GSLB 合肥IDC 广州IDC
  • 18.精准流量调度-用户 用户与用户数据 机房对应关系, 注册后首次生成 漫游到其他机房统 计,满足一定条件 重新设置用户数据 机房 路由服务 北京 IDC HTTPDNS 路由服务 合肥 IDC 智能DNS GSLB 路由服务 广州 IDC
  • 19.数据同步多元化 Service 北京IDC 专线/公网 专线/公网 CRSync CRSync CRSync Service 广州IDC Service 合肥IDC 尽可能减少数据同步 控制同步的大小 专线与公网互相容灾 环形同步路径容灾 Push无状态数据 CRSync异步同步 Service实时同步
  • 20.最终一致性 Service sdk MQ 全局消息id生成 消息管理(预写、删除等) 重试、查询、监控接口 CRSync sdk CRSync sdk MQ Processor sdk 消息状态上报 消息接口 调用重试/查询接口 获取监控接口 定时补偿 是否执行结束 监控 消息状态库 同步消息管理服务 通知运营 或者技术, 人工介入
  • 21.依赖关系优化 少依赖 弱依赖 不跨机房
  • 22.主从模式
  • 23.主从模式 就近接入 GSLB 就近接入 Web Service Cache 管理平台 MQ Task Service 专线/公网 CRSync CRSync Processor 主机房 DB MQ Web Service Cache Processor 从机房
  • 24.多主模式同步
  • 25.多主模式同步 用户分片&就近接入 GSLB 用户分片&就近接入 Web Service DisFS MQ Processor 用户路由 用户路由 会话验证 会话验证 专线/公网 CRSync CRSync MQ 漫游 Web Service DisFS Processor 主机房 主机房
  • 26.汇聚模式 就近接入 GSLB 就近接入 Web Service Flume 从机房 专线/公网 CRSync CRSync Web Service Flume Flume Consumer kafka 主机房 Spark Hadoop ES
  • 27.容量合理规划 北京 50% 客户端 合肥 50% 广州 50% 1 12 冗余机器与其他系统复用,弹性伸缩
  • 28.配套系统支撑 测试场景覆盖 灰度发布上线 机房流量调度 故障模拟演练 配置平台 服务化平台 监控覆盖 数据恢复 日常运维
  • 29.大纲 • 产品发展中遇到的问题 • 异地多活存在哪些技术挑战 • 讯飞输入法解决方案 • 实际应用效果 • 未来规划
  • 30.可用性 机房内故障 机房入口网 络故障 DNS问题 自动流量切换,业务 几乎没影响 10分钟迁移95%流量, 总体可控 几乎无劫持,延迟降低 20%,解析失败率率下 降15%
  • 31.响应时间 优化前 优化后
  • 32.系统扩容 北京IDC 合肥IDC 广州IDC 系统能够任意水平扩容
  • 33.大纲 • 产品发展中遇到的问题 • 异地多活存在哪些技术挑战 • 讯飞输入法解决方案 • 应用实践以及经验教训 • 未来规划
  • 34.未来规划 • 异地多活架构平台化 • 弹性伸缩完善 • 一致性要求较高场景 • 西部以及海外机房部署
  • 35.Q&A
  • 36.