`
marszgl
  • 浏览: 53327 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

采用Core J2EE Pattern架构的J2EE 系统,一天十亿次的访问

阅读更多
议程:

入门和Core J2EE Patterns

eBay.com三层架构的目标

关键架构和技术决策

eBay.com如何应用Core J2EE Patterns

结论





一、入门和Core J2EE Patterns

1、目标:

- eBay.com网站的架构

- 架构中模式的地位

- 使用 Core J2EE Patterns的好处



2、eBay介绍

(1)使命

1、全球交易平台

2、拍卖、定价、B2C、B2B



(2)统计数据

- 6900万注册会员

- 28000个分类,1600万商品

- 2002年营业额:148亿7千万美元

-全球社区

-每天十亿次访问量

- 1200多个URL



3、eBay旧的二层架构及其存在的问题

(1)ebay旧的二层架构

-集成在一起的两层架构(架构中各组件之间的耦合度高)

- 330万行C++ ISAPI DLL

-面向功能的设计

- Not for systemic qualities



(2)二层架构存在的问题

-阻碍商业创新(可扩展性不够)

-随着访问量增大,系统线性扩展性面临着挑战(无法通过仅仅增加硬件投入,扩充系统的支撑量)

-高额的维护成本

-不便于“重构”(代码很难通过重构来改善)

- Architects in constant Fire-Fighting Mode



4、2000年底开始三层架构改造



系统向分层、松散耦合、模块化、基于标准的架构过渡


5、ebay架构的改造是基于下面这本书介绍的模式
core J2EE Pattern 最佳实践和设计策略第二版,sun官方网站也提供core J2EE Pattern,见

http://java.sun.com/blueprints/corej2eepatterns/Patterns/





该书介绍了21 种J2EE设计模式,我们可以把他们归类到三层中。

(1)、表示层的设计模式:

- Intercepting Filter (X)

- Front Controller (X)

- Application Controller (X)

- Context Object (X)

- View Helper

- Composite View

- Service To Worker (X)

- Dispatcher View

带(X)表示这些设计模式在eBay.com的架构中采用了。





(2)、商业逻辑层的设计模式:

- Business Delegate

- Service Locator (X)

- Session Facade

- Application Service (X)

- Business Object (X)

- Composite Entity

- Transfer Object (X)

- Transfer Object Assembler (X)

- Value List Handler (X)

带(X)表示这些设计模式在eBay.com的架构中采用了。





3、集成层(也称为数据访问层) 设计模式:

- Data Access Object (X)

- Service Activator

- Domain Store (X)

- Web Service Broker (X)

带(X)表示这些设计模式在eBay.com的架构中采用了。





二、ebay三层架构的目标

1、目标

高可用性、高可靠性、可线性扩展,建立实现系统的无缝增长。

高开发效率,支持新功能的快速交付。 

可适应未来的架构,应变将来商业的更新需求。

ebay的系统可用性2002年已到了99.92%.(令人叹服),每季度网站新增十五个重大功能,

每个星期将近3万行代码在修改,3个星期内可以提供一个国际化版本。



2、为了可适应未来的架构,ebay采用了下面的做法

采用J2EE模式

Only adopt Technology when required

Create new Technology as needed

大量的性能测试

大量的容量计划

大量关键点的调优

Highly redundant operational infrastructure and the technology to leverage it



3、为了实现可线性扩展,ebay采用了下面的做法:

(1)       合理地使用server state

(2)       No server affinity

(3)       Functional server pools。

(4)       Horizontal and vertical database partitioning。



ebay架构采用了服务器分块化的概念,每台服务器上的应用与它的use case有关,即server pool中的一部分服务器专门用于登陆,一部分服务器专门用于显示商品信息。毕竟不同use case访问数据库的方式不同,比如“显示商品信息”use case只是只读操作。而且由于是只读操作,数据库的压力会比较低,我可以只采用几台服务器来承担这部分操作,而更多的服务器用于读写操作多的use case,这样合理地使用服务器资源。

由于不同的应用放在不同的服务器上,这里就涉及到用户状态的复制问题。这就是第一条ebay要求合理地使用server state的原因,就我所知,ebay的用户状态只有很少保存在session中,ebay把用户的状态放到了数据库和cookie中。


4、为了使得数据访问可线性扩展

(1)       建模我们的数据访问层

(2)       支持Support well-defined data access patterns

Relationships and traversals

本地cache和全局cache

(3)       定制的O-R mapping—域存储模式

(4)       Code generation of persistent objects

(5)       支持lazy loading

(6)       支持fetch sets (shallow/deep fetches)

(7)       支持retrieval and submit (Read/Write sets)

      

5、为了使数据存储可线性扩展,eBay采用了下列做法

(1)商业逻辑层的事务控制

只采用Bean管理的事务

Judicious use of XA

数据库的自动提交

(2)基于内容的路由

运行期间采用 O-R Mapping ,找到正确的数据源

支持数据库的水平线性扩展

Failover hosts can be defined

(3)数据源管理

动态的

Overt and heuristic control of availability

如果数据库宕机,应用可以为其他请求服务。





6、应变未来采用的技术

(1)消息系统

子系统之间、数据库之间松散耦合

J2EE的Message Driven Beans

(2)SOAP

对于外部开发者和合作伙伴,通过可用的工具和最佳实践来平衡我们的平台

采用SOAP 来标准化不同eBay应用之间进程内部的通信

采用SOAP满足我们的QoS需求





四、将J2EE的设计模式应用到eBay中

    介绍了三个Use cases例子,“查看账号”,“查看商品”,“eBayAPI”,介绍了这三个use case 如何采用J2EE的设计模式实现其设计。
分享到:
评论

相关推荐

    J2EE核心模式(Core J2EE Patterns)

    《J2EE核心模式(Core J2EE Patterns)》是一本深度探讨J2EE平台设计模式的权威著作,由SUN公司的资深工程师倾力撰写。这本书是Java企业级开发者的必备参考书籍,它揭示了在复杂的企业级应用开发中,如何有效地利用...

    Core j2ee Patterns Best Practices And Design Strategies

    标题《Core J2EE Patterns Best Practices And Design Strategies》和描述部分介绍了软件设计模式的重要性,将设计模式比喻为一个组织的“部落记忆”的有形体现。设计模式是解决常见问题的通用解决方案,它源自之前...

    Core J2EE Patterns - Best Practices and Design Strategies - 2nd Edition

    - **Data Access Object Pattern**: 此模式定义了一组访问数据库的方法,将数据访问逻辑从应用程序主体中分离出来,提高了代码的可维护性和可测试性。 - **Business Delegate Pattern**: 通过引入一个中间层来处理...

    j2ee核心模式 j2ee平台里模式的应用

    《J2EE核心模式:J2EE平台里模式的应用》一书深入探讨了在Java企业级应用开发中广泛采用的设计模式和技术架构。J2EE(Java 2 Platform, Enterprise Edition)是Oracle公司推出的用于构建分布式、多层企业级应用程序...

    core j2ee patterns [3 parts] - part1

    prentice hall - core j2ee patterns - best practices and design strategies, second edition.part1

    CoreJ2eePatterns

    《CoreJ2eePatterns》是IT领域内关于Java企业级应用程序设计的重要参考资料,由Olivier Liechti撰写,他在Sun Microsystems担任Java架构师。该资料深入探讨了J2EE系统设计的最佳实践与策略,旨在为开发人员提供设计...

    Core J2EE™ Patterns: Best Practices and Design Strategies, Second Edition

    By Deepak Alur, John Crupi, Dan Malks Publisher : Prentice Hall PTR Pub Date : June 10, 2003 ISBN : 0-13-142246-4 Pages : 650

    教你一步一步建立SSH(J2EE)

    ### 教你一步一步建立SSH(J2EE) #### 一、前言 SSH指的是Spring、Struts和Hibernate三个开源框架的首字母缩写,它们在Java Web开发领域中被广泛应用于构建企业级应用。本教程将详细介绍如何从零开始搭建一个基于...

    eclipse开发J2EE项目系列(1)——Struts2框架搭建

    在本教程中,我们将深入探讨如何使用Eclipse IDE来开发J2EE项目,特别是基于Struts2框架的应用程序。这个系列的第一部分将专注于Struts2框架的搭建,为后续的开发工作打下基础。 首先,我们需要了解Struts2框架。...

    J2EE的框架搭建 Struts框架的搭建

    Struts2框架是Java EE(J2EE)平台上的一个开源MVC(Model-View-Controller)框架,它为构建企业级Web应用程序提供了强大的支持。Struts2以其灵活性、可扩展性和良好的社区支持而广受开发者欢迎。在这个“J2EE的框架...

    SSH框架J2EE配置

    SSH框架,全称为Struts2、Spring和Hibernate的组合,是一种经典的Java Web开发框架,用于构建企业级应用程序。本文将详细介绍SSH框架的配置过程,主要针对J2EE环境。 首先,确保你拥有以下开发环境: 1. 开发工具:...

    Java自学路线.pdf

    核心Java模式(Core Java Pattern)提供了最佳实践,助你成为一名Java架构师。 当你的代码变得专业且层次分明时,你开始关注代码的内聚性和耦合性。《Clean Code》等书籍将指导你如何写出更高质量的代码。此外,...

    如何学好JAVA编程[文].pdf

    阅读《Core Java Pattern》将使你理解更多最佳实践,进一步提升你的架构设计能力。此时,对框架如Struts的理解将更加深入,知道它们是如何利用各种设计模式来解决问题的。在具体技术选型和框架使用上,例如DAO策略、...

    javaee登陆代码

    <url-pattern>/LoginServlet</url-pattern> ... ``` 最后,我们还需要处理登录成功和失败的情况。`success.jsp`可以展示欢迎消息,而`error.jsp`则可以显示错误信息。 注意,上述示例中的SQL查询容易受到SQL...

    struts2.0的简单例子

    Struts2是Apache Struts的一个升级版本,它采用MVC架构模式,使得Java Web应用程序的开发变得更加简单高效。 #### 二、环境配置 为了运行这个示例,你需要确保以下软件已经安装并配置好: - **Tomcat 6.0**:作为...

    xfire,webservice基本开发步骤

    在Java企业级应用(J2EE)开发中,Web服务(Web Service)是一种常见的系统间交互方式,它基于标准的SOAP(Simple Object Access Protocol)协议,实现不同平台、语言之间的互操作性。Xfire是一个早期的Java Web服务...

    Struts2+spring+jdbc+mysql搭建

    Struts2 是一个基于MVC 模式的Web 应用程序框架,它提供了一个灵活、可扩展的架构,用于构建复杂的Web 应用程序。为了搭建一个 Struts2+Spring+JDBC+MySQL 环境,需要先集成 Struts2 和 Spring 框架,然后使用 JDBC ...

    ssh2+extjs

    SSH2 + ExtJS 的组合在 J2EE 开发中非常常见,通过整合 Spring、Struts2 和 Hibernate,再加上前端 ExtJS 框架的支持,可以构建出功能强大且易于维护的企业级应用系统。本文将对“Hibernate+Spring+Struts2+ExtJS ...

Global site tag (gtag.js) - Google Analytics