《链家网高可用架构演进》 董金勇
2020-03-01 521浏览
- 1.链家网高可用架构演进 董金勇 LIANJIA.COM
- 2.
- 3.工作经历: 自我介绍 网易 百度 淘宝 链家网 特点: 文艺
- 4.提纲 一、架构之痛 二、高可用架构演进与实践 三、总结
- 5.经纪人数 hits 16亿+ 15万 北京、天津、大连、 石家庄、燕郊、青岛、 济南、烟台、沈阳 业务背景 西安 武汉、长沙 成都、重庆 厦门 3万 覆盖地区:28 门店数量:8000+ 上海、南京、杭 州、苏州、合肥 海南 广州、深圳、中 山、佛山、惠州、 东莞、珠海 8000万 2014 2016 2014 2016
- 6.业务架构图 潜客 匹配 连接 交易前 交易中 交易后 客户 2C 业主 2B • • • • • 搜索 • 地图 • 懒人找房 内容 资讯 百科 热点 • IM工具 • 约带看 • 话务 • • • • • • • • 房源 客源 带看 评价 • 大数据产 品 • 装修服务 • 其它服务 合同 业绩 财务 交易 经纪人 平台 楼盘数据 人员管理 店面管理 品质 • 楼盘字 典 • 用户中 心 • 店面系 统 • 品控系 统 内容发布 • cms 推送 • feed 报表 • BI 结算 支付 投诉
- 7. 系统个数: 300+ 原系统架构 S5 S1 单库表个数: 10000+ S1 … MongoDB … S6 S2 S7 S2 S4 S4 S8 S3 成本高达数亿…… ElasticSearch S5 2 EMC S3 Oracle ETL Mysql Solr EMC2
- 8. 可用性低:99% 遇到的问题 性能差:单机QPS<50 强耦合 扩展性差、数据一致性差、容错能力差…… 可维护性差:上线难,迭代难
- 9.提纲 一、架构之痛 二、高可用架构演进与实践 三、总结
- 10.01. 02. 03. 04. 会话层 服务层 数据层 基础设施体系建设
- 11.绑定来自A的请求 应用服务 应用服务 Session复制 遇到问题: 会话层 容量不足 串号 恢复困难 Session复制 客户端 负载均衡 应用服务 Session复制 客户端 负载均衡 应用服务 绑定来自C的请求 应用服务 原B端方案 应用服务 原C 端方案
- 12.D-I-D原则: 适度超前设计 DESIGN:按20倍体量设计 IMPLEMENT:按3倍体量实现 DEPLOY: 按1.5倍体量部署 ——AKF Partners
- 13.应用服务 DESIGN: Passport IS SSO NEEDED? 客户端 负载均衡 应用服务 Session集群 应用服务 站在巨人肩上——改造CAS
- 14.… Application a1 User centerIMPLEMENT:Application an Proxy 流控 Passport PC 超前实现防御措施 M 白盒监控 M S M … … M S Session cluster 1 流控 Proxy S S … Application b1 Ticket storage cluster 1 Application bn 流控 独立熔断能力 客户端 流控 负载均衡 Proxy 流控 易扩容 Service 流控 M S … S Session cluster 2 负载均衡 Passport Mobile FAILOVER Proxy … 流控 M Application c1 去中心化 M S … M S Application cn Proxy 流控 Ticket storage cluster 2 M S … M Session cluster 3 S
- 15.DEPLOY TIPS: BUFFER BUFFER BUFFER ! SSD持久化 业务分级隔离 SESSION、CACHE分开
- 16.01. 02. 03. 04. 会话层 服务层 数据层 基础设施体系建设
- 17.服务层 What happened? 系统数量多达300+ 强耦合 跨系统 性能差 业务迅速增长10倍 访问时间集中 数据写入多入口 状态多 数据一致性差 … 交易 Web 业绩 … 财务 业主 合同 可维护性差 Service Solr 客 楼盘 扩展性差 容错能力差…… Web 房 DBLink 索引 DB1 DBLink DB DB2
- 18.逃不出的法则 Why? ——康威定律 Conway's Law
- 19. How? KISS原则 分层依赖原则 解耦——异步化 Consistency Partition tolerance Time-based Specific Relevant Measurable CAP原理: CP AP SMART原则 Availability Attainable
- 20.数据产品/平台管理 数据频道 报表系统 通用服务 … 品质管理 … IM工具 交易业务层 我的交易 C端 B端 签约管理 交易管理 提佣管理 评价 分层依赖 服务分级 功能分级 用户签前业务层 新房频道 二手买卖 二手租赁 海外 小区 问答社区 C端 B端 实勘服务 营销工具 Feed流 平台基础业务层 组对盘 二手房源 委托服务 二手客源 委托服务 新房房源 经纪人 调度平台 新房客源 大数据平台 搜索服务 基础数据服务层 用户中心 楼盘字典 潜客 DAS数据传输平台 (SMART - Specific)
- 21.平台基础业务层 SLO(SERVICE LEVEL OBJECTIVES): SLA度量体系 (SERVICE LEVEL AGREEMENT) 99%的简单业务接口响应时间<30MS 99%的复杂业务接口响应时间<100MS 单机QPS>500 可用性:99.99% 集群最大处理能力:******每秒 (SMART - Measurable)
- 22.服务化 ——服务治理 发现问题 解决问题 (SMART - Attainable)
- 23.Zookeeper 服务发现 权限 模块 配置中心 Consumer 去中心化 Token 监控 仲裁 模块 控制器 常规运维 监控系统 故障转移 服务框架 规则 配置 日志 采集 链路 跟踪 Provider 限流 保护 指标 采集 Token 日志 采集 链路 跟踪 Phone Mail 流控 降级 服务治理 控制台 报警器 日志平台 Kafka Spout UI Blot API Count DB
- 24.响应时间 4个黄金指标: 决策精准化 ——模糊控制策略 延迟 流量/并发数 错误 饱和度 <10 10-30 30-100 >100 高度关注毛刺分布,定期巡检
- 25.Zookeeper 细粒度流控 &迅速降级 UI … B1 B2 权限 模块 Bn 判定 规则 仲裁 模块 控制器 服务B … 流控 … B1 B2 A1 A2 服务A Bn 服务C 流控 An 流计算 平台 监控 报警平台
- 26.TraceID SpanID App token IP…… B端API TraceID SpanID App token IP…… C端API TraceID SpanID App token IP…… 约带看 链路跟踪平台 ——跨团队之利器 快速排查问题 优化路径 客 房 策略 潜客 日程 楼盘字典 UC TraceID SpanID App token IP……
- 27.OP?RD?QA? ——运维融入设计,人人都是SRE(SITE RELIABILITY ENGINNEER) (SMART - Relevant)
- 28.容错能力: 好代码是高可用的基石 Request 对下游可控制 对上游轻依赖,CACHE关键数据 幂等/数据自修复能力 柔性设计 P3 Cache P4 隔离能力: P2 柔性接口设计,减少串联 P1 P5 ExecutorPool 营造“沙箱”环境,线程资源独立 Controller 事务中避免调用第三方 “沙箱” ExecutorPool ExecutorPool P6 Service B Service C Service D
- 29.01. 02. 03. 04. 会话层 服务层 数据层 基础设施体系建设
- 30.遇到的问题 大量单表过亿 找不到路由ID 时间成本 (SMART – Time-based)
- 31.技术选型 ShardingDAO COBAR MYCAT 读写分离 Yes No Yes 主库绑定 Yes No No->Yes 跨库查询 Yes No Yes 跨库事务 No->Yes No No 独立部署 No Yes Yes 辅助索引 Yes No No
- 32.Diverter 阶段一 Index Query Aspect Manager DB Router DB single Query Connection Manager DB concurrent Query Transaction Manager Exception Manager Merger Bypass Manager
- 33.Shard 1 Shard 2 Shard 3 辅助索引 异步化、高性能 支持复杂条件 Shard 5 成本复用 Shard 6 ID Shard 4 BinLog Parser Event processer API MQ writer reader Config … Shard n INDEX
- 34.L-Proxy Query 阶段二 成本复用 对程序透明 MySQL Protocol 查辅助索引 SQL Analyzer Configuration NO Connection Manager Transaction Manager DB Router DML YES 查询索引获取 分区List 是否跨库 index YES 并发查询 Merge/Sort End
- 35.Applications Console 阶段三: Naming service KV Proxy service 逃不出的法则——避免单点 Proxy Proxy Proxy Deamon Deamon Deamon Bind Master 1 Master2 Slave1 Slave2 Slave n
- 36.01. 02. 03. 04. 会话层 服务层 数据层 基础设施体系建设
- 37.基础设施体系建设 运维服务平台 监控治理平台 研发服务平台 持续交付平台 流程质量管理 IDC管理 白盒/黑盒监控 命名服务 持续构建 问题管理 云主机管理 流控平台 高可用队列/高性能消息队列 持续测试 事件工单管理 交换机管理 链路跟踪平台 高可用分布式缓存 全链路压测 事故管理 LVS管理 降级管理平台 文件云存储 灰度发布 变更管理 F5管理 报警平台 Hadoop、Hbase、Hive集群 持续发布 SLA协议管理 DNS管理 日志平台 Strom集群 一键扩容 权限管理
- 38.提纲 一、架构之痛 二、高可用架构演进与实践 三、总结
- 39.总结 D-I-D原则:DESIGN 20;IMPLEMENT 3;DEPLOY 1.5 运维融入设计,人人都是SRE,积极防御,可监控,可治理,可转移 柔性设计,轻依赖,可扩展 遵守法则,没有捷径
- 40.演进之路 可用性:99% -> 99.99% 性能提升:12倍+ 平台化 迭代速度:10倍+ 异步化 低成本可复用 分层治 理 应用服 务化 数据分 片化 去中心 化
- 41.Q&A
- 42.THANK YOU LIANJIA.COM