当当架构平台化之道 张亮
2020-03-01 57浏览
- 1.当当架构平台化之道 当当架构专家 /张亮
- 2.2016-4-22
- 3.大纲 • 业务体系介绍 • 当当中间层技术 • 平台化
- 4.业务特征 海量用户 品类繁多 7*24 流量突增 业务复杂
- 5.业务架构图 搜索 推荐 促销 会员 客服 退换货 交易 订单 仓储 物流 购物车 订单中心 实物库存 预分拣 专题、馆 交易结算 订单详情 库存调拨 快递管理 商品详情 一键购买 履约 库存优化 物流跟踪 卖场 首页 列表 商品 价格 库存 配货 支付 结算
- 6.互联网架构的核心问题是什么 数据 海量 伸缩 性差 响应 迟缓 规模 稳定 性差 系统 繁多 开发 困难
- 7.解决方案 服务 化 分片 化 规范 化 异步 化 高可用 弹性化
- 8.• 服务框架 服务 化 分片 化 规范 化 异步 化
- 9.服务化框架核心概念 远程调用 异构语言 服务发现 监控报警 负载均衡 服务治理
- 10.Dubbo解决方案 监控中心 服务提供者 服务提供者 业务代码 业务代码 Dubbo Dubbo 注册中心 Dubbo Dubbo 业务代码 业务代码 服务消费者 服务消费者 Zookeeper 集群
- 11.Dubbo缺失的部分 远程调用 异构语言 服务发现 监控报警 负载均衡 服务治理
- 12.监控报警 监控治理中心 服务提供者 服务提供者 业务代码 业务代码 Agent Dubbo Agent Dubbo 注册中心 Zookeeper 集群 Agent SLA统计 系统调用图 报警 Dubbo Agent Dubbo 业务代码 业务代码 服务消费者 服务消费者
- 13.
- 14.异构语言 监控治理中心 注册中心 Zookeeper 集群 服务提供者 服务提供者 业务代码 业务代码 Agent Agent DubboX DubboX 负载均衡 Nginx 异构语言业务代码 异构语言业务代码 Agent Agent 服务消费者 服务消费者
- 15.• 服务框架 • 数据中间层 服务 化 分片 化 规范 化 异步 化
- 16.数据中间件实现方案 Proxy ORM JDBC 数据库 仅MySQL 任意 任意 ORM 任意 单一 任意 异构语言 任意 仅Java 仅Java 性能 损耗略高 损耗低 损耗低
- 17.开源数据中间件现状 功能 Cobar Cobar-client TDDL 分库 支持 支持 未开源 分表 不支持 不支持 未开源 结果归并 不支持 不支持 未开源 事务 弱XA 弱XA 未开源 成熟度 中 低 -
- 18.Sharding-JDBC 分库分表 路由 SQL 改写 SQL 解析 SQL 并 行 执 行 事务 结 果 归 并 弱 X A 最 大 努 力 T C C
- 19.分库分表 应用 应用 业务代码 ShardingJDBC 业务代码 ShardingJDBC Sharding-JDBC 内部实现 分片规则配置 JDBC规范重写 SQL解析 SQL改写 结果归并 SQL路由 SQL执行
- 20.单库性能 单库性能损耗约0.02%
- 21.多库性能 双库性能提升约94%
- 22.SQL兼容性 LIMIT MIN,MAX SUM,COUNT AVG • LIMIT m, n => LIMIT 0, n • 跳过前n条数据 • 比较并返回最小(大)值 • 多结果集累加,DISTINCT暂未实现 • AVG(expr) => SUM(expr), COUNT(expr) • return SUM / COUNT ORDER BY • 排序列生成补列 • 多结果集归并排序 GROUP BY • 分组列生成补列 • 所有结果集加载至内存进行分组、聚合、排序 OR • 生成笛卡尔积的路由结果集
- 23.分布式事务解决方案 XA 弱XA 柔性事务 一致性 是 否 否 性能 低 无影响 无影响 最终一致性 是 否 是 业务无感知 是 是 否
- 24.柔性事务 最大努力 TCC • 最终成功 • 无业务入侵 •类原生事务 •业务感知
- 25.柔性事务 – 最大努力送达型 应用 业务代码 应用 业务代码 ShardingJDBC ShardingJDBC 业务库 事务同步送达 内部实现 记录事务日志 执行前事件 监听执行事件 失 败 成 重试执行 功 成 功 清理事务日志 执行结果事件 异步送达作业 读取事务库 重试执行 成 功 清理事务日志 事务库
- 26.Roadmap 分布式主键 读写分离 HA相关 动态扩容 字典表复制广播
- 27.• 服务框架 • 数据中间层 服务 化 分片 化 规范 化 异步 化 • 任务调度 • 消息队列
- 28.任务调度 VS 消息队列 时间驱动 • 批量处理 • 系统内部 事件驱动 • 逐条处理 • 系统解耦
- 29.elastic-job 非功能需求 核心功能 扩展性 灵活性 稳定性 易用性 异构语言 集中管理 弹性扩容 并行调度 分布式
- 30.架构图 应用 应用 业务代码 业务代码 Elastic-Job Elastic-Job 注册中心 Zookeeper集群 REST API Elastic-Job内部实现 在线状态注册 定时启动 实 时 状 态 监 听 主节点选举 主 从 分片 获取分片并执行 抓取失效转移 运维平台 状态展示 作业操作 全量事件统计 ELK 全量事件库 全量日志 日志中心
- 31.作业类型 Simple Dataflow Throughput Sequence Integrated Shell Http
- 32.典型消息队列存在的问题 ActiveMQ Kafka 丢消息? 性能问题 消息分片 事务? 可靠型 重复消费? 消息查询 事务 性能型
- 33.当当消息队列的权衡方案 Elastic -Job DMQ 队列表 Sharding -JDBC 混合使用
- 34.• 服务框架 • 应用框架 • 数据中间层 服务 化 分片 化 规范 化 异步 化 • 任务调度 • 消息队列
- 35.dd-frame 数据中间层 调度框架 服务框架 消息队列 应用框架
- 36.dd-frame全景图 集群平台 核心类 数据类 NoSQL 集成类 Container Standard Redis接入规范 快速容器 WEB支持 编码规范 配置规范 Mongo接入规范 验证框架 环境切换 监控规范 版本规范 存活监控 运维脚本 异常规范 日志规范 ORM规范 RDB 事务规范 多数据源 分页组件 慢SQL抓取 代码生成 Sharding-JDBC 审计表 日志表 Plugin WEB Session管理 AMQ规范 DMQ 事件统计 打包插件 日志分析 Elastic-Job 骨架生成 SOA 模板规范 RDB-EXT Kafka规范 Job 其他类 WEB MVC规范 MQ 命名规范 Test 单测规范 监控生态 单测框架 调用收集 Dubbox
- 37.平台化的选择 中心化 去中心化
- 38.当当平台化理念 高可 用 弹性 化 去中心 优势 运维难度 性能损耗 劣势 异构语言 资源控制
- 39.已开源项目 ElasticJob DubboX ShardingJDBChttps://github.com/dangdangdotcom/dubboxhttps://github.com/dangdangdotcom/elastic-jobhttps://github.com/dangdangdotcom/sharding-jdbc
- 40.开源收获 质 赢 升 提 量 共 升 提 牌 品 术 技 险 风 低 降
- 41.使用中或有意向使用的公司
- 42.诚聘英才 高级软件工程师/架构师 Java/c++/python 请投递简历至:wechathr@dangdang.com
- 43.