More Related Content
Similar to 一天交易达十亿次: 由核心J2Ee(Tm) 模式架构成的J2Ee(Tm)系统
Similar to 一天交易达十亿次: 由核心J2Ee(Tm) 模式架构成的J2Ee(Tm)系统 (20)
一天交易达十亿次: 由核心J2Ee(Tm) 模式架构成的J2Ee(Tm)系统
- 1. 一天点击十亿次
由核心 J2EE™ 模式架构
成的 J2EE™ 系统
Deepak Alur
Rajmohan Krishnamurthy
软件服务
Sun Professional Services
Arnold Goldberg
领导架构平台
eBay.Com
| JavaOne 2003 | Session 3264
- 2. 讲座目标
学习如何使用核心 J2EE™ 模式架构并
建立一个大规模的、多层次的 J2EE™
应用程序
1 | JavaOne 2003 | Session 3264
- 3. 讲师资格
• Deepak Alur
─ SunPS™ 程序的高级软件工程师
─ “ 核心 J2EE™ 模式”的合著者
─ Sun-eBay V3 架构—小组领导人
• Arnold Goldberg
─ eBay.com 平台的首席工程师
─ 领导 V3 的架构,设计和实现
• Raj Krishnamurthy
─ SunPS™ 程序的软件工程师
─ Sun-eBay V3 架构小组—主要成员
1 | JavaOne 2003 | Session 3264
- 4. 议程
• 核心 J2EE™ 模式介绍
• eBay V3 架构目标
• 主要架构和技术决议
• 在 eBay.com 应用核心 J2EE™ 模式
• 总结
• 问与答
1 | JavaOne 2003 | Session 3264
- 5. 目标
• 理解 :
─ eBay.com 是怎样构建的
─ 模式在架构中的角色
─ 使用核心 J2EE™ 模式的益处
1 | JavaOne 2003 | Session 3264
- 6. eBay ,何许人?
• 使命
─ 全球交易平台
─ 拍卖,固定价格模式, B2C, B2B
• 市场 / 现状
─ 6900 万个注册用户
─ 囊括 28000 类、 1600 万件商品
─ 2002 :总销售收入 =148.7 亿美元
─ 全球组织
─ 每天 10 亿次的点击率
─ 1200 多个 URL
1 | JavaOne 2003 | Session 3264
- 7. 为什么是 Java™ ,又为什么是
SunPS™?
• 为什么采用 Java™/J2EE™ 技术
─ J2EE™ 战胜了 .NET
─ 从 C++/COM 到 Java™/J2EE™ 技术的过渡
• 为什么才用 SunPS™ 项目
─ 可靠的 J2EE™ 架构经验
─ 明确的 IP 思想领导
─ SunPS™ 项目作为伙伴 / 可信任的顾问
─ 开放标准的监控器( Watch Dog )
1 | JavaOne 2003 | Session 3264
- 8. eBay: V2 架构和问题
• eBay V2 遗产系统
─ 单一的双层架构
─ 330 万行 C++ ISAPI DLL
─ 功能性设计
─ 不是用于系统质量的 (*ilities)
• 架构问题
• 交易革新受阻
─ 规模受到几何增长的挑战
─ 耗费巨大成本的维护
─ Beyond any “Refactoring help” 超出了任何“再分解帮助“
─ 通常的防火模式中的架构
• >>>> V3 项目始于 2003 年末
1 | JavaOne 2003 | Session 3264
- 9. eBay 架构:怎样发展
从那里…… …… 到这儿 ?
Microsoft IIS J2EE™ 容器
W eb 容器 服务
提交层
eBayISAPI.dll
配置
日志
安全
EJB™ 容器
交易层
MSXML
集成层
●
单一性 ●
分层的
●
专有性 ●
低耦合的
●
模块
1 | JavaOne 2003 | Session 3264
●
基于的标准
- 10. 需要的是…
• 学习技术是不够的
• 最好的行业实践
• 可靠的解决方案
• 怎样避免不好的实践?
• 经验和技能
1 | JavaOne 2003 | Session 3264
- 12. 核心 J2EE™ 模式
• 用于 J2EE™ 架构的平台模式
• 基于我们的经验
• J2EE™ 平台的最好实践组合
• J2EE™ 架构的再分解和不好的实践
• 建立共同的词汇
• 可靠的解决方案
─ 可再利用的设计
─ 稳固、可升级的架构
─ 质量提高
─ 灵活性和可维护性
1 | JavaOne 2003 | Session 3264
- 13. 核心 J2EE™ 模式目录
• 21 个 J2EE™ 模式分成 3 层
• 提交层模式
─ 截取过滤器 (X)
─ 前控制器 (X)
─ 软件控制器 (X)
─ 环境对象 (X)
─ 视图帮助
─ 综合视图
─ 对工人的服务 (X)
─ 发送视图
(X) = 在 eBay.com 采用
1 | JavaOne 2003 | Session 3264
- 14. 核心 J2EE™ 模式目录(续)
• 交易层模式 :
• 交易委托
─ 服务定位 (X)
─ Session Facade
─ 软件服务 (X)
─ 交易对象 (X)
─ 综合实体
─ 转移对象 (X)
─ 转移对象汇编器 (X)
─ 值列表处理器 (X)
(X) = 在 eBay.com 采用
1 | JavaOne 2003 | Session 3264
- 15. 核心 J2EE™ 模式目录(续)
• 综合层模式 :
─ 数据访问对象 (X)
─ 服务催化剂
─ 域存储 (X)
─ 网络服务代理 (X)
(X) = 在 eBay.com 采用
1 | JavaOne 2003 | Session 3264
- 16. 前控制器 :
问题
Web 服务器
问题:没有中心化的接入点,提交处理请求
普通请求
处理逻辑 ?
???
1. 请求 在视图中复制
客户 普通逻辑
视图
视图
视图
2. 响应
1 | JavaOne 2003 | Session 3264
- 17. 前控制器 : 解决
●
指代
●
视图选择 请求助手
●
错误处理 3. 解析请求
●
模型准备 请求工厂
5. 创造
1. 请求 t 4. 获得 cmd
前端
客户 控制器
6. 执行 命令
8. 派遣
2. 普通逻辑
9. 响应 视图
7. 交易逻辑
Servlet
JSP
POJO
1 | JavaOne 2003 | Session 3264
- 18. 议程:状态检查
• 核心 J2EE™ 模式介绍
• eBay V3 架构目标
• 主要架构和技术决议
• 在 eBay.com 应用的核心 J2EE™ 模式
• 总结
• 问与答
1 | JavaOne 2003 | Session 3264
- 19. eBay: V3 架构目标
可用性,
可靠性 激发无缝增长
可量测性
更快交付产品 以加速度交付质量功能
未来的架构
激发快速的交易革新
1 | JavaOne 2003 | Session 3264
- 20. 可量测性:注册用户
百万
6900 万
70
60
50
40
30
20
10
0
1997 1998 1999 2000 2001 2002
来源 : eBay 公司预计
1 | JavaOne 2003 | Session 3264
- 21. 可量测性:网站的发展
1999 2002 2005*
410 Mbps > 2 Gbps > 5 Gbps
输出量(高峰期)
动态页面的浏览(每天)
搜索(每天) 86M 380M 1B
11M 50M 150M
* 预计
1 | JavaOne 2003 | Session 3264
- 22. 可用性:网站可用性
网站可用性—不断创造新纪录
99.91% 99.92
100. 0% Q3-01 % Q3-
02
99. 8% 99.64%
Q2-00
99. 6%
99. 4%
99. 2%
99. 0%
2000
1 2001
2 2002*
3
* 完全运行的事故恢复能力
1 | JavaOne 2003 | Session 3264
- 23. 产品交付更快速
• 每个季度有超过 15 个功能投入使用
• 每周修改将近 30K 行代码
• 4 次 / 日, 5 天 / 周在网站上推出 HTML
• 三周内分步的国际化发行
• 上百万用户的即时反馈
1 | JavaOne 2003 | Session 3264
- 24. 为将来所作的架构
• 我们怎么衡量 :
─ J2EE™ 模式和技术
─ 只在要求的时候采用技术
─ 按照需要建立新的技术
─ 大量的功能测试
─ 大量的容量规划
─ 我们所有调节器的大量调试
─ 冗余的操作架构和调节它的技术
1 | JavaOne 2003 | Session 3264
- 25. J2EE™ 技术决议
• WebSphere 应用服务器 4.0 上的 J2EE™ 1.2 规定
• Servlet 2.2
• EJB™ 1.1 规定
• JMX™ 动态管理
• 数据源和高度测试的连接组合
• JavaMail™ API 1.1 和 HA SendMail 簇
• WebSphere PMI 和 Tivoli 监视
• 监视应用程序的自定义状态页
1 | JavaOne 2003 | Session 3264
- 26. 可量测性决议
• 明智使用服务器边的状态
• 与服务器无关
• 功能服务器组合
• 水平与竖直数据库分区
1 | JavaOne 2003 | Session 3264
- 27. 允许数据访问的可测量性
• 继实体 beans 之后模拟我们的数据访问层
• 支持良好定义的数据访问模式
─ 关系和折流
─ 超高速缓存—本地和全局
• 自定义 O-R 映射—域存储模式
• 持续对象的代码产生
• 支持缓慢负载
• 支持取装集合(前层 / 深层取装)
• 支持取得和发送数据(读 / 写集合)
1 | JavaOne 2003 | Session 3264
- 28. 允许数据存储的可测量性
• 交易层上的交易
─ Bean 只管理交易
─ XA 的明智使用
─ 自动结合数据库
• 基于内容的路由
─ O-R 映射路由运行时改正数据源
─ 允许数据库的水平可测量性
1 | JavaOne 2003 | Session 3264
- 29. 允许数据存储的可用性
• 基于内容的路由 :
─ 可定义故障切换主机
• 数据源管理 :
─ 动态的
─ 可用性的明显提示性控制
─ 如果数据库掉了,应用程序仍服务于其它请求
1 | JavaOne 2003 | Session 3264
- 30. 未来:技术
• 信息
─ 子系统之间及与数据库间的低耦合
─ 需要在 J2EE™ 1.3 规定中包括信息驱动 beans
1 | JavaOne 2003 | Session 3264
- 31. 未来:技术
• SOAP
─ 允许外部开发人员和合作伙伴通过不同方法和最
好的实践调节我们的平台
─ 在不同的 eBay™ 应用程序之间标准化内部处理
通信
─ 改进 SOAP 来满足我们的 QoS 要求
1 | JavaOne 2003 | Session 3264
- 32. 议程:状态检查
• 介绍核心 J2EE™ 模式
• eBay V3 架构目标
• 主要架构和技术决议
• 在 eBay.com 应用的核心 J2EE™ 模式
• 总结
• 问答
1 | JavaOne 2003 | Session 3264
- 33. 在 eBay 应用 J2EE™ 模式
• 使用场合
─ 查看帐户信息
─ 浏览商品
─ eBay API
• 使用模式的设计映射要求
1 | JavaOne 2003 | Session 3264
- 34. 使用场合:查看帐户信息
我的 eBay 账号
注册用户
查看帐户信息包括注册用户在 eBay
进行的交易记录
1 | JavaOne 2003 | Session 3264
- 36. 查看帐户信息
设计要求
普通认证 服务层次要求
集中请求处理
用例
商业逻辑
创建 获取数据
结果列表
1 | JavaOne 2003 | Session 3264
- 37. 查看帐户信息设计
请求的处理
截取过滤器
前 环境
处理器 物件
应用控制器 指令 / 视图
XML 注册 XML
服务定位器 交易代理
1 | JavaOne 2003 | Session 3264
- 38. 查看帐户信息设计
交易逻辑的执行
价值列表 数据访问对象
处理器
应用服务 转移
对象
交易代理 Session
Facade
1 | JavaOne 2003 | Session 3264
- 39. 查看帐户信息设计 :
产生回应
前控制器
导航器
应用控制器
分配器
交易代理 变换器
合成视图
1 | JavaOne 2003 | Session 3264
- 40. 使用场合:浏览商品
浏览商品
任何用户
任何用户可以查看任何竞价或
销售的商品(房地产、汽车、
古董、票据,等等)
1 | JavaOne 2003 | Session 3264
- 41. 屏幕:浏览商品
浏览项目详情
1 | JavaOne 2003 | Session 3264
- 42. 浏览商品的设计要求
集中请 商品 / 竞价
求处理 特定交易逻辑
转换成
汇集数据
交易指令
使用场合
交易逻辑
获取数据
1 | JavaOne 2003 | Session 3264
- 43. 浏览商品的设计
前控制器 应用服务
应用控制器 转移对象 合成转
移目标
汇集器
交易代理 交易目标
Session
Facade
服务定位器
数据接入对象
1 | JavaOne 2003 | Session 3264
- 44. eBay API ( Web 服务)目标
• 允许革新
• 开放开发人员程序
─ 开发人员中的新交易模型
• 使交易更迅速、安全、简便
─ 提供安全、稳定和可测量的架构
• 扩展平台
─ 平台中的 B2B, B2C, 和 C2C 性能
1 | JavaOne 2003 | Session 3264
- 45. eBay API ( Web 服务)设计
截取过滤器
Web 服务
前控制器
XML 应用程序 环境目标 转移对象
反馈 控制器
服务定位器 交易代理 W eb 服务 应用服务器
经纪
1 | JavaOne 2003 | Session 3264
- 46. 议程:状态检查
• 介绍核心 J2EE™ 模式
• eBay V3 架构目标
• 主要架构和技术决议
• 在 eBay.com 应用核心 J2EE™ 模式
• 总结
• 问与答
1 | JavaOne 2003 | Session 3264
- 47. eBay.com: 提交层
请求处理器 服务界面
请求
截取 前 交易代理 交易
过滤器 控制器 指令
服务
导航 和发送
客户端
服务定位器
导航器 发送器
查看处理器 XML
核心 J2EE
截取过滤器 查看 变换器
处理器 帮助 XSL 模式
反馈 策略
1 | JavaOne 2003 | Session 3264
- 48. eBay.com: 交易层
发送 连续性
应用 域存储器 DAO 数据源
控制器
商业逻辑 / 数据
命令 环境对象
应用程序 交易对象
服务
对象
转换对象 价值列表
汇编器 管理 核心 J2EE
模式
策略
1 | JavaOne 2003 | Session 3264
- 49. 最终 eBay.Com 架构
J2EE™ 容器
Web 容器 服务架构
提交层
JSP™
XSLT XML Servlets
安全架构利用 Custom and J2EE 安全
Pages
日志架构利用 Apache Log4J
配置个架构利用 JMX 技术
普通设备和服务
EJB™ 容器
交易层
X 基本规则
M 和政策 EJB Java™
L 架构 部件 交易对象
集成层
X
M 数据访 数据
L 问对象 对象
1 | JavaOne 2003 | Session 3264
- 50. 总结
• 通过核心 J2EE™ 模式实现的 eBay.com 架构
─ 防止了重复发明,提高了再利用性
─ 可靠的解决方案及策略
─ 开发人员 / 工程师词汇
─ 更快的发展
• 学习和在你开发活动中采用模式
• 参加模式团体
1 | JavaOne 2003 | Session 3264
- 51. 你可以:
• 检查 eBay.com:
─ http://www.ebay.com
• 检查 CJP:
─ http://java.sun.com/blueprints/corej2eepatterns
• 订阅 :
─ http://archives.java.sun/j2eepatterns-interest.html
• 写信给我们 :
─ j2eepatterns-feedback@sun.com
• 阅读 / 学习 :
─ 核心 J2EE™ 模式
1 | JavaOne 2003 | Session 3264
- 52. 更多信息
• 参加核心 J2EE 模式讲座
─ TS-3235 :高级核心 J2EE 平台,企业版
( J2EE) 模式和再分解
─ 时间:星期四, 6 月 12 日, 下午 1:30-2:30
• 培训— Sun 教育课程
─ SL-500: J2EE™ Patterns J2EE™ 模式
─ SL-425: 架构和设计 J2EE™ 应用程序
─ http://suned.sun.com/US/catalog/java/j2ee.html
1 | JavaOne 2003 | Session 3264
- 53. 假如你只记得一件事
模式是开发人员 / 工程师工具箱中的有力帮
助。模式可以帮助你实现设计再利用,加速
发展,减少维护并增进理解。
1 | JavaOne 2003 | Session 3264