高可用分布式流数据存储设计-李玥⾼高可⽤用分布式流数据存储设计 李玥 京东集团 技术架构部 架构师 ⾃自我介绍 ⾃自我介绍 李李玥 京东集团 技术架构部 架构师 负责主导设计新⼀一代京东消息中间件系统,专注于流数据的⼀一致性分发和可靠存储、分布式实时计算和⾼高可⽤用分 布式系统架构等技术领域。 从事互联⽹网研发、架构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
QCon北京2018-业务高速发展下的互联网金融系统架构演变-张现双+分布式事务,补偿、撤销机制 接口缓存,热数据尽可能前置 DB跟随服务 代码、逻辑、结构等都要适时重构 最终架构[简版] 移动后台打散,界限趋于不明显 极大消除冗余,三级两层划分 底层服务有序汇总直面前端 流量统一出口 积分系统 优惠券 基金服务 保险服务 理财服务 支付中心 电子签章 第三方系统 营销支持 基础服务 数据支持 批处理 … 网关(略) Armstrong 关键点 分而治之,缩小竞争面 加速资源交换,更快响应 共享资源串行操作 数据一致性(脏读,丢失更新等) 业务纵向拆分,化整为零 资源拆分,横向扩展 cache,index,partition parallel non-blocking sync、lock,cas 额度、库存、积分、优惠券… CAP 数据竞争� [sql方案示例] 乐观锁,带来重试代价 乐观锁,带来重试代价 悲观锁,开销大,吞吐量差 数据库锁(全局标识拦截): update product set stock=stock-X where stock-X>=0 限流: max_connections(db) max_request+max_threads(middleware)0 码力 | 42 页 | 19.96 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
领域驱动设计&中台/淘宝应用架构升级——反应式架构的探索与实践• 就职于阿⾥里里,经历: • 负责淘宝应⽤用架构升级 • 核⼼心开发 - 建设⽤用户增⻓长设施与平台建设 • 负责过分布式调⽤用链跟踪框架 & 系统 • 核⼼心开发 - 分布式数据库同步系统 • Github :https://github.com/zavakid • 开源项⽬目: • otter 核⼼心开发者: https://github.com/alibaba/otter 多个流之间才可能是并⾏行行的 Your Mouse is a Database! — Erik Meijer 流定义 • ⾯面向数据 • 操作、组合 ⾯面向流 • 业务逻辑 → 数据变换 • 数据变换 → 业务逻辑 数据 vs 逻辑 ⾯面向流编程是 ⾯面向数据编程 流式架构 流 分布式 性能 并发控制 业务编写 流 - 业务编写 创建 just / from* / .reduce(0, (acc, data) -> acc + data); 流 - 性能 全异步、流式 CPU数个业务线程 更更少的上下⽂文切换、更更少(⽆无)的竞争、更更低的LOAD 业务等效依赖的异步并发 更更⾼高效的资源利利⽤用率 Universal Scalability Law 系统流⽔水线并⾏行行处理理 流 - 分布式 � ) �� ��0 码力 | 27 页 | 1.13 MB | 1 年前3
降级预案在同程艺龙的工程实践-王俊翔缺乏UI、没有灵活的参数、策略略配置,没有预案制定管理理能⼒力力 业务保障平台建设之路路 业务保障平台建设之路路 服务管理理 策略略管理理 预案制定 线上演练 • 降级服务统⼀一注册管理理,通过降 级服务质量量数据从整体反映各应 ⽤用的降级点和可⽤用性保障措施 • 降级策略略集中管理理,通过参数 化、配置化、脚本化⽅方式实现线 上策略略的灵活调整 • 依据服务重要程度,从全局制定 分级预案,对降级点进⾏行行预案编 发现潜在故障,多维度验证预案 有效性,评估系统可靠性,提供 降级策略略、参数调整的优化依据 整体架构 Agent 服务降级注册 降级熔断通知 元数据存储 控制 中⼼心 ETCD ETCD ETCD ETCD 服务注册监听 降级控制中⼼心 元数据 TurboMQ 熔断降级监听 Application Application Application SDK 熔断降级接⼊入 熔断 降级 流控 隔离 实时策略略推送 数据采集 应⽤用管理理 策略略管理理 流控管理理 预案管理理 指标管理理 监控告警 数据⼤大盘 脚本开发 ETCD管理理 故障演练 业务保障管理理后台 应⽤用JVM进程 故障动态注⼊入 Attach 故障注⼊入 指标聚合查询 熔断降级计算(Flink) ⽇日志中⼼心 KAFKA 数据采集、计算、存储 指标(HBase) 指标明细(ES)0 码力 | 26 页 | 18.67 MB | 1 年前3
大规模分布式系统架构下调测能力构建之道多团队协同的分布式环境下,不仅环境“重”,而且外部的服务是别的团队开发 的,你很难得到一个稳定、快速的外部服务提供环境,在此背景下进行功能/接口 调测存在如下困难: 开发依赖重 联调成本高 变动把控困难 拆 应用拆分 数据拆分 团队拆分 分布式服务 API Gateway 分布式文件 分布式缓存 分布式消息 DB Cluster 连接 序列化 路由 负载均衡 … 问题示例 1. 我依赖一个 依赖的远程服务逻辑发生变化了,但负责它的团队没有通知到 我,结果上线后直接导致生产事故。 5. 我和其他团队共用一套分布式缓存服务,为了防止数据覆盖, 我只能和别人轮流排队上线调试,我等了一天,结果只能用一 个小时。 6. 我写了个消息Consumer,布到线上准备测测,结果,别人的消 息先到了,一下把我的预置数据全搞乱了… 7. 我的开发机性能还行,我想自己装一套依赖环境提高开发调测 效率,结果消息服务、缓存服务、服务框架装完一启动,80% mock能力启用时,服务容器初始化期间将加载mock数据文件到内存中,每个服务请求将和mock数据的入参定 义进行比对,满足(静态匹配 或动态匹配)规范的请求,直接用mock数据的出参定义作为服务调用的结果。 应用无感知 无需修改应用代码,单元测试代码中也无需添加任何的mock语句。 服务 调用 Invoker … Remote Call 负载均衡 策略 Runtime Mock数据文件 远程服务 Mock配置0 码力 | 19 页 | 2.74 MB | 1 年前3
美团点评旅游推荐系统的演进•负责酒旅搜索排序推荐 •负责酒旅数据仓库和数据产品建设 •2014年之前 美团网技术部数据组 •参与数据平台搭建 •负责全平台数据仓库和数据产品建设 •2011年 百度电子商务事业部 •有啊商城的开发 •2010年毕业于中科院计算所 Outline •美团点评酒旅业务简介 •基于用户画像的召回策略演进 •基于L2R的排序策略优化 •从海量大数据的离线计算到高并发在线服务的推荐引擎架构设计 周边游频道内推荐 2016Q1 搜索少/无结果推荐 2016Q2 详情页推荐 2016Q3 酒旅交叉推荐 2016Q4 点评旅游推荐 酒店住宿 境内度假 境外度假 大交通 搜索/推荐 数据产品 酒旅数据仓库 数据挖掘 集团数据平台 旅游推荐产品形态 旅游场景下用户兴趣点不明 确,频道内超过50%订单来 自推荐 需求个性化 推荐形式多样 本异地差异大 季节性明显 旅游推荐面临的问题 本异地差异大 常驻城市!=浏览城市 (重庆人浏览北京) 异地用户购买的热销POI (所有非北京人购买的热 销POI) 销量按时间衰减 热销策略 •精确统计POI销量 •Deal -> POI •POI售卖数据不准 •客户端埋点 POI详情页 F_poiid DEAL详情页 F_poiid 下单页 F_poiid 用户画像 常驻 •模型 •LR:预测常驻城市与某维度城市相等的概率 •样本0 码力 | 49 页 | 5.97 MB | 1 年前3
海尔实时计算平台技术选型与实践健康 水站 盛丰 物流 概要 • 实时计算平台背景 • 开源技术选型与实践 • 开源技术改造经验 背景-海尔大数据总体规划 实时计算平台框架 存 储 服 务 实时数据采集框架 实时计算框架 离线计算框架 数据可视化框架 数据产品1 数据产品2 数据产品N 可选的开源技术 Fluentd Flume Apollo Chukwa Sqoop DataX MySQLStreamer Flink Ganglia Sqoop zeppelin Saiku Caravel CBoard Nagios 实时数据采集技术选型要求 • 完整 • 低延时 • 不影响业务系统性能 代码埋点: • 优点:采集能力强 • 缺点:时间、人力成本大 实时数据采集-数据如何获取? 可视化埋点: • 优点:成本低,速度快 • 缺点:行为记录信息少,支持的分析方式少 • Flume 接收的event数 • Channel : Channel中拥堵的event数 • Sink : 已经处理的event数 Flume监控 日志数据获取实践 入库 解析 收集 采集 插码 实时数据采集新要求 业务系统无法配合修改,怎么办? CDC的几种方法: • 触发器 • 时间戳 • 全表比对 • 日志对比 Change Data Capture(CDC)0 码力 | 41 页 | 3.21 MB | 1 年前3
领域驱动设计&中台/可视化的遗留系统微服务改造拆成微服务 微服务架构的九⼤大特征 •通过服务进⾏行行组件化 •围绕业务能⼒力力组织 •做产品⽽而不不是做项⽬目 •智能端点与傻⽠瓜管道 •去中⼼心化地治理理技术 •去中⼼心化地管理理数据 •基础设施⾃自动化 •容错设计 •演进式设计 可视化能帮我们什什么 掌握系统业务 明确系统边界 ⼩小步改造系统 可视化的认识遗留留系统 C4模型、⽤用户画像、⽤用户旅程 C4模型系统架构可视化 明确服务的范围 明确核⼼心模型 明确服务包含的数据表 可视化的拆解遗留留系统 微服务架构、绞杀模式、代码依赖分析、数据库依赖分析、 遗留留系统拆解评分表、降⻰龙⼋八步 庖丁解⽜牛拆解的最⾼高境界 了了解⽜牛的⽣生理理构造 避开筋腱⻣骨节交错的组织 从⻣骨节的缝隙下⼿手 ⼗十九年年⼑刀依然锋利利 再看⼀一眼微服务架构 我们要做应⽤用代码拆分 我们要做数据库拆分 绞杀者模式 ‣“绞杀者模 与Intellij或Eclipse相 结合,实时查看依赖, 指导拆解过程 已可视化 数据库依赖模式 模块A Data Mapper /ORM 相关联但不不属于 模块A的表 模块A Data Mapper /ORM 属于模块A的表 以模块(java包)为基本单位,从数据库依赖的⻆角度看,有两种模式: 属于模块A 的表 扫描数据库依赖 UserMapper.java UserMapper0 码力 | 54 页 | 3.85 MB | 1 年前3
共 32 条
- 1
- 2
- 3
- 4













