多层技术架构JAVA
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
多层技术架构
本系统构建于J2EE平台,采用分层提供服务支持的设计思想,将系统划分为数据库层、中间件层、EMALL基础服务层、业务表现层和系统接口层。系统对每一层定义明确的功能接口,同时在层次内实现组件化的接口实现。层次化、模块组件化的实现,使系统具备了最大程度的灵活度,从而能对业务需求的变化作出快速的反应,使系统具有很好的扩展性。
首先我们来看一个系统技术架构图:
上图可以清晰的了解到整个系统的层次划分,系统从最底部的数据库层开始,一层一层的向上提供接口服务,最终实现用户按业务要求的可见操作界面和其他系统接口。各层次专著于自身功能的接口实现,整个层次保持相对的稳定。系统通过不改变接口,各个层次、各个组件进行优化的策略,能在不影响整个业务的前提下,不断的完善和改进。
一、数据库层
对于平台中的所有应用,都存在着各种各样的配置信息、业务数据、系统运行状态等信息。数据库层对这些数据信息本身进行归档,提供快速查询的底层接口,并保证数据的完整性、可靠性。
在数据库方面,我们采用Oracle或者是MySQL。这两种数据库分别有不同的适用环境。
1、Oracle
◆适合大型的电子商务应用。
◆能使用所有的网客通平台功能。如访问量排行榜、降价排行榜、销售排行榜、访问量统计等等,就以往的经验来看,这些功能每天要处理的数据都会超过一千万。这种数据量如果使用传统的统计方法,统计一次的时间就可能会以天来计算了。如果使用Oracle,再配合我们专门对Oracle进行优化的高效率的统计程序,那么只需十数秒便可完成。
◆此外,如果只用一台数据库无法应付日益增长的服务器访问量,可以使用Oracle RAC(真正应用集群),通过增加数据库服务器进行集群。
2、MySQL
◆适合中小型的电子商务应用。
◆无法使用网客通平台一些高级应用,如排行榜、统计分析、MIS系统对接等。这是由于MySQL设计上强调访
问速度,牺牲了一些数据库的高级功能,虽然用程序也可以实现这些功能,但是在性能上无法满足需求。
◆不支持数据库集群。
二、中间件层
中间件层主要是网客通平台使用的J2EE中间件,包括平台使用到的应用服务器和中间件技术。
一、应用服务器
应用服务器为网客通提供的整个J2EE平台实现,EMALL基础服务层和应用层、业务层都是建立在应用服务器之上。
网客通设计上遵循SUN公司提出的J2EE规范,这样能够尽可能的保证在不同的J2EE应用服务器中进行移植。
经过测试、网客通平台支持Tomcat、WebLogic、JBoss这几种J2EE应用服务器。
二、中间件技术
本着重用的设计原则,网客通在一些功能中采用了已有的成熟技术,这些都是经过实践考验的中间件。主要以java标准包和开源项目为主,大部分都针对系统作了相应调整,以便适合系统的需要。
1. Apache commons:
著名的开源组织Apache的一个java工具包,提供很多实用的功能。
1) commons-beanutils:
提供对Java反射和自省API的包装。
在平台中用于通用的接口设计。
2) commons-codec:
包含一些通用的编码解码算法。Hex,Base64,以及URL encoder。
平台中主要用来做消息摘要,实现数据加密等功能。
3) commons-collections:
提供一个类包来扩展和增加标准的Java Collection框架。提供了比j2sdk更全面的数据结构,平台中继承并实现了一些特殊的数据结构。
4) commons-pool:
提供了通用对象池接口,一个用于创建模块化对象池的工具包,以及通常的对象池。
我们在原有的基础上进行了优化,在性能和使用性方面有所提高。
5) commons-dbcp:
这是一个基于apache的对象池(apache commons pool)实现的数据库连接池。
我们在原有的基础上进行了优化,对数据库连接进行了特别的处理,防止数据库连接泄漏的问题,并提供了监控的功能。
6) commons-discovery:
供工具来定位资源(包括类),通过使用各种模式来映射服务/引用名称和资源名称。
7) commons-el:
提供在JSP2.0规范中定义的EL表达式的解释器。
对平台中的JSP提供EL表达式支持。
8) commons-fileupload:
强大和高性能的文件上传功能。
平台中被用于上传各种图片、Flash、文档等资源,我们在原有的基础上进行了优化。
9) commons-logging:
提供通用的日志操作接口。
主要用于程序调试和服务器日常的日志输出。
10) commons-validator:
提供了一个简单的,可扩展的框架来在一个XML文件中定义校验器(校验方法)和校验规则。支持校验规则的和错误消息的国际化。
平台中用来校验各种xml数据。
2. Cewolf / JFreeChart:
Cewolf 是一个用于生成各种图表的标签库。它支持在JSP中嵌入图表图片。运行servlet 容器的任意的Web应用程序服务器都可以使用它。因为Cewolf 是一个功能完整的标签库,所以不需要使用Javascript。
JFreeChart是开放源代码站点上的一个JAVA项目,它主要用来各种各样的图表,这些图表包括:饼图、柱状图(普通柱状图以及堆栈柱状图)、线图、区域图、分布图、混合图、甘特图以及一些仪表盘等等。这些不同式样的图表基本上可以满足目前的要求。主要用于生成统计图表。
这两个技术一起提供了网客通平台的统计分析图表,JFreeChart主要用于输出图表,Cewolf对其进行了封装。
3. Dom4j:
Dom4j是一个易用的、开源的库,用于XML,XPath和XSLT。它应用于Java平台,采用了Java集合框架并完全支持DOM,SAX和JAXP。
主要用来处理XML数据。
XML在网客通有广泛的应用,主要是作为配置文件使用。由于XML严格的格式要求和层次结构,也有用来作为参数在HTML表单中传递。如组合商品功能,因为组合商品中的商品是由管理员挑选的,参数数量并不确定,如果每从组合商品中添加/删除一个商品都直接更新到数据库话,会对系统造成负荷。所以,在组合商品的管理中,将操作的数据类转换成XML传递,就可以一次进行修改。
4. Hibernate:
Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序实用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。
在平台中,我们采用Hibernate进行数据库操作,只有在一些对数据库性能有特别要求的模块,才直接使用jdbc 进行连接。
5. Ehcache:
Ehcache出自Hibernate,在Hibernate中使用它作为数据缓存的解决方案。这是Hibernate必须的包。
6. JCrontab:
它是由Java语言编写的日程处理程序,它目的是提供强大的定时处理功能,让我们的应用程序可以按照提供的时间表来执行不同的应用。
我们主要用Jcrontab管理以下一些定时任务:
1) 年排行榜后台更新进程:自动计算年排行榜。
2) 月排行榜后台更新进程:自动计算月排行榜。
3) 周排行榜后台更新进程:自动计算周排行榜。
4) 日排行榜后台更新进程:自动计算日排行榜。
5) 更新对象缓存:实现对象缓存的更新,处理那些长期没被再一次访问的对象缓存。
6) 清页面缓存:当管理员使用的手工刷新页面缓存的功能时,系统会将这些需要刷新的缓存加到一个队列中,由本进程负责刷新。