- 快召唤伙伴们来围观吧
- 微博 QQ QQ空间 贴吧
- 文档嵌入链接
- 复制
- 微信扫一扫分享
- 已成功复制到剪贴板
当当架构平台化之道-张亮
展开查看详情
1 .当当架构平台化之道 当当架构专家 /张亮
2 .2016-4-22
3 .大纲 • 业务体系介绍 • 当当中间层技术 • 平台化
4 .业务特征 海量用户 品类繁多 7*24 流量突增 业务复杂
5 .业务架构图 搜索 推荐 促销 会员 客服 退换货 卖场 交易 订单 仓储 物流 首页 列表 购物车 订单中心 实物库存 预分拣 专题、馆 交易结算 订单详情 库存调拨 快递管理 商品详情 一键购买 履约 库存优化 物流跟踪 商品 价格 库存 配货 支付 结算
6 .互联网架构的核心问题是什么 数据 海量 伸缩 响应 性差 迟缓 规模 稳定 系统 性差 繁多 开发 困难
7 .解决方案 服务 分片 高可用 化 化 规范 异步 化 化 弹性化
8 .• 服务框架 服务 分片 化 化 规范 异步 化 化
9 .服务化框架核心概念 远程调用 异构语言 服务发现 监控报警 负载均衡 服务治理
10 .Dubbo解决方案 服务提供者 服务提供者 业务代码 业务代码 监控中心 Dubbo Dubbo 注册中心 Zookeeper 集群 Dubbo Dubbo 业务代码 业务代码 服务消费者 服务消费者
11 .Dubbo缺失的部分 远程调用 异构语言 服务发现 监控报警 负载均衡 服务治理
12 . 监控报警 监控治理中心 服务提供者 服务提供者 业务代码 业务代码 Agent Dubbo Agent Dubbo 注册中心 Zookeeper 集群 Agent Dubbo Agent Dubbo 业务代码 业务代码 SLA统计 服务消费者 服务消费者 系统调用图 报警
13 .
14 .异构语言 注册中心 Zookeeper 集群 监控治理中心 服务提供者 服务提供者 业务代码 业务代码 Agent DubboX Agent DubboX 负载均衡 Nginx 异构语言业务代码 异构语言业务代码 Agent Agent 服务消费者 服务消费者
15 .• 服务框架 • 数据中间层 服务 分片 化 化 规范 异步 化 化
16 .数据中间件实现方案 Proxy ORM JDBC 数据库 仅MySQL 任意 任意 ORM 任意 单一 任意 异构语言 任意 仅Java 仅Java 性能 损耗略高 损耗低 损耗低
17 .开源数据中间件现状 功能 Cobar Cobar-client TDDL 分库 支持 支持 未开源 分表 不支持 不支持 未开源 结果归并 不支持 不支持 未开源 事务 弱XA 弱XA 未开源 成熟度 中 低 -
18 .Sharding-JDBC 分库分表 事务 并 结 弱 最 T SQL SQL SQL 行 果 大 解析 改写 路由 执 归 X 努 C 行 并 A 力 C
19 .分库分表 Sharding-JDBC 应用 应用 内部实现 业务代码 业务代码 分片规则配置 Sharding- Sharding- JDBC JDBC JDBC规范重写 SQL解析 SQL改写 结果归并 SQL路由 SQL执行
20 .单库性能 单库性能损耗约0.02%
21 .多库性能 双库性能提升约94%
22 .SQL兼容性 LIMIT • LIMIT m, n => LIMIT 0, n • 跳过前n条数据 MIN,MAX • 比较并返回最小(大)值 SUM,COUNT • 多结果集累加,DISTINCT暂未实现 AVG • AVG(expr) => SUM(expr), COUNT(expr) • return SUM / COUNT ORDER BY • 排序列生成补列 • 多结果集归并排序 GROUP BY • 分组列生成补列 • 所有结果集加载至内存进行分组、聚合、排序 OR • 生成笛卡尔积的路由结果集
23 .分布式事务解决方案 XA 弱XA 柔性事务 一致性 是 否 否 性能 低 无影响 无影响 最终一致性 是 否 是 业务无感知 是 是 否
24 .柔性事务 最大努力 TCC • 最终成功 •类原生事务 • 无业务入侵 •业务感知
25 .柔性事务 – 最大努力送达型 应用 应用 事务同步送达 业务代码 业务代码 内部实现 Sharding- 执行前事件 记录事务日志 Sharding- JDBC JDBC 执行结果事件 监听执行事件 失 败 成 重试执行 功 成 业务库 功 清理事务日志 异步送达作业 读取事务库 重试执行 成 功 清理事务日志 事务库
26 .Roadmap 分布式主键 读写分离 HA相关 动态扩容 字典表复制广播
27 .• 服务框架 • 数据中间层 服务 分片 化 化 规范 异步 化 化 • 任务调度 • 消息队列
28 .任务调度 VS 消息队列 时间驱动 事件驱动 • 批量处理 • 逐条处理 • 系统内部 • 系统解耦
29 . 扩展性 非功能需求 灵活性 稳定性 elastic-job 易用性 异构语言 核心功能 集中管理 弹性扩容 并行调度 分布式