SlideShare a Scribd company logo
1 of 55
Download to read offline
一天点击十亿次
                                由核心 J2EE™ 模式架构
                                成的 J2EE™ 系统


                                Deepak Alur
                                Rajmohan Krishnamurthy
                                软件服务
                                Sun Professional Services

                                Arnold Goldberg
                                领导架构平台
                                eBay.Com
| JavaOne 2003 | Session 3264
讲座目标




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




1       | JavaOne 2003 | Session 3264
讲师资格

    • Deepak Alur
      ─ SunPS™ 程序的高级软件工程师
      ─ “ 核心 J2EE™ 模式”的合著者
      ─ Sun-eBay V3 架构—小组领导人

    • Arnold Goldberg
      ─ eBay.com 平台的首席工程师
      ─ 领导 V3 的架构,设计和实现

    • Raj Krishnamurthy
      ─ SunPS™ 程序的软件工程师
      ─ Sun-eBay V3 架构小组—主要成员


1            | JavaOne 2003 | Session 3264
议程

    • 核心 J2EE™ 模式介绍
    •   eBay V3 架构目标
    •   主要架构和技术决议
    •   在 eBay.com 应用核心 J2EE™ 模式
    •   总结
    •   问与答



1             | JavaOne 2003 | Session 3264
目标

    • 理解 :
      ─ eBay.com 是怎样构建的
      ─ 模式在架构中的角色
      ─ 使用核心 J2EE™ 模式的益处




1            | JavaOne 2003 | Session 3264
eBay ,何许人?

    • 使命
     ─ 全球交易平台
     ─ 拍卖,固定价格模式, B2C, B2B

    • 市场 / 现状
     ─ 6900 万个注册用户
     ─ 囊括 28000 类、 1600 万件商品
     ─ 2002 :总销售收入 =148.7 亿美元
     ─ 全球组织
     ─ 每天 10 亿次的点击率
     ─ 1200 多个 URL
1          | JavaOne 2003 | Session 3264
为什么是 Java™ ,又为什么是
    SunPS™?

    • 为什么采用 Java™/J2EE™ 技术
     ─ J2EE™ 战胜了 .NET
     ─ 从 C++/COM 到 Java™/J2EE™ 技术的过渡

    • 为什么才用 SunPS™ 项目
     ─ 可靠的 J2EE™ 架构经验
     ─ 明确的 IP 思想领导
     ─ SunPS™ 项目作为伙伴 / 可信任的顾问
     ─ 开放标准的监控器( Watch Dog )



1         | JavaOne 2003 | Session 3264
eBay: V2 架构和问题

    • eBay V2 遗产系统
      ─   单一的双层架构
      ─   330 万行 C++ ISAPI DLL
      ─   功能性设计
      ─   不是用于系统质量的 (*ilities)

    • 架构问题
    • 交易革新受阻
      ─   规模受到几何增长的挑战
      ─   耗费巨大成本的维护
      ─   Beyond any “Refactoring help” 超出了任何“再分解帮助“
      ─   通常的防火模式中的架构
    • >>>> V3 项目始于 2003 年末
1             | JavaOne 2003 | Session 3264
eBay 架构:怎样发展

    从那里……                                         …… 到这儿         ?
    Microsoft IIS                                          J2EE™ 容器
                                                      W eb 容器       服务
                                                       提交层

        eBayISAPI.dll




                                                                 配置
                                                                      日志
                                                                      安全
                                                      EJB™ 容器
                                                       交易层
          MSXML
                                                       集成层



    ●
        单一性                                       ●
                                                      分层的
    ●
        专有性                                       ●
                                                      低耦合的
                                                  ●
                                                      模块
1                 | JavaOne 2003 | Session 3264
                                                  ●
                                                      基于的标准
需要的是…

    •   学习技术是不够的
    •   最好的行业实践
    •   可靠的解决方案
    •   怎样避免不好的实践?
    •   经验和技能




1          | JavaOne 2003 | Session 3264
《核心 J2EE™ 模式》第二版 :
    刚刚发行!




1       | JavaOne 2003 | Session 3264
核心 J2EE™ 模式

    •   用于 J2EE™ 架构的平台模式
    •   基于我们的经验
    •   J2EE™ 平台的最好实践组合
    •   J2EE™ 架构的再分解和不好的实践
    •   建立共同的词汇
    •   可靠的解决方案
        ─   可再利用的设计
        ─   稳固、可升级的架构
        ─   质量提高
        ─   灵活性和可维护性


1              | JavaOne 2003 | Session 3264
核心 J2EE™ 模式目录

    • 21 个 J2EE™ 模式分成 3 层
    • 提交层模式
      ─   截取过滤器 (X)
      ─   前控制器 (X)
      ─   软件控制器 (X)
      ─   环境对象 (X)
      ─   视图帮助
      ─   综合视图
      ─   对工人的服务 (X)
      ─   发送视图
    (X) = 在 eBay.com 采用
1            | JavaOne 2003 | Session 3264
核心 J2EE™ 模式目录(续)

    • 交易层模式 :
    • 交易委托
      ─   服务定位 (X)
      ─   Session Facade
      ─   软件服务 (X)
      ─   交易对象 (X)
      ─   综合实体
      ─   转移对象 (X)
      ─   转移对象汇编器 (X)
      ─   值列表处理器 (X)
    (X) = 在 eBay.com 采用
1             | JavaOne 2003 | Session 3264
核心 J2EE™ 模式目录(续)

    • 综合层模式 :
     ─ 数据访问对象 (X)
     ─ 服务催化剂
     ─ 域存储 (X)
     ─ 网络服务代理 (X)


(X) = 在 eBay.com 采用



1         | JavaOne 2003 | Session 3264
前控制器 :
    问题

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


                        普通请求
                        处理逻辑 ?

                       ???
         1.   请求                                      在视图中复制
    客户                                                普通逻辑
                                                视图


                                                        视图
                                                 视图
     2. 响应




1              | JavaOne 2003 | Session 3264
前控制器 : 解决

●
        指代
●
        视图选择                                            请求助手
●
        错误处理                      3. 解析请求
●
        模型准备                                                     请求工厂


                                                                         5. 创造
                  1. 请求 t                               4. 获得 cmd
                                      前端
         客户                          控制器
                                                         6. 执行          命令

                                     8. 派遣
                              2. 普通逻辑
                                              9. 响应            视图
                                                                    7. 交易逻辑
        Servlet

        JSP

        POJO
    1                   | JavaOne 2003 | Session 3264
议程:状态检查

    • 核心 J2EE™ 模式介绍
    •   eBay V3 架构目标
    •   主要架构和技术决议
    •   在 eBay.com 应用的核心 J2EE™ 模式
    •   总结
    •   问与答



1             | JavaOne 2003 | Session 3264
eBay: V3 架构目标

     可用性,
     可靠性                         激发无缝增长
     可量测性




     更快交付产品                     以加速度交付质量功能




     未来的架构
                               激发快速的交易革新



1            | JavaOne 2003 | Session 3264
可量测性:注册用户

百万
                                                                        6900 万


70
60
50
40
30
20
    10
    0
           1997           1998                 1999       2000   2001   2002
         来源 : eBay 公司预计

1                         | JavaOne 2003 | Session 3264
可量测性:网站的发展


                                           1999    2002      2005*

                                      410 Mbps    > 2 Gbps   > 5 Gbps
输出量(高峰期)
动态页面的浏览(每天)
搜索(每天)                                     86M     380M        1B

                                            11M     50M       150M




    * 预计
1          | JavaOne 2003 | Session 3264
可用性:网站可用性
    网站可用性—不断创造新纪录

                                                   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
产品交付更快速

    • 每个季度有超过 15 个功能投入使用
    • 每周修改将近 30K 行代码
    • 4 次 / 日, 5 天 / 周在网站上推出 HTML
    • 三周内分步的国际化发行
    • 上百万用户的即时反馈




1          | JavaOne 2003 | Session 3264
为将来所作的架构

    • 我们怎么衡量 :
     ─ J2EE™ 模式和技术
     ─ 只在要求的时候采用技术
     ─ 按照需要建立新的技术
     ─ 大量的功能测试
     ─ 大量的容量规划
     ─ 我们所有调节器的大量调试
     ─ 冗余的操作架构和调节它的技术



1        | JavaOne 2003 | Session 3264
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
可量测性决议

    •   明智使用服务器边的状态
    •   与服务器无关
    •   功能服务器组合
    •   水平与竖直数据库分区




1          | JavaOne 2003 | Session 3264
允许数据访问的可测量性
    • 继实体 beans 之后模拟我们的数据访问层
    • 支持良好定义的数据访问模式
        ─ 关系和折流
        ─ 超高速缓存—本地和全局
    •   自定义 O-R 映射—域存储模式
    •   持续对象的代码产生
    •   支持缓慢负载
    •   支持取装集合(前层 / 深层取装)
    •   支持取得和发送数据(读 / 写集合)


1           | JavaOne 2003 | Session 3264
允许数据存储的可测量性

    • 交易层上的交易
     ─ Bean 只管理交易
     ─ XA 的明智使用
     ─ 自动结合数据库
    • 基于内容的路由
     ─ O-R 映射路由运行时改正数据源
     ─ 允许数据库的水平可测量性




1         | JavaOne 2003 | Session 3264
允许数据存储的可用性

    • 基于内容的路由 :
     ─ 可定义故障切换主机
    • 数据源管理 :
     ─ 动态的
     ─ 可用性的明显提示性控制
     ─ 如果数据库掉了,应用程序仍服务于其它请求




1         | JavaOne 2003 | Session 3264
未来:技术

    • 信息
     ─ 子系统之间及与数据库间的低耦合
     ─ 需要在 J2EE™ 1.3 规定中包括信息驱动 beans




1          | JavaOne 2003 | Session 3264
未来:技术

    • SOAP
     ─ 允许外部开发人员和合作伙伴通过不同方法和最
       好的实践调节我们的平台
     ─ 在不同的 eBay™ 应用程序之间标准化内部处理
       通信
     ─ 改进 SOAP 来满足我们的 QoS 要求




1            | JavaOne 2003 | Session 3264
议程:状态检查

    •   介绍核心 J2EE™ 模式
    •   eBay V3 架构目标
    •   主要架构和技术决议
    •   在 eBay.com 应用的核心 J2EE™ 模式
    •   总结
    •   问答




1             | JavaOne 2003 | Session 3264
在 eBay 应用 J2EE™ 模式

    • 使用场合
     ─ 查看帐户信息
     ─ 浏览商品
     ─ eBay API
    • 使用模式的设计映射要求




1        | JavaOne 2003 | Session 3264
使用场合:查看帐户信息




                                            我的 eBay 账号

     注册用户


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




1           | JavaOne 2003 | Session 3264
屏幕:查看帐户信息的结果


                                       查询结果




1      | JavaOne 2003 | Session 3264
查看帐户信息
    设计要求

      普通认证                               服务层次要求




     集中请求处理


                                 用例
                                商业逻辑



                                  创建      获取数据
                                 结果列表


1        | JavaOne 2003 | Session 3264
查看帐户信息设计
    请求的处理

                                截取过滤器



                                     前       环境
                                    处理器      物件


                                 应用控制器       指令 / 视图
                                            XML 注册 XML


    服务定位器                         交易代理


1           | JavaOne 2003 | Session 3264
查看帐户信息设计
    交易逻辑的执行



                                 价值列表        数据访问对象
                                  处理器


                                   应用服务        转移
                                               对象


      交易代理                         Session
                                   Facade


1       | JavaOne 2003 | Session 3264
查看帐户信息设计 :
    产生回应

      前控制器
                                 导航器



      应用控制器
                                 分配器


      交易代理                          变换器



                                   合成视图



1       | JavaOne 2003 | Session 3264
使用场合:浏览商品




                                            浏览商品

     任何用户

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




1           | JavaOne 2003 | Session 3264
屏幕:浏览商品



                                       浏览项目详情




1      | JavaOne 2003 | Session 3264
浏览商品的设计要求

      集中请                               商品 / 竞价
      求处理                               特定交易逻辑



       转换成
                                        汇集数据
      交易指令
                                使用场合
                                交易逻辑
                                         获取数据




1       | JavaOne 2003 | Session 3264
浏览商品的设计

    前控制器                                     应用服务



    应用控制器                                    转移对象    合成转
                                                     移目标
                                              汇集器


    交易代理                                    交易目标
                      Session
                      Facade

    服务定位器
                                            数据接入对象


1           | JavaOne 2003 | Session 3264
eBay API ( Web 服务)目标

    • 允许革新
    • 开放开发人员程序
     ─ 开发人员中的新交易模型
    • 使交易更迅速、安全、简便
     ─ 提供安全、稳定和可测量的架构
    • 扩展平台
     ─ 平台中的 B2B, B2C, 和 C2C 性能



1         | JavaOne 2003 | Session 3264
eBay API ( Web 服务)设计

                    截取过滤器



                       Web 服务
                       前控制器



      XML              应用程序                 环境目标      转移对象
      反馈               控制器


    服务定位器             交易代理                  W eb 服务   应用服务器
                                              经纪

1           | JavaOne 2003 | Session 3264
议程:状态检查

    • 介绍核心 J2EE™ 模式
    •   eBay V3 架构目标
    •   主要架构和技术决议
    •   在 eBay.com 应用核心 J2EE™ 模式
    •   总结
    •   问与答



1             | JavaOne 2003 | Session 3264
eBay.com: 提交层

                      请求处理器                       服务界面

     请求
            截取                 前                    交易代理     交易
           过滤器                控制器           指令
                                                             服务



                  导航                      和发送
    客户端
                                                   服务定位器
           导航器                 发送器



             查看处理器                                   XML
                                                           核心 J2EE
          截取过滤器               查看            变换器
                              处理器           帮助       XSL    模式
    反馈                                                      策略
1         | JavaOne 2003 | Session 3264
eBay.com: 交易层

                              发送                   连续性
                             应用                  域存储器    DAO     数据源
                            控制器



                                     商业逻辑 / 数据
    命令   环境对象

                            应用程序            交易对象
                             服务



           对象
                            转换对象            价值列表
                            汇编器              管理                核心 J2EE
                                                                模式
                                                                策略
1        | JavaOne 2003 | Session 3264
最终 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
总结

    • 通过核心 J2EE™ 模式实现的 eBay.com 架构
      ─   防止了重复发明,提高了再利用性
      ─   可靠的解决方案及策略
      ─   开发人员 / 工程师词汇
      ─   更快的发展


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

    • 参加模式团体


1            | JavaOne 2003 | Session 3264
你可以:

    • 检查 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
更多信息

    • 参加核心 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
假如你只记得一件事




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




1      | JavaOne 2003 | Session 3264
问与答

| JavaOne 2003 | Session 3264
| JavaOne 2003 | Session 3264

More Related Content

Viewers also liked

Fonte viva (psicografia chico xavier espírito emmanuel)
Fonte viva (psicografia chico xavier   espírito emmanuel)Fonte viva (psicografia chico xavier   espírito emmanuel)
Fonte viva (psicografia chico xavier espírito emmanuel)Ricardo Akerman
 
Alternadores ( Delco Remy )
Alternadores  ( Delco Remy )Alternadores  ( Delco Remy )
Alternadores ( Delco Remy )Ricardo Akerman
 
Corporate Learning Toward Corporate University (Pembelajaran Menuju Universit...
Corporate Learning Toward Corporate University (Pembelajaran Menuju Universit...Corporate Learning Toward Corporate University (Pembelajaran Menuju Universit...
Corporate Learning Toward Corporate University (Pembelajaran Menuju Universit...Djadja Sardjana
 
20160803 axa agreement_ver1
20160803 axa agreement_ver120160803 axa agreement_ver1
20160803 axa agreement_ver1loftwork
 
アイデア創発ファシリテータ_8期 フル001
アイデア創発ファシリテータ_8期 フル001アイデア創発ファシリテータ_8期 フル001
アイデア創発ファシリテータ_8期 フル001Rikie Ishii
 
Processingでインタラクティブアート作品を作る
Processingでインタラクティブアート作品を作るProcessingでインタラクティブアート作品を作る
Processingでインタラクティブアート作品を作るYohei Tanaka
 
3GPP Newsletter: Status 5G Architecture Study in 3GPP SA2
3GPP Newsletter: Status 5G Architecture Study in 3GPP SA23GPP Newsletter: Status 5G Architecture Study in 3GPP SA2
3GPP Newsletter: Status 5G Architecture Study in 3GPP SA2Eiko Seidel
 
Ailing planet; the green movements role
Ailing planet; the green movements roleAiling planet; the green movements role
Ailing planet; the green movements roleMohammed Suhail
 

Viewers also liked (10)

2
22
2
 
Fonte viva (psicografia chico xavier espírito emmanuel)
Fonte viva (psicografia chico xavier   espírito emmanuel)Fonte viva (psicografia chico xavier   espírito emmanuel)
Fonte viva (psicografia chico xavier espírito emmanuel)
 
Alternadores ( Delco Remy )
Alternadores  ( Delco Remy )Alternadores  ( Delco Remy )
Alternadores ( Delco Remy )
 
Corporate Learning Toward Corporate University (Pembelajaran Menuju Universit...
Corporate Learning Toward Corporate University (Pembelajaran Menuju Universit...Corporate Learning Toward Corporate University (Pembelajaran Menuju Universit...
Corporate Learning Toward Corporate University (Pembelajaran Menuju Universit...
 
20160803 axa agreement_ver1
20160803 axa agreement_ver120160803 axa agreement_ver1
20160803 axa agreement_ver1
 
アイデア創発ファシリテータ_8期 フル001
アイデア創発ファシリテータ_8期 フル001アイデア創発ファシリテータ_8期 フル001
アイデア創発ファシリテータ_8期 フル001
 
Processingでインタラクティブアート作品を作る
Processingでインタラクティブアート作品を作るProcessingでインタラクティブアート作品を作る
Processingでインタラクティブアート作品を作る
 
Página web para psicoterapeutas
Página web para psicoterapeutasPágina web para psicoterapeutas
Página web para psicoterapeutas
 
3GPP Newsletter: Status 5G Architecture Study in 3GPP SA2
3GPP Newsletter: Status 5G Architecture Study in 3GPP SA23GPP Newsletter: Status 5G Architecture Study in 3GPP SA2
3GPP Newsletter: Status 5G Architecture Study in 3GPP SA2
 
Ailing planet; the green movements role
Ailing planet; the green movements roleAiling planet; the green movements role
Ailing planet; the green movements role
 

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

01.web sphere培训 j2ee服务器简介
01.web sphere培训 j2ee服务器简介01.web sphere培训 j2ee服务器简介
01.web sphere培训 j2ee服务器简介littlecong
 
张松国 腾讯微博架构介绍08
张松国 腾讯微博架构介绍08张松国 腾讯微博架构介绍08
张松国 腾讯微博架构介绍08drewz lin
 
N-layer design & development
N-layer design & developmentN-layer design & development
N-layer design & developmentXuefeng Zhang
 
合久必分,分久必合
合久必分,分久必合合久必分,分久必合
合久必分,分久必合Qiangning Hong
 
美丽说的架构发展与变迁 New
美丽说的架构发展与变迁 New美丽说的架构发展与变迁 New
美丽说的架构发展与变迁 New翀 刘
 
Full stack-development with node js
Full stack-development with node jsFull stack-development with node js
Full stack-development with node jsXuefeng Zhang
 
百度数据库中间层
百度数据库中间层百度数据库中间层
百度数据库中间层yp_fangdong
 
基于MySQL开放复制协议的同步扩展
基于MySQL开放复制协议的同步扩展基于MySQL开放复制协议的同步扩展
基于MySQL开放复制协议的同步扩展Sky Jian
 
七天基于风险测试—Chinatest
七天基于风险测试—Chinatest七天基于风险测试—Chinatest
七天基于风险测试—Chinatestdrewz lin
 
Nodejs & NAE
Nodejs & NAENodejs & NAE
Nodejs & NAEq3boy
 
My sql overview 2012 04-25 by scott chen - 30min - tw-1
My sql overview 2012 04-25 by scott chen - 30min - tw-1My sql overview 2012 04-25 by scott chen - 30min - tw-1
My sql overview 2012 04-25 by scott chen - 30min - tw-1Ivan Tu
 
美团前端架构简介
美团前端架构简介美团前端架构简介
美团前端架构简介pan weizeng
 
杜嵩 Arch summit2012 dusong@freewheel
杜嵩 Arch summit2012 dusong@freewheel杜嵩 Arch summit2012 dusong@freewheel
杜嵩 Arch summit2012 dusong@freewheeldrewz lin
 
基于My sql的分布式数据库实践 公开
基于My sql的分布式数据库实践 公开基于My sql的分布式数据库实践 公开
基于My sql的分布式数据库实践 公开YANGL *
 
電商微服務架構設計與執行
電商微服務架構設計與執行電商微服務架構設計與執行
電商微服務架構設計與執行YC Liang
 
rebar erlang 2
rebar erlang 2rebar erlang 2
rebar erlang 2致远 郑
 
亚马逊云计算Aws
亚马逊云计算Aws亚马逊云计算Aws
亚马逊云计算Aws锐 张
 
实战Ejb(最终完美版)
实战Ejb(最终完美版)实战Ejb(最终完美版)
实战Ejb(最终完美版)yiditushe
 

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

01.web sphere培训 j2ee服务器简介
01.web sphere培训 j2ee服务器简介01.web sphere培训 j2ee服务器简介
01.web sphere培训 j2ee服务器简介
 
张松国 腾讯微博架构介绍08
张松国 腾讯微博架构介绍08张松国 腾讯微博架构介绍08
张松国 腾讯微博架构介绍08
 
N-layer design & development
N-layer design & developmentN-layer design & development
N-layer design & development
 
合久必分,分久必合
合久必分,分久必合合久必分,分久必合
合久必分,分久必合
 
美丽说的架构发展与变迁 New
美丽说的架构发展与变迁 New美丽说的架构发展与变迁 New
美丽说的架构发展与变迁 New
 
Full stack-development with node js
Full stack-development with node jsFull stack-development with node js
Full stack-development with node js
 
百度数据库中间层
百度数据库中间层百度数据库中间层
百度数据库中间层
 
基于MySQL开放复制协议的同步扩展
基于MySQL开放复制协议的同步扩展基于MySQL开放复制协议的同步扩展
基于MySQL开放复制协议的同步扩展
 
七天基于风险测试—Chinatest
七天基于风险测试—Chinatest七天基于风险测试—Chinatest
七天基于风险测试—Chinatest
 
Nodejs & NAE
Nodejs & NAENodejs & NAE
Nodejs & NAE
 
BDD in .NET
BDD in .NETBDD in .NET
BDD in .NET
 
My sql overview 2012 04-25 by scott chen - 30min - tw-1
My sql overview 2012 04-25 by scott chen - 30min - tw-1My sql overview 2012 04-25 by scott chen - 30min - tw-1
My sql overview 2012 04-25 by scott chen - 30min - tw-1
 
軟體架構模式
軟體架構模式軟體架構模式
軟體架構模式
 
美团前端架构简介
美团前端架构简介美团前端架构简介
美团前端架构简介
 
杜嵩 Arch summit2012 dusong@freewheel
杜嵩 Arch summit2012 dusong@freewheel杜嵩 Arch summit2012 dusong@freewheel
杜嵩 Arch summit2012 dusong@freewheel
 
基于My sql的分布式数据库实践 公开
基于My sql的分布式数据库实践 公开基于My sql的分布式数据库实践 公开
基于My sql的分布式数据库实践 公开
 
電商微服務架構設計與執行
電商微服務架構設計與執行電商微服務架構設計與執行
電商微服務架構設計與執行
 
rebar erlang 2
rebar erlang 2rebar erlang 2
rebar erlang 2
 
亚马逊云计算Aws
亚马逊云计算Aws亚马逊云计算Aws
亚马逊云计算Aws
 
实战Ejb(最终完美版)
实战Ejb(最终完美版)实战Ejb(最终完美版)
实战Ejb(最终完美版)
 

More from yiditushe

Spring入门纲要
Spring入门纲要Spring入门纲要
Spring入门纲要yiditushe
 
J Bpm4 1中文用户手册
J Bpm4 1中文用户手册J Bpm4 1中文用户手册
J Bpm4 1中文用户手册yiditushe
 
性能测试实践2
性能测试实践2性能测试实践2
性能测试实践2yiditushe
 
性能测试实践1
性能测试实践1性能测试实践1
性能测试实践1yiditushe
 
性能测试技术
性能测试技术性能测试技术
性能测试技术yiditushe
 
Load runner测试技术
Load runner测试技术Load runner测试技术
Load runner测试技术yiditushe
 
J2 ee性能测试
J2 ee性能测试J2 ee性能测试
J2 ee性能测试yiditushe
 
面向对象的Js培训
面向对象的Js培训面向对象的Js培训
面向对象的Js培训yiditushe
 
Flex3中文教程
Flex3中文教程Flex3中文教程
Flex3中文教程yiditushe
 
开放源代码的全文检索Lucene
开放源代码的全文检索Lucene开放源代码的全文检索Lucene
开放源代码的全文检索Luceneyiditushe
 
基于分词索引的全文检索技术介绍
基于分词索引的全文检索技术介绍基于分词索引的全文检索技术介绍
基于分词索引的全文检索技术介绍yiditushe
 
Lucene In Action
Lucene In ActionLucene In Action
Lucene In Actionyiditushe
 
Lucene2 4学习笔记1
Lucene2 4学习笔记1Lucene2 4学习笔记1
Lucene2 4学习笔记1yiditushe
 
Lucene2 4 Demo
Lucene2 4 DemoLucene2 4 Demo
Lucene2 4 Demoyiditushe
 
Lucene 全文检索实践
Lucene 全文检索实践Lucene 全文检索实践
Lucene 全文检索实践yiditushe
 
Lucene 3[1] 0 原理与代码分析
Lucene 3[1] 0 原理与代码分析Lucene 3[1] 0 原理与代码分析
Lucene 3[1] 0 原理与代码分析yiditushe
 
7 面向对象设计原则
7 面向对象设计原则7 面向对象设计原则
7 面向对象设计原则yiditushe
 
10 团队开发
10  团队开发10  团队开发
10 团队开发yiditushe
 
9 对象持久化与数据建模
9  对象持久化与数据建模9  对象持久化与数据建模
9 对象持久化与数据建模yiditushe
 
8 Uml构架建模
8  Uml构架建模8  Uml构架建模
8 Uml构架建模yiditushe
 

More from yiditushe (20)

Spring入门纲要
Spring入门纲要Spring入门纲要
Spring入门纲要
 
J Bpm4 1中文用户手册
J Bpm4 1中文用户手册J Bpm4 1中文用户手册
J Bpm4 1中文用户手册
 
性能测试实践2
性能测试实践2性能测试实践2
性能测试实践2
 
性能测试实践1
性能测试实践1性能测试实践1
性能测试实践1
 
性能测试技术
性能测试技术性能测试技术
性能测试技术
 
Load runner测试技术
Load runner测试技术Load runner测试技术
Load runner测试技术
 
J2 ee性能测试
J2 ee性能测试J2 ee性能测试
J2 ee性能测试
 
面向对象的Js培训
面向对象的Js培训面向对象的Js培训
面向对象的Js培训
 
Flex3中文教程
Flex3中文教程Flex3中文教程
Flex3中文教程
 
开放源代码的全文检索Lucene
开放源代码的全文检索Lucene开放源代码的全文检索Lucene
开放源代码的全文检索Lucene
 
基于分词索引的全文检索技术介绍
基于分词索引的全文检索技术介绍基于分词索引的全文检索技术介绍
基于分词索引的全文检索技术介绍
 
Lucene In Action
Lucene In ActionLucene In Action
Lucene In Action
 
Lucene2 4学习笔记1
Lucene2 4学习笔记1Lucene2 4学习笔记1
Lucene2 4学习笔记1
 
Lucene2 4 Demo
Lucene2 4 DemoLucene2 4 Demo
Lucene2 4 Demo
 
Lucene 全文检索实践
Lucene 全文检索实践Lucene 全文检索实践
Lucene 全文检索实践
 
Lucene 3[1] 0 原理与代码分析
Lucene 3[1] 0 原理与代码分析Lucene 3[1] 0 原理与代码分析
Lucene 3[1] 0 原理与代码分析
 
7 面向对象设计原则
7 面向对象设计原则7 面向对象设计原则
7 面向对象设计原则
 
10 团队开发
10  团队开发10  团队开发
10 团队开发
 
9 对象持久化与数据建模
9  对象持久化与数据建模9  对象持久化与数据建模
9 对象持久化与数据建模
 
8 Uml构架建模
8  Uml构架建模8  Uml构架建模
8 Uml构架建模
 

一天交易达十亿次: 由核心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
  • 11. 《核心 J2EE™ 模式》第二版 : 刚刚发行! 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
  • 35. 屏幕:查看帐户信息的结果 查询结果 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
  • 54. 问与答 | JavaOne 2003 | Session 3264
  • 55. | JavaOne 2003 | Session 3264