一天交易达十亿次: 由核心J2Ee(Tm) 模式架构成的J2Ee(Tm)系统

55
| JavaOne 2003 | Session 3264 一天点击十亿次 由核心 J2EE™ 模式架构 成的 J2EE™ 系统 Deepak Alur Rajmohan Krishnamurthy 软件服务 Sun Professional Services Arnold Goldberg 领导架构平台 eBay.Com

Transcript of 一天交易达十亿次: 由核心J2Ee(Tm) 模式架构成的J2Ee(Tm)系统

Page 1: 一天交易达十亿次: 由核心J2Ee(Tm) 模式架构成的J2Ee(Tm)系统

| JavaOne 2003 | Session 3264

一天点击十亿次

由核心 J2EE™ 模式架构成的 J2EE™ 系统

Deepak AlurRajmohan Krishnamurthy软件服务Sun Professional Services

Arnold Goldberg领导架构平台eBay.Com

Page 2: 一天交易达十亿次: 由核心J2Ee(Tm) 模式架构成的J2Ee(Tm)系统

| JavaOne 2003 | Session 32641

讲座目标

学习如何使用核心 J2EE™ 模式架构并建立一个大规模的、多层次的 J2EE™应用程序

Page 3: 一天交易达十亿次: 由核心J2Ee(Tm) 模式架构成的J2Ee(Tm)系统

| JavaOne 2003 | Session 32641

讲师资格

• Deepak Alur ─ SunPS™ 程序的高级软件工程师

─ “核心 J2EE™ 模式”的合著者

─ Sun-eBay V3 架构—小组领导人

• Arnold Goldberg─ eBay.com 平台的首席工程师

─ 领导 V3 的架构,设计和实现

• Raj Krishnamurthy─ SunPS™ 程序的软件工程师

─ Sun-eBay V3 架构小组—主要成员

Page 4: 一天交易达十亿次: 由核心J2Ee(Tm) 模式架构成的J2Ee(Tm)系统

| JavaOne 2003 | Session 32641

议程

• 核心 J2EE™ 模式介绍

• eBay V3 架构目标

• 主要架构和技术决议

• 在 eBay.com 应用核心 J2EE™ 模式

• 总结

• 问与答

Page 5: 一天交易达十亿次: 由核心J2Ee(Tm) 模式架构成的J2Ee(Tm)系统

| JavaOne 2003 | Session 32641

目标

• 理解 :─ eBay.com 是怎样构建的

─模式在架构中的角色

─使用核心 J2EE™ 模式的益处

Page 6: 一天交易达十亿次: 由核心J2Ee(Tm) 模式架构成的J2Ee(Tm)系统

| JavaOne 2003 | Session 32641

eBay ,何许人?

• 使命─ 全球交易平台

─ 拍卖,固定价格模式, B2C, B2B

• 市场 / 现状

─ 6900 万个注册用户

─ 囊括 28000 类、 1600 万件商品

─ 2002 :总销售收入 =148.7 亿美元

─ 全球组织

─ 每天 10 亿次的点击率

─ 1200 多个 URL

Page 7: 一天交易达十亿次: 由核心J2Ee(Tm) 模式架构成的J2Ee(Tm)系统

| JavaOne 2003 | Session 32641

为什么是 Java™ ,又为什么是 SunPS™?

• 为什么采用 Java™/J2EE™ 技术

─ J2EE™ 战胜了 .NET ─ 从 C++/COM 到 Java™/J2EE™ 技术的过渡

• 为什么才用 SunPS™ 项目

─ 可靠的 J2EE™ 架构经验

─ 明确的 IP 思想领导

─ SunPS™ 项目作为伙伴 / 可信任的顾问

─ 开放标准的监控器( Watch Dog )

Page 8: 一天交易达十亿次: 由核心J2Ee(Tm) 模式架构成的J2Ee(Tm)系统

| JavaOne 2003 | Session 32641

eBay: V2 架构和问题

• eBay V2 遗产系统─ 单一的双层架构

─ 330 万行 C++ ISAPI DLL─ 功能性设计

─ 不是用于系统质量的 (*ilities)

• 架构问题• 交易革新受阻

─ 规模受到几何增长的挑战

─ 耗费巨大成本的维护

─ Beyond any “Refactoring help” 超出了任何“再分解帮助“

─ 通常的防火模式中的架构

• >>>> V3 项目始于 2003 年末

Page 9: 一天交易达十亿次: 由核心J2Ee(Tm) 模式架构成的J2Ee(Tm)系统

| JavaOne 2003 | Session 32641

eBay 架构:怎样发展

Microsoft IIS

eBayISAPI.dll

MSXML

……到这儿 ?从那里……

J2EE™ 容器

Web 容器

提交层

EJB™ 容器

交易层

集成层

服务

配置

日志

安全

● 单一性● 专有性

● 分层的● 低耦合的● 模块● 基于的标准

Page 10: 一天交易达十亿次: 由核心J2Ee(Tm) 模式架构成的J2Ee(Tm)系统

| JavaOne 2003 | Session 32641

需要的是…

• 学习技术是不够的

• 最好的行业实践

• 可靠的解决方案

• 怎样避免不好的实践?

• 经验和技能

Page 11: 一天交易达十亿次: 由核心J2Ee(Tm) 模式架构成的J2Ee(Tm)系统

| JavaOne 2003 | Session 32641

《核心 J2EE™ 模式》第二版 : 刚刚发行!

Page 12: 一天交易达十亿次: 由核心J2Ee(Tm) 模式架构成的J2Ee(Tm)系统

| JavaOne 2003 | Session 32641

核心 J2EE™ 模式

• 用于 J2EE™ 架构的平台模式

• 基于我们的经验

• J2EE™ 平台的最好实践组合

• J2EE™ 架构的再分解和不好的实践

• 建立共同的词汇

• 可靠的解决方案─ 可再利用的设计

─ 稳固、可升级的架构

─ 质量提高─ 灵活性和可维护性

Page 13: 一天交易达十亿次: 由核心J2Ee(Tm) 模式架构成的J2Ee(Tm)系统

| JavaOne 2003 | Session 32641

核心 J2EE™ 模式目录

• 21 个 J2EE™ 模式分成 3 层

• 提交层模式─ 截取过滤器 (X)─ 前控制器 (X)─ 软件控制器 (X)─ 环境对象 (X)─ 视图帮助─ 综合视图─ 对工人的服务 (X)─ 发送视图

(X) = 在 eBay.com 采用

Page 14: 一天交易达十亿次: 由核心J2Ee(Tm) 模式架构成的J2Ee(Tm)系统

| JavaOne 2003 | Session 32641

核心 J2EE™ 模式目录(续)

• 交易层模式 :• 交易委托─ 服务定位 (X)─ Session Facade─ 软件服务 (X)─ 交易对象 (X)─ 综合实体─ 转移对象 (X)─ 转移对象汇编器 (X)─ 值列表处理器 (X)

(X) = 在 eBay.com 采用

Page 15: 一天交易达十亿次: 由核心J2Ee(Tm) 模式架构成的J2Ee(Tm)系统

| JavaOne 2003 | Session 32641

核心 J2EE™ 模式目录(续)

• 综合层模式 :─数据访问对象 (X)─服务催化剂

─域存储 (X)─网络服务代理 (X)

(X) = 在 eBay.com 采用

Page 16: 一天交易达十亿次: 由核心J2Ee(Tm) 模式架构成的J2Ee(Tm)系统

| JavaOne 2003 | Session 32641

前控制器 :问题

1. 请求 ???

2. 响应

问题:没有中心化的接入点,提交处理请求Web 服务器

普通请求处理逻辑 ?

在视图中复制普通逻辑客户

视图

视图

视图

Page 17: 一天交易达十亿次: 由核心J2Ee(Tm) 模式架构成的J2Ee(Tm)系统

| JavaOne 2003 | Session 32641

前控制器 : 解决

1. 请求 t客户

视图

● 指代● 视图选择● 错误处理● 模型准备

3. 解析请求

2. 普通逻辑

5. 创造

6. 执行

8. 派遣

7. 交易逻辑

4. 获得 cmd

9. 响应

命令

请求工厂

请求助手

前端控制器

Servlet

JSP

POJO

Page 18: 一天交易达十亿次: 由核心J2Ee(Tm) 模式架构成的J2Ee(Tm)系统

| JavaOne 2003 | Session 32641

议程:状态检查

• 核心 J2EE™ 模式介绍

• eBay V3 架构目标

• 主要架构和技术决议

• 在 eBay.com 应用的核心 J2EE™ 模式

• 总结

• 问与答

Page 19: 一天交易达十亿次: 由核心J2Ee(Tm) 模式架构成的J2Ee(Tm)系统

| JavaOne 2003 | Session 32641

激发快速的交易革新

激发无缝增长

以加速度交付质量功能

eBay: V3 架构目标

可用性,

可靠性

可量测性

更快交付产品

未来的架构

Page 20: 一天交易达十亿次: 由核心J2Ee(Tm) 模式架构成的J2Ee(Tm)系统

| JavaOne 2003 | Session 32641

可量测性:注册用户

0

10

20

30

40

50

60

70

1997 1998 1999 2000 2001 2002

6900 万百万

来源 : eBay 公司预计

Page 21: 一天交易达十亿次: 由核心J2Ee(Tm) 模式架构成的J2Ee(Tm)系统

| JavaOne 2003 | Session 32641

可量测性:网站的发展

输出量(高峰期)

动态页面的浏览(每天)

搜索(每天)

> 2 Gbps

380M

50M

> 5 Gbps

1B

150M

410 Mbps

86M

11M

1999 2002 2005*

* 预计

Page 22: 一天交易达十亿次: 由核心J2Ee(Tm) 模式架构成的J2Ee(Tm)系统

| JavaOne 2003 | Session 32641

可用性:网站可用性

9 9 . 0 %

9 9 . 2 %

9 9 . 4 %

9 9 . 6 %

9 9 . 8 %

1 0 0 . 0 %

1 2 32002*2000 2001

99.92% Q3-

02

99.91% Q3-01

99.64% Q2-00

网站可用性—不断创造新纪录

* 完全运行的事故恢复能力

Page 23: 一天交易达十亿次: 由核心J2Ee(Tm) 模式架构成的J2Ee(Tm)系统

| JavaOne 2003 | Session 32641

产品交付更快速

• 每个季度有超过 15 个功能投入使用

• 每周修改将近 30K 行代码

• 4 次 / 日, 5 天 /周在网站上推出 HTML

• 三周内分步的国际化发行

• 上百万用户的即时反馈

Page 24: 一天交易达十亿次: 由核心J2Ee(Tm) 模式架构成的J2Ee(Tm)系统

| JavaOne 2003 | Session 32641

为将来所作的架构

• 我们怎么衡量 :─ J2EE™ 模式和技术

─只在要求的时候采用技术

─按照需要建立新的技术

─大量的功能测试

─大量的容量规划

─我们所有调节器的大量调试

─冗余的操作架构和调节它的技术

Page 25: 一天交易达十亿次: 由核心J2Ee(Tm) 模式架构成的J2Ee(Tm)系统

| JavaOne 2003 | Session 32641

J2EE™ 技术决议

• WebSphere 应用服务器 4.0上的 J2EE™ 1.2 规定

• Servlet 2.2 • EJB™ 1.1 规定

• JMX™动态管理

• 数据源和高度测试的连接组合

• JavaMail™ API 1.1 和 HA SendMail簇• WebSphere PMI 和 Tivoli 监视• 监视应用程序的自定义状态页

Page 26: 一天交易达十亿次: 由核心J2Ee(Tm) 模式架构成的J2Ee(Tm)系统

| JavaOne 2003 | Session 32641

可量测性决议

• 明智使用服务器边的状态

• 与服务器无关

• 功能服务器组合

• 水平与竖直数据库分区

Page 27: 一天交易达十亿次: 由核心J2Ee(Tm) 模式架构成的J2Ee(Tm)系统

| JavaOne 2003 | Session 32641

允许数据访问的可测量性

• 继实体 beans之后模拟我们的数据访问层

• 支持良好定义的数据访问模式─ 关系和折流

─ 超高速缓存—本地和全局

• 自定义 O-R映射—域存储模式

• 持续对象的代码产生

• 支持缓慢负载• 支持取装集合(前层 /深层取装)

• 支持取得和发送数据(读 /写集合)

Page 28: 一天交易达十亿次: 由核心J2Ee(Tm) 模式架构成的J2Ee(Tm)系统

| JavaOne 2003 | Session 32641

允许数据存储的可测量性

• 交易层上的交易

─ Bean只管理交易

─ XA 的明智使用

─ 自动结合数据库

• 基于内容的路由

─ O-R 映射路由运行时改正数据源

─ 允许数据库的水平可测量性

Page 29: 一天交易达十亿次: 由核心J2Ee(Tm) 模式架构成的J2Ee(Tm)系统

| JavaOne 2003 | Session 32641

允许数据存储的可用性

• 基于内容的路由 :─可定义故障切换主机

• 数据源管理 :─动态的

─可用性的明显提示性控制

─如果数据库掉了,应用程序仍服务于其它请求

Page 30: 一天交易达十亿次: 由核心J2Ee(Tm) 模式架构成的J2Ee(Tm)系统

| JavaOne 2003 | Session 32641

未来:技术

• 信息

─子系统之间及与数据库间的低耦合

─需要在 J2EE™ 1.3 规定中包括信息驱动 beans

Page 31: 一天交易达十亿次: 由核心J2Ee(Tm) 模式架构成的J2Ee(Tm)系统

| JavaOne 2003 | Session 32641

未来:技术

• SOAP─允许外部开发人员和合作伙伴通过不同方法和最好的实践调节我们的平台

─在不同的 eBay™ 应用程序之间标准化内部处理

通信

─改进 SOAP来满足我们的 QoS 要求

Page 32: 一天交易达十亿次: 由核心J2Ee(Tm) 模式架构成的J2Ee(Tm)系统

| JavaOne 2003 | Session 32641

议程:状态检查

• 介绍核心 J2EE™ 模式

• eBay V3 架构目标

• 主要架构和技术决议

• 在 eBay.com 应用的核心 J2EE™ 模式

• 总结

• 问答

Page 33: 一天交易达十亿次: 由核心J2Ee(Tm) 模式架构成的J2Ee(Tm)系统

| JavaOne 2003 | Session 32641

在 eBay 应用 J2EE™ 模式

• 使用场合

─查看帐户信息

─浏览商品

─ eBay API

• 使用模式的设计映射要求

Page 34: 一天交易达十亿次: 由核心J2Ee(Tm) 模式架构成的J2Ee(Tm)系统

| JavaOne 2003 | Session 32641

使用场合:查看帐户信息

注册用户

我的 eBay 账号

查看帐户信息包括注册用户在 eBay进行的交易记录

Page 35: 一天交易达十亿次: 由核心J2Ee(Tm) 模式架构成的J2Ee(Tm)系统

| JavaOne 2003 | Session 32641

查询结果

屏幕:查看帐户信息的结果

Page 36: 一天交易达十亿次: 由核心J2Ee(Tm) 模式架构成的J2Ee(Tm)系统

| JavaOne 2003 | Session 32641

查看帐户信息设计要求

普通认证

集中请求处理

用例商业逻辑

创建结果列表

获取数据

服务层次要求

Page 37: 一天交易达十亿次: 由核心J2Ee(Tm) 模式架构成的J2Ee(Tm)系统

| JavaOne 2003 | Session 32641

查看帐户信息设计请求的处理

截取过滤器

前处理器

应用控制器

交易代理服务定位器

指令 /视图 XML 注册 XML

环境物件

Page 38: 一天交易达十亿次: 由核心J2Ee(Tm) 模式架构成的J2Ee(Tm)系统

| JavaOne 2003 | Session 32641

查看帐户信息设计交易逻辑的执行

交易代理 SessionFacade

应用服务

价值列表处理器

数据访问对象

转移对象

Page 39: 一天交易达十亿次: 由核心J2Ee(Tm) 模式架构成的J2Ee(Tm)系统

| JavaOne 2003 | Session 32641

查看帐户信息设计 : 产生回应

前控制器

应用控制器

交易代理

合成视图

变换器

分配器

导航器

Page 40: 一天交易达十亿次: 由核心J2Ee(Tm) 模式架构成的J2Ee(Tm)系统

| JavaOne 2003 | Session 32641

使用场合:浏览商品

任何用户

浏览商品

任何用户可以查看任何竞价或销售的商品(房地产、汽车、古董、票据,等等)

Page 41: 一天交易达十亿次: 由核心J2Ee(Tm) 模式架构成的J2Ee(Tm)系统

| JavaOne 2003 | Session 32641

屏幕:浏览商品

浏览项目详情

Page 42: 一天交易达十亿次: 由核心J2Ee(Tm) 模式架构成的J2Ee(Tm)系统

| JavaOne 2003 | Session 32641

浏览商品的设计要求

集中请求处理

转换成交易指令

使用场合交易逻辑

获取数据

汇集数据

商品 /竞价 特定交易逻辑

Page 43: 一天交易达十亿次: 由核心J2Ee(Tm) 模式架构成的J2Ee(Tm)系统

| JavaOne 2003 | Session 32641

浏览商品的设计

前控制器

应用控制器

交易代理 SessionFacade

转移对象汇集器

交易目标

数据接入对象

合成转移目标

服务定位器

应用服务

Page 44: 一天交易达十亿次: 由核心J2Ee(Tm) 模式架构成的J2Ee(Tm)系统

| JavaOne 2003 | Session 32641

eBay API ( Web 服务)目标

• 允许革新

• 开放开发人员程序

─开发人员中的新交易模型

• 使交易更迅速、安全、简便

─提供安全、稳定和可测量的架构

• 扩展平台

─平台中的 B2B, B2C, 和 C2C 性能

Page 45: 一天交易达十亿次: 由核心J2Ee(Tm) 模式架构成的J2Ee(Tm)系统

| JavaOne 2003 | Session 32641

eBay API ( Web 服务)设计

XML反馈

应用程序控制器

环境目标

Web 服务经纪

转移对象

服务定位器 交易代理 应用服务器

Web 服务前控制器

截取过滤器

Page 46: 一天交易达十亿次: 由核心J2Ee(Tm) 模式架构成的J2Ee(Tm)系统

| JavaOne 2003 | Session 32641

议程:状态检查

• 介绍核心 J2EE™ 模式

• eBay V3 架构目标

• 主要架构和技术决议

• 在 eBay.com 应用核心 J2EE™ 模式

• 总结

• 问与答

Page 47: 一天交易达十亿次: 由核心J2Ee(Tm) 模式架构成的J2Ee(Tm)系统

| JavaOne 2003 | Session 32641

eBay.com: 提交层

请求

反馈

客户端

交易服务

指令

请求处理器

前控制器

截取过滤器

导航器 发送器

导航 和发送

查看处理器

变换器帮助

截取过滤器 查看处理器

交易代理

服务定位器

XML

XSL核心 J2EE

模式

策略

服务界面

Page 48: 一天交易达十亿次: 由核心J2Ee(Tm) 模式架构成的J2Ee(Tm)系统

| JavaOne 2003 | Session 32641

eBay.com: 交易层

命令

数据源

发送

应用控制器

商业逻辑 /数据

对象

DAO

应用程序服务

连续性

环境对象

转换对象汇编器

交易对象

价值列表管理

域存储器

核心 J2EE

模式

策略

Page 49: 一天交易达十亿次: 由核心J2Ee(Tm) 模式架构成的J2Ee(Tm)系统

| JavaOne 2003 | Session 32641

最终 eBay.Com 架构

J2EE™ 容器

Web容器

提交层

EJB™ 容器

交易层

集成层

服务架构

配置个架构利用

JMX

技术

XMLXSLT Servlets JSP™Pages

XML

XML

基本规则和政策架构

EJB部件

Java™交易对象

数据访问对象

数据对象

日志架构利用

Apac

he L

og4J

安全架构利用

Cus

tom

and

J2E

E安全

普通设备和服务

Page 50: 一天交易达十亿次: 由核心J2Ee(Tm) 模式架构成的J2Ee(Tm)系统

| JavaOne 2003 | Session 32641

总结

• 通过核心 J2EE™ 模式实现的 eBay.com 架构

─ 防止了重复发明,提高了再利用性

─ 可靠的解决方案及策略

─ 开发人员 / 工程师词汇

─ 更快的发展

• 学习和在你开发活动中采用模式

• 参加模式团体

Page 51: 一天交易达十亿次: 由核心J2Ee(Tm) 模式架构成的J2Ee(Tm)系统

| JavaOne 2003 | Session 32641

你可以:

• 检查 eBay.com:─ http://www.ebay.com

• 检查 CJP:─ http://java.sun.com/blueprints/corej2eepatterns

• 订阅 :─ http://archives.java.sun/j2eepatterns-interest.html

• 写信给我们 :─ [email protected]

• 阅读 / 学习 :─ 核心 J2EE™ 模式

Page 52: 一天交易达十亿次: 由核心J2Ee(Tm) 模式架构成的J2Ee(Tm)系统

| JavaOne 2003 | Session 32641

更多信息

• 参加核心 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

Page 53: 一天交易达十亿次: 由核心J2Ee(Tm) 模式架构成的J2Ee(Tm)系统

| JavaOne 2003 | Session 32641

假如你只记得一件事

模式是开发人员 / 工程师工具箱中的有力帮助。模式可以帮助你实现设计再利用,加速发展,减少维护并增进理解。

Page 54: 一天交易达十亿次: 由核心J2Ee(Tm) 模式架构成的J2Ee(Tm)系统

| JavaOne 2003 | Session 3264

问与答

Page 55: 一天交易达十亿次: 由核心J2Ee(Tm) 模式架构成的J2Ee(Tm)系统

| JavaOne 2003 | Session 3264