淘宝Java中间件之路

4,448 views
4,185 views

Published on

淘宝,JAVA,中间件,架构,taobao

Published in: Technology
1 Comment
13 Likes
Statistics
Notes
  • 多谢多谢,写的非常好
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
No Downloads
Views
Total views
4,448
On SlideShare
0
From Embeds
0
Number of Embeds
1,067
Actions
Shares
0
Downloads
0
Comments
1
Likes
13
Embeds 0
No embeds

No notes for slide

淘宝Java中间件之路

  1. 1. 淘宝Java中间件之路 SACC2011
  2. 2. About me • 姓名:曾宪杰 • 花名:华黎 • 淘宝-产品技术-通用产品 • 团队博客 http://rdc.taobao.com/team/jm/ • Sina微博 @曾宪杰_华黎 • Twitter @vanadies10 SACC2011
  3. 3. Agenda• 淘宝没有Java中间件之前• Java中间件在淘宝的诞生和发展• Java中间件在淘宝的现状和未来 SACC2011
  4. 4. 淘宝没有Java中间件之前 SACC2011
  5. 5. 那是在2007年下半年的时候 LoadBalance CDN WebApp WebApp 分布 搜索 Cache 式存 储 DB DB SACC2011
  6. 6. Java中间件在淘宝的诞生和发展 消息中间件 服务框架 分布式数据层 SACC2011
  7. 7. 消息中间件-Notify SACC2011
  8. 8. 消息中间件• Message-oriented middleware (MOM) is software infrastructure focused on sending and receiving messages between distributed systems. --- from wikipedia.org Application A Application B Application Programming Interface Message Oriented Middleware• MOM的优点 – 松耦合 – 异步处理 SACC2011
  9. 9. 消息中间件 定时程序 业务系统 获取任务 Do something Do action 业务DB• 业务系统完成一件事情后,需要其他系统进行处理的,通 过定时程序来驱动 SACC2011
  10. 10. 消息中间件-我们的需求• 轻量级支持最终一致• 支持订阅者集群• 消息可靠 SACC2011
  11. 11. 消息中间件-最终一致性 本地事务域 T4业务操作 Publisher 业务操作 T1 T3返 T5 S1 发 回消 提 定期 送 息入 交/ 检查 S2提交/回滚 hal 库结 回 未提 f消 果 滚 交的 息 消息 T2存储half消息 Notify Storage S3 提交:更新数据库 标识消息可发送 T6 提交:更新数据库 回滚:删除消息 标识消息可发送 本地事务域 回滚:删除消息 SACC2011
  12. 12. 消息中间件-订阅者集群 订阅者集群:消息的一个逻辑上的订阅者是有多个物理节点组成 的一个集群 SubscriberA A1 A2 Publisher Notify SubscriberB B1 B2 A1和A2是SystemA中的两个机器 A1和A2共同来消费投递到SystemA的消息 B1和B2也是类似的关系 SACC2011
  13. 13. 消息中间件-Queue In JMS• 每个连接都有唯一的ClientId JMS Server 消息(1-8) Queue A1 A2 B1 B2 1,5 2,6 3,7 4,8 SACC2011
  14. 14. 消息中间件-Topic In JMS• 每个连接都有唯一的ClientId A1 1-8 JMS Server A2 1-8消息(1-8) Topic B1 1-8 B2 1-8 SACC2011
  15. 15. 消息中间件-消息可靠• Oracle+小型机+高端存储• 写双份Mysql• Mysql Replication• 基于文件• 基于内存. SACC2011
  16. 16. 有了Notify之后 LoadBalance CDN WebApp WebApp 消息 分布 中间 搜索 Cache 式存 件 储 (Notify) DB DB SACC2011
  17. 17. 服务框架-HSF SACC2011
  18. 18. 服务框架-当时面临的问题• 上百人维护一个代码百万行的前台核心应用 – 共享一个代码模块,部署分离• 多个业务系统中的代码重复编写• 数据库连接数接近瓶颈 SACC2011 混乱,混乱,混乱
  19. 19. 服务框架-系统示意结构 商品 商品 登录 登录 交易 交易 系统 系统 注册 注册 系统 系统 商品 用户 交易 中心 中心 中心 商品 用户 交易服务化 解决了业务核心的稳定和一致的问题 解决了重要数据库的连接数的问题 系统分解后,提升了效率和稳定性 SACC2011
  20. 20. 服务框架-我们的需求• 简单好用,像使用Spring Bean一样• 请求路由灵活可控• 提供稳定性支持. SACC2011
  21. 21. 服务框架• 系统间调用 How? 调用者 服务提供者 SACC2011
  22. 22. 服务框架• 系统间调用 How? 调用者 服务提供者 调用者 服务提供者 SACC2011
  23. 23. 服务框架• 系统间调用 调用者 服务提供者 调用者 服务提供者 调用者 服务提供者 调用者 服务提供者 SACC2011
  24. 24. 服务框架-结构 服务提 调用者 供者 HSF HSF 请求直接送达服务端 没有中心代理服务器 服务提 调用者 供者 HSF HSF 服务注册 查找中心定于服务地址信息 发布服务地址信息 中心会主动推送 SACC2011
  25. 25. 服务框架-结构 服务提 调用者 供者 HSF HSF 请求直接送达服务端 没有中心代理服务器 服务提 调用者 供者 HSF HSF 服务注册 查找中心定于服务地址信息 发布服务地址信息 中心会主动推送 SACC2011
  26. 26. 服务框架-路由 调用者 HSF 配置中心 调用者 HSF 推送路由规则 基于接口的路由 基于方法的路由 基于参数的路由 SACC2011
  27. 27. 服务框架-服务端保护 服务提 供者 HSF 配置中心 服务提 供者 HSF 推送保护策略 线程池隔离和并发数控制 基于请求来源的流控 SACC2011
  28. 28. 有了HSF之后 LoadBalance CDN WebApp WebApp 消息 分布 中间 搜索 Cache 式存 服务框架(HSF) 件 储 (Notify) Service Service DB DB SACC2011
  29. 29. 分布式数据层-TDDL SACC2011
  30. 30. 分布式数据层数据库架构的演进 垂直 分库 User1 读写 User1-M User1-S 拆分 分表 分离Trade User/User User2 User2-M User2-S Trade SACC2011
  31. 31. 分布式数据层 SACC2011
  32. 32. 分布式数据层 SACC2011
  33. 33. 分布式数据层 TAtomDataSource User1-M User1-S TDataSource User2-M User2-S数据源的三层重构 TGroupDataSource业务可以灵活选择 SACC2011
  34. 34. 分布式数据层-读写分离Master Slave SACC2011
  35. 35. 分布式数据层-读写分离SlaveMaster1 Slave1-1 Slave1-2通过拦截SQL操作->记录日志->完成复制支持不同维度、不同目标的复制目前也完成了对于Mysql的日志解析,可以基于日志进行复制 SACC2011
  36. 36. 分布式数据层-提供DbProxy• Client->DB方式走向了Client->Server->DB SACC2011
  37. 37. 分布式数据层• SQL解析,路由规则,数据合并• Client->DB和Client->Server->DB模式• 非对称数据复制• 三层的数据源结构 SACC2011
  38. 38. 有了TDDL之后 LoadBalance CDN WebApp WebApp 消息 分布 中间 搜索 Cache 式存 服务框架(HSF) 件 储 (Notify) Service Service T T d d d d l l DB Tddl DB SACC2011
  39. 39. Java中间件在淘宝的现状和未来 SACC2011
  40. 40. Java中间件现状-一些数据• Notify – 每日消息总量 4.4亿。Half消息的量 1亿5千万/天;Committed的消息的量 2亿9千万/ 天 – 每日消息投递条次约15亿次 – 平均消息大小1.8k – 总共78个消息主题,786种消息类型,部分消息的订阅者超过30个集群• HSF – 线上提供服务数量:600+ – 每日总调用量:150亿+• TDDL – 每日SQL执行量,30亿+。 – 每日数据复制量约2.8亿+。 SACC2011
  41. 41. Java中间件现状-存在的问题• 易用性 – 开发 – 调试 – 运维• 稳定性 – 降级 – 隔离 – 对应用的保护 SACC2011
  42. 42. Java中间件未来• 开源• 根据业务需求的新功能• 易用性和稳定性 SACC2011
  43. 43. Thanks ! SACC2011

×