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