java架构相关技术搜集

·                                 多层技术架构

     本系统构建于 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
是开放源代码站点 SourceForge.net 上的一个 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)
清页面缓存:当管理员使用的手工刷新页面缓存的功能时,系统会将这些需要刷新的缓存加到一个队列中,由本进程负责刷新。
     7)
相关产品自动实现间隔:相关产品的计算对系统消耗比较大,所以系统不会对所有几十万个商品进行计算,只有在用户查看单个商品时算出这个商品的相关产品并进行缓存。那么当用户下一次访问这个商品的相关产品时就直接从缓存中读取出来。而这个进程就是为了定时更新这个缓存。
     8)
自动推荐后台更新进程:进程根据商品推荐规则进行自动推荐。
     9)
新闻推荐后台更新进程:进程根据新闻推荐规则进行自动推荐。
    10)
关键字后台进程:当用户在前台搜索栏中输入一个查询值时,系统并不马上将其统计到关键字,而是放到内存中,由此进程定时统计。
    11)
保存访问量信息进程:用户每访问一次系统,系统并不马上统计,而是放到内存中,由此进程定时保存到数据库,供统计进程进行统计。
    12)
年访问量排行计算:计算年访问量排行榜。
    13)
月访问量排行计算:计算月访问量排行榜。
    14)
周访问量排行计算:计算周访问量排行榜。
    15)
日访问量排行计算:计算日访问量排行榜。
    16)
年降价排行计算:计算年降价排行榜。
    17)
月降价排行计算:计算月降价排行榜。
    18)
周降价排行计算:计算周降价排行榜。
    19)
日降价排行计算:计算日降价排行榜。
    20)
统计计算:每天对访问量进行统计。
    21)
生成订阅邮件列表进程:根据用户的订阅设置,生成需要发送的邮件队列。
    22)
发送订阅邮件进程:根据要发送的邮件队列发送邮件。
    23)
拍卖自动出价进程:实现拍卖模块中的自动出价功能。
 
    7. JCS

       JCS
Jakarta 的项目 Turbine 的子项目。它是一个复合式的缓冲工具。可以将对象缓冲到内存、硬盘。具有缓冲对象时间过期设定。还可以通过 JCS 构建具有缓冲的分布式构架,以实现高性能的应用。
      
对于一些需要频繁访问而每访问一次都非常消耗资源的对象,可以临时存放在缓冲区中,这样可以提高服务的性能。而 JCS 正是一个很好的缓冲工具。缓冲工具对于读操作远远多于写操作的应用性能提高非常显著。
      
网客通平台中使用 jCS 提供缓存功能,主要是页面缓存和对象缓存,通过 JCS ,系统将用户访问过的页面和对象缓存到内存中,对于访问量巨大,内存缓存已经不能负荷的情况下,我们还可以将缓存设置到硬盘中保存。
      
使用缓存的话,能将系统可负载和性能大幅度的提升。当没有使用集群环境的情况下,缓存是一种必不可少的技术。

8. JSF / MyFaces:
       JavaServer Faces (JSF) 是一种用于构建 Web 应用程序的新标准 Java 框架。它提供了一种以组件为中心来开发 Java Web 用户界面的方法,从而简化了开发。
       JSF
的主要优势之一就是它既是 Java Web 用户界面标准又是严格遵循模型-视图-控制器 (MVC) 设计模式的框架。用户界面代码(视图)与应用程序数据和逻辑(模型)的清晰分离使 JSF 应用程序更易于管理。为了准备提供页面对应用程序数据访问的 JSF 上下文和防止对页面未授权或不正确的访问,所有与应用程序的用户交互均由一个前端 “Faces”servlet (控制器)来处理。
       MyFaces
JavaServer Faces JSF Web 框架 JSR 127 )的一个实现。提供了很多常用控件。
      
我们平台中采用一些基于 JSF 框架的 MyFaces 控件。这样使程序结构十分清晰。

9. Log4j
       Log4j Apache 的一个开放源代码项目,通过使用 Log4j ,我们可以控制日志信息输送的目的地是控制台、文件、 GUI 组件、甚至是套接口服务器、 NT 的事件记录器、 UNIX Syslog 守护进程等;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。最令人感兴趣的就是,这些可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码。
      
这是一个可选包,如果不使用 Log4j 的话, commons-logging 会自动使用 SUN J2SDK 的日志包,不过我们还是推荐使用 Log4j ,它的功能非常强大。

10. Lucene
        Lucene 是一个开放源程序的搜寻器引擎,利用它可以轻易地为 Java 软件加入全文搜寻功能。 Lucene 的最主要工作是替文件的每一个字作索引,索引让搜寻的效率比传统的逐字比较大大提高, Lucen 提供一组解读,过滤,分析文件,编排和使用索引的 API ,它的强大之处除了高效和简单外,是最重要的是使使用者可以随时应自已需要自订其功能。
      
我们使用 Lucene 建立索引,并在这基础上实现了全文搜索功能。

11. Ant
       Ant
是一个基于 Java 的自动化脚本引擎,脚本格式为 XML
       
我们除了用 Ant Java 编译相关任务外,还通过插件实现很多应用的调用。包括程序编译、打包、 Hibernate 配置文件自动生成、部署、以及单元测试等操作。
      
当一个代码项目大了以后,每次重新编译,打包,测试等都会变得非常复杂而且重复,因此 c 语言中有 make 脚本来帮助这些工作的批量完成。在 Java 中应用是平台无关性的,当然不会用平台相关的 make 脚本来完成这些批处理任务了, Ant 本身就是这样一个流程脚本引擎,用于自动化调用程序完成项目的编译,打包,测试等。除了基于 JAVA 是平台无关的外,脚本的格式是基于 XML 的,比 make 脚本来说还要好维护一些。

12. Axis
       Axis 是一个 SOAP 引擎,提供创建服务器端、客户端和网关 SOAP 操作的基本框架。 SOAP 是被广泛作为新一代跨平台、跨语言分布计算 Web Services 的重要部分。
      
网客通平台使用 Axis 提供 WebService 支持,广泛应用于通用数据接口,对外系统提供服务等功能。
     
如:
     1)
商品查询服务:提供接口让外接系统可以查到平台中的商品信息。
     2)
新闻发布服务:提供接口让外接系统可以取到各类新闻。
     3)
订单服务:提供接口让外接系统可以在平台中生成订单,并获取各种订单信息。
   
注:上述服务都有严格的权限控制。

13. JavaMail
       JavaMail
Sun 发布的用来处理 email API 。它可以方便地执行一些常用的邮件传输。
      
我们使用 JavaMail 实现了平台中邮件发送、群发等相关功能,供业务系统使用。

14. XDoclet
       XDoclet
是一个开源项目,可以通过在 java 源代码中的一些特殊的注释信息,自动生成配置文件、源代码等等。例如 web ejb 的部署描述文件等。
      
我们用 XDoclet 来生成 Hibernate hbm 配置文件。

15. JSTL
       JSP 标准标记库( JSP Standard Tag Library JSTL )是一个实现 Web 应用程序中常见的通用功能的定制标记库集,这些功能包括迭代和条件判断、数据管理格式化、 XML 操作以及数据库访问。
     
我们使用 JSTL 封装各种业务逻辑。

16. Jakarta ORO
       Jakarta ORO Java
类是一套文本处理 Java 类,提供了与 Perl5 兼容的规则表达式,类 AWK 规则表达式, glob 表达式,以及用于执行替换、分割、过滤文件名等的工具。这个包是 OROMatcher, AwkTools, PerlTools, and TextTools libraries originally from ORO, Inc 的后续产品。
      
网客通平台使用 ORO 处理正则表达式,广泛应用于各种文本处理中。

17. SwarmCache / JGroups
       SwarmCache
是一个简单且有效的分布式缓存,它使用 IP multicast 与同一个局域网的其他主机进行通讯,是特别为集群和数据驱动 web 应用程序而设计的。 SwarmCache 能够让典型的读操作大大超过写操作的这类应用提供更好的性能支持。 SwarmCache 使用 JavaGroups 来管理从属关系和分布式缓存的通讯。
       JGroups
是一个开源的纯 java 编写的可靠的群组通讯工具。其工作模式基于 IP 多播,但可以在可靠性和群组成员管理上进行扩展。其结构上设计灵活,提供了一种灵活兼容多种协议的协议栈,对于每个产品都有不同的可靠性需求。这种协议栈可以让用户定义的自己可靠性指标和性能指标。
      
当使用集群环境时,系统存在着缓存同步的问题,需要对集群中每一台服务器的缓存进行同步,这样就必须要有一个缓存同步的机制, SwarmCache JGroups 就是为了解决这个问题而被加到网客通中。

18. JUnit
       JUnit
是由 Erich Gamma Kent Beck 编写的一个回归测试框架( regression testing framework )。 Junit 测试是程序员测试,即所谓白盒测试,因为程序员知道被测试的软件如何( How )完成功能和完成什么样( What )的功能。
      
我们主要用 JUnit 来进行单元测试。

三、基础服务层

基础服务层构建于 J2EE 平台之上,借助于中间件的接口服务,提供电子商务平台系统所需要的通用服务接口组件。系统将提供以下主要的服务接口支撑不同业务需求的实现。
   
栏目管理模块:
     
栏目是一个抽象资源对象,是一种特殊的内容类型。栏目可以表示产品、新闻信息类别、资源节点、导航栏的项、菜单中的项等等。栏目是一种组织管理型的资源。
     
系统设计上支持多级子栏目,采用虚拟文件系统( Virtual File System )技术以支持直观的树型导航风格,一个栏目节点相当于一个虚拟的文件目录。
    
对于大型电子商务系统,栏目的节点是个非常大的数字,这对系统栏目树展示的速度和性能有极高要求。考虑到以上原因系统采取了栏目对象缓存策略,同时对于页面节点的呈现通过动态 JavaScript 输出的技术,从而使系统能很好的支持上万个栏目数据节点操作管理。能平滑、高效的展示树型风格的栏目结构。

用户权限管理模块:
      
大型电子商务应用系统有用户多,模块多,权限多的特点,因此必须采用分组的用户管理系统,并设置一个具有最高权限的管理员,负责对整个系统用户设置,为每个用户角色、用户指定不同的权限,依照不同的权限在系统中可以使用不同的功能。
      
系统设置了 Administrator 用户组,并设置了 root 这个具有最高权限、不可删除的用户。您可以根据您的需要使用 root 这一个管理员用户。管理员可以创建、编辑和删除用户组,您可以根据您的需要给每个用户组合理的权限划分,并给每个用户组添加、编辑和删除用户。用户登录系统后,系统会根据该用户的权限提供相应的功能,并对用户的每个操作检查用户的使用权限。
      
系统采用 Window 用户权限的思想,将用户、用户组的权限通过各个栏目节点进行绑定,在各个栏目节点上实现继承与非继承的设置管理,从而使管理员可以进行灵活的配置。

属性管理模块:
     
在现实情况中,不同的事物对象存在其特殊的信息描述;比如一个手机,存在 网络类型 —GSM” 外观样式 翻盖 等等;同时这些特殊的信息描述在同类别的数据对象下经常存在共性;比如 TCL 联想 生产的手机,应该都存在以上两种属性的描述。
     
针对以上的情况,系统进行了一个数据抽象,定义了一套属性管理组件,可以方便、有效的描述相关的需求情况,同时对于存在共性描述的对象采用继承模式来描述,从而很好的表现一个事物对象的特征。

继承性管理模块:
     
继承是面向对象接口特性之一。考虑到抽象事物的通用性,系统通过一个通用的对象继承模型接口,对所有需要实现继承的功能提供基础的支持。从而提高系统的重用性和降低系统的偶合度。

日志服务管理模块:
     
日志是一个成熟的电子商务应用系统所必备的功能。日志可以用于数据统计,为系统其他功能提供初始数据;用于查看一个对象的修改历史记录,用于方便追踪对象的修改状态和明确事务责任。
     
通过对系统各种操作数据的分析,根据各操作功能,系统将日志进行类别的划分:
    1
、系统日志:记录系统各种操作的信息数据。(比如:用户某个时间登陆了系统 ……
    2
、商品日志:记录系统商品数据发生改变的信息。(比如:商品价格发生变化)
    3
、信息日志:记录系统信息数据发生改变的信息。(比如:某管理员增加了一个新的促销公告 ……
    4
、订单日志:记录系统订单数据发生改变的信息。(比如:某个订单已经进行了送货处理 ……
     
系统通过抽象出一个 Log 日志接口,采用 Abstract Factory 模式,通过不同的构造参数来获取不同分类的 Log 日志实现。系统将各中类别下的日志,又区分不同的操作。日志组件将通过抽象和封装后,给各功能模块提供统一接口服务,方便系统各模块的日志功能的开发和维护。

缓存服务管理模块:
     
页面访问的时候,生成动态 Web 页会耗用各种各样的系统资源。当 Web 服务器收到页面请求时,它通常必须从数据库或其他存储系统中实时的检索所请求的信息。对这些资源的访问通常需要通过有限的资源池(如数据库连接、套接字或文件描述符)进行。因为 Web 服务器通常需要处理很多并发请求,所以对这些共享资源的争夺可能会延迟页面请求,直到资源变为可用。在将请求发送后,仍然必须将结果转换为 HTML 代码以便进行显示。
     
使系统速度更快的一种显而易见的方法是购买更多、配置更好的硬件。此方法可能很吸引人,因为硬件便宜,而且不必更改程序,但更多的硬件只能在未达到其物理限制之前才会对性能有所帮助。系统中实施缓存管理,是一个有效的解决方案。
     
系统中存在两中缓存对象:
    1
Java 对象缓存:对于一些经常被使用的 Java 对象保存于规定的内存空间,通过配置的更新规则,同步更新数据库内容。
    2
前台页面缓存:对于前台的 html 页面按不同的块来区分,然后通过一个 key 对象,通过开源 JCS 技术存储于内存或磁盘空间。

(请求中的页面对象不在缓存对象中)


 
   
(请求中的页面对象存在于缓存对象中)

从上边两幅图可以很清晰的看到,对于并发访问的页面请求,通过页面的缓存可以极大的减少对紧缺资源(数据库连接)的调用,减少访问响应的时间,从而提高系统的访问速度和整体性能。

集群模块:
   
集群目标:
    1
支持更大的访问量,并且可以随着访问量的增加可以通过增加服务器的方式很容易的增加处理能力,而不增加用户的访问时延。
    2
提高系统稳定性,提供几乎永不停机的服务质量。即使某一台服务器软件或者硬件崩溃系统仍然能对客户提供服务。
     
网客通平台集群实现了以下功能:
     1
Session 复制
    
使用应用服务器自带的 Session 复制功能。
    
如开源的 Tomcat Tomcat5.5 带有 Session 复制功能。 Tomcat5.5 Session 复制功能有如下的特点:
    1
)需要保证 Session 中的所有的对象都是可序列化的。
     
只有调用 session SetAttribute removeAttribute 方法时才会触发 session 的复制。例如有一个 user 类型的对象 u 保存在 Session 之中,如果 u.setName(“aaa”) 是不会触发 Session 复制的,只有 u.setAttribute(“user”,u) 才会触发 Session 的复制。
    2
Session 的复制是一个 all-all 的复制,也就是说 Session 的每次复制都复制给集群中的每一台服务器。
     
由于 Session 的复制是 All-All 的,因此当服务器中的集群数量过多时,有可能发生集群之间的 Session 复制流量过大,本身成为了性能的瓶颈。针对这个情况一方面要尽量的减少复制的数据量,这就要求将保留在 session 中的对象尽量变得更小,例如应该尽可能的拆分开对象。因为一个大对象只要一个小的属性发生了变化则整个对象都要被复制,如果将对象拆分开则只要复制一个小对象就可以了,尽量将保存在 session 中的对象变小。
     
另一方面,当集群中的服务器数目真的变得很大时,单靠缩小 session 中的对象已经是没用了,这样的话我们还有两种技术方案:
      1
)将集群分域,即将大的集群分成几个小的集群, Session 复制只在小集群内部发生。
      2
)主 —— session 复制,即将所有 session 保留在中心的一台或几台服务器中,并不向集群中的所有服务器复制。

2. Cache 复制和更新
     
网客通平台的 Cache 分成两类,页面 Cache 和对象 Cache 。页面 Cache 我们现在采用 jcs 包。 Jcs 包中带有 Cluster 功能,能够将 Cache 内容复制到整个集群的服务器中。该功能需要满足以下条件:
      1
)需要保证 Cache 中的所有的对象都是可序列化的。
      2
)只有调用 Cache setObject removeObject 方法时才会触发 session 的复制。
     
事务型的 cache
     
在实际的使用中, Cache 起到了巨大的作用,但是也存在有问题。 Cache 是非事务化的,即如果在使用过程中,在没有关闭 Cache 的情况下突然关闭服务器,或者服务器突然 Down 了,则缓存有可能被破坏。在集群环境下,则缓存会在服务器重起的时候从其他服务器中复制过来。
     
在正常使用时 Cache 能达到上 G 的数量级,如果集群中某台服务器崩溃后损坏了 Cache 则在服务器重起的时候将有几 G 的数据需要复制过来,这样有可能造成网络诸塞,成为整个系统的性能瓶颈,因此我们采用事务型的 Cache ,保证系统崩溃后,重起的时候只有少部分的数据需要从其他服务器上复制过来。
     
对于 cache 的事务管理,我们采用 Berkeley DB Berkeley DB 是历史悠久的嵌入式数据库系统,主要应用在 UNIX/LINUX 操作系统上,其设计思想是简单、小巧、可靠、高性能。当数据类型较少(特别注意:这并不是说需要管理的数据量小),数据管理本身不复杂,且对数据操作要求高效率时,使用 Berkeley DB 是一个很好的选择。 Berkeley DB 是一个具有工业强度的嵌入式数据库系统,数据处理的效率很高。 Berkeley DB 功能的稳定性历经时间的考验,在大量应用程序中使用便是明证。可以想见,在同等代码质量的条件下,软件的 BUG 数和代码的长度是成正比的,相对几十兆、几百兆大型数据库软件, Berkeley DB 的只有不到 500K 的大小,但可以管理大至 256T 的数据量。从这些特性看来, cache 非常适合使用 Berkeley DB 进行管理。

3. 上传文件的共享
     
我们采用共性文件形式的文件共享,主要使用磁盘阵列技术,简称 RAID(Redundant Arrays of Inexpensive Disks) 。磁盘阵列是由一个硬盘控制器来控制多个硬盘的相互连接,使多个硬盘的读写同步,减少错误,增加效率和可靠度的技术。
     
磁盘阵列有以下优点:
    1
)传输速率快;
    2
)储存容量可提升;
    3
)提升 I/O 每秒的数量;
    4
)增加数据安全性及稳定性;
    5
)大量数据快速及简易管理;
    6
)增加可用运时间,减少维护;
    7
)通过磁盘阵列,可以将不同服务器上传的文件统一管理。


     
如图所示:各台服务器共享磁盘阵列,这样所有的上传的文档都放到磁盘阵列之中。

4. Cookie 的共享
     
采用负载均衡器使得多台服务器对外有相同的 IP 这样就能使所与的服务器都能共享 Cookie 。同时采用这个方案还能保证系统的高可用性。具体可参照下一点。

5. 高可用性
     
我们建议采用负载平衡器,负载均衡器可以根据实际的响应时间制定优先级交付决策,从而实现高性能、智能化流量管理,达到最佳的服务器群性能。采用第七层应用控制还可以减少通信高峰期的错误讯息,因为差错控制和流量管理技术可以侦测到一些错误信息,并透明地将会话重定向到另一个服务器,使用户顺利地进行使用。例如,服务器 A 不可用或者数据库出现错误,错误信息将会返回到负载均衡器上,然后会将客户的访问指向服务器 B 或者将消息重放到其他数据库中去,整个过程对用户是透明的。
     
将内部的多个私有IP的服务器,对外映射成一个相同的 IP 。而且当其中某台服务器 Down 掉的时候,负载均衡器将不会将这个服务器映射出去。


    6.
数据库集群
     
如果数据库是用 Oracle 的话,数据库集群可以采用 Oracle RAC 。基于 RAC 的电子商务应用的用户或者中间层应用服务器客户,可以通过虚拟数据库服务名连接到数据库上。 Oracle 在集群中多个节点之间自动平衡用户负载。不同节点上的 Real Application Clusters 数据库实例预订所有数据库服务或者部分子集数据库服务。这使得 DBA 高度灵活地选定,连接到特定数据库服务的特定应用程序客户是否可以连接到某些或者全部的数据库节点。 RAC 在工作期间,每个节点可以单独的被使用并且被应用程序负载均衡。如果发生意外,如一个节点的失败,可以实现节点的失败切换,保证数据库 24*7 的高可用性。
     
虽然每一个节点有一个不同的物理 IP 地址时,应用客户仍可以在一个逻辑数据库服务名的水平上进行连接。因此客户端对于不相关的事情如多服务器的多个地址可以毫不关心。

任务调度模块:
     
对于电子大型的成熟的电子商务平台系统,每天都有很多特定的数据需要进行分析或处理(比如:每天都有大量的邮件需要发送)。对于大数据量、高数据运算的处理功能,往往不希望在系统繁忙的时间进行处理。
     
针对这种状况,系统采用 Jcrontab 提供的基础服务,通过 Jcrontab 接口的扩展,实现对系统自动执行的任务灵活的、人性化的配置。管理员可以根据系统的实际情况,配置相应的系统任务来执行。

四、应用层

应用层提供各种业务实体的操作,使用 EMALL 基础服务进行搭建。
     
应用层的基本设计都是建立在 EMALL 基础服务层之上。就是栏目 —— 属性 / 权限 —— 业务实体。所有业务都可以在栏目中统一管理,从而使用统一的权限配置,使用分层的动态属性这些基础功能。
     
这样做的好处是,当业务实体发生改变或者是有新的业务时,系统的基础架构都不需要做出任何调整,直接就可以使用原有的功能。比如说订单系统,订单系统可以处理的就是一个业务实体,如果平台现在要加上网上购买服务的功能,那么只需要新加一个订单类型,就可以好像处理一般的商品订单那样处理这种购买服务的订单。
  
一、 商品管理
  
二、 拍卖管理
  
三、 网上团购
  
四、 广告管理
  
五、 信息发布
  
六、 排行榜管理
  
七、 问卷调查
  
八、 订单管理
  
九、 管理员管理
  
十、 用户管理
  
十一、支付方式
  
十二、配送方式
  
十三、热门关键字
  
十四、订阅管理
  
十五、 BBS

五、业务表现层和系统接口层

业务表现层
     
业务表现层就是网客通最终对客户的接口,平台以网页的方式提供各种业务供客户使用。相当于 View (视图),与应用层( Model )、 Servlet Controller )组成 Model / View / Controller MVC) 结构。主要是用 JSF 架构实现。
     
系统接口层
     
系统接口层是网客通对外部系统的接口。提供各种数据导入导出,数据查询等功能。
     
网客通平台主要使用 WebService 提供系统接口。
     
实际上, Web Service 的主要目标是跨平台的可互操作性。为了达到这一目标, Web Service 完全基于 XML (可扩展标记语言)、 XSD XML Schema )等独立于平台、独立于软件供应商的标准,是创建可互操作的、分布式应用程序的新平台。使用 Web Service 有以下优点:
      1.
跨防火墙的通信
     
出于安全性考虑,服务器通常只对公网开放 80 HTTP )端口, WebService 使用 Http 协议进行传输,正好能自由穿越防火墙。
      2.
应用程序集成
     
在企业中会有其他的应用程序,比如说 MIS CRM 等,这些应用可能是建立在不同的平台之上,比如说 .Net 。那么网客通和这些平台集成的话就会存在很大的问题,因为我们采用的是 J2EE 。解决这应用程序集成的最佳方案就是 WebService 了。通过 Web Service ,应用程序可以用标准的方法把功能和数据 暴露 出来,供其它应用程序使用。
    3. B2B
的集成
     
同样的,将上面的一个问题扩充到企业和企业之间,跨公司的商务交易集成通常叫做 B2B 集成。不同企业所采用的平台就更加五花八门了。
      Web Service
B2B 集成成功的关键。通过 Web Service ,公司可以把关键的商务应用 暴露 给指定的供应商和客户。
     
Web Service 来实现 B2B 集成的最大好处在于可以轻易实现互操作性。只要把商务逻辑 暴露 出来,成为 Web Service ,就可以让任何指定的合作伙伴调用这些商务逻辑,而不管他们的系统在什么平台上运行,使用什么开发语言。这样就大大减少了花在 B2B 集成上的时间和成本。
      4.
软件和数据重用
     
软件重用是一个很大的主题,重用的形式很多,重用的程度有大有小。最基本的形式是源代码模块或者类一级的重用,另一种形式是二进制形式的组件重用。
      Web Service
在允许重用代码的同时,还可以重用代码背后的数据

J2EE JSP Servlet 的安全控制

根据 J2EE 的规范, JSP Servlet 的安全采用 URL 认证机制进行安全访问限制,可以根据实际的用户、用户组以及角色进行安全访问控制。这些访问控制信息在描述文件 XML web.xml )中。同时通过后台访问的前置登陆验证的过滤器( Filter ),控制后台连接的访问。
     
网客通平台系统将对用户 URL 请求验证的具体到各模块、各数据节点上的各个操作。通过足够的权限细划而达到灵活的、高适应性的用户访问权限控制,从而保证商业数据的安全访问。

数据库对数据的控制

数据库系统的安全性很大程度上依赖于数据库管理系统。本系统建议采用安全机制强大的 Oracle 数据库系统 , 并严格按照 Oracle 建议的系统安全设置进行配置管理。

系统防火墙管理

根据网客通平台系统对系统防火墙的需要,现对防火墙的管理作如下建议:
    ·
最少的特权 (Least privilege) 减少因为职务或特权影响开放防火墙的限制条件,并将防火墙规则的预设限制动作设为 "deny" ,也就是任何未经特别允许的联机一律禁止。  
    ·
彻底防御 (Defense in depth) 防火墙过滤规则尽可能使用多个限制规则取代单一限制条件。  
    ·
最少信息 (Minimal information) 勿将跟企业组织或网络上定有关的信息暴露出来。  
    · KISS (Keep It Short and Simple)
复杂的配置设定容易造成错误并因此导致安全的漏洞,因此,让 firewall 的设定及配置尽可能的简单化。  
    ·
防火墙系统只能控制有经过防火墙的网络联机,因此,防火墙应该必须为连上 Internet 的唯一网关 (gateway)

防火墙硬件的安全配置建议:
   
· 将防火墙管理主控台分开-目前许多厂牌防火墙系统皆提供从远程透过另一平台管理 firewall 的能力,未来如有 firewall 增加的需要,也可以将 firewall 的管理工作集中控管。  
    ·
防火墙实体放置地区-建议应当将 firewall 放置于安全环境的实体位置,也就是一天 24 小时有专人操作控管的环境。

防火墙配置建议:
    ·
身分确认及认证 (Identification and Authentication)  
     o
使用支持对于认证信息加密的任证机制来限制使用者使用存取 Internet 的服务。  
     o
配置 firewall 成可以显示某标题以便提醒使用者在存取服务之前必须先对 firewall 作他们身份的确认。  
    ·
机密性 (Confidentiality) 强烈建议任何对于 firewall 的远程管理都必须透过加密的管道。  
    ·
完整性 (Integrity) 为维护系统的完整性,安装 firewall 机器的操作系统必须针对安全设定作进一步的强化安全性处理。  
    ·
可用性 (Availability)  
     o
在完成 firewall 系统的安装及测试之后,建立一份完整的系统备份并将它存放在安全的地方。  
     o
安装新版本操作系统或防火墙系统软件,或实行维护时,防火墙系统应该终止所有的网络连结,在经完整测试确定没问题之后再恢复网络连结。  
     o
获得以及安装防火墙相关的修正程序 (Fix) 
    ·
稽核 (Audit)  
     o Firewall
系统上具有安全性考量的机密事件必须要进行追踪 (trace) ,设定操作系统上的稽核功能来追踪对于操作系统以及 firewall 软件档案具有写 (write) 或执行 (execute) 的动作。  
     o
开启 firewall 系统上的纪录功能,对于被拒绝动作的稽核要以较详细的格式纪录,对于允许动作的稽核则可以以较短的格式纪录。如果纪录的数量太大量而影响正常运作时,可以选择几个规则将它们的纪录功能关闭。

恶意并发访问控制( DoS 攻击)

在实际应用中,我们可能会遇到网站被恶意攻击的情况。比如:某人写了一个程序,不断的循环访问平台中某个消耗资源比较大的页面,造成服务器无法即时处理这些请求,从而另其他用户也无法使用系统了,这就是一般所说的拒绝服务攻击( DoS )。
   
对于这个问题,网客通平台实现了一个过滤器,限制在指定时间内,多次访问某些资源的请求。当某个客户端的请求符合过滤器的过滤条件时,系统会在一段时间内直接显示错误提示,而不作任何操作,保证了其他合法用户能正常的使用系统。
    
比如:有个 ip 59.123.11.1 的客户在半分钟内,连续访问了搜索功能 15 次,被过滤器捕捉到了,系统就会禁止这个 ip 访问搜索功能 10 分钟,并会记录到黑名单,当下次这个 ip 再次恶意访问时,系统会根据这个黑名单延长禁止访问的时间。
   
除了过滤器的限制,平台对于一些重要功能,如文件上传、用户注册、管理员登录等加上验证码的功能,用户必须输入系统随机生成的验证码才能使用这些功能,通过这样双管齐下,就可以有效防止恶意的并发访问了。

投资保护原则

系统建设充分考虑目前已实施的业务系统的实际情况,充分利用原系统资源,在实现新系统建设同时保护原有系统的投资。
     
任何一个系统的建设,如果不能合理和有效地利用以前的投资,这样的系统应该算不了成功或绝对的成功。因此,在进行该系统建设时,充分考虑如何利用以前的信息系统、网络和其他设备,并对以前实施的应用系统进行整合,一方面保证原有的设备可以重新利用,另一方面保证以前的应用重获新生。在真正意义上做到既完成了新系统的建设又保护了原有设备和系统的投资。

安全性、可靠性、先进性原则

安全性与可靠性原则:
     
考虑到电子商务系统工程建设项目安全性、可靠性的需求,在系统设计中,应充分注意系统的安全性和可靠性,采用多种安全防范技术和措施,保障系统的信息安全,保障系统长期稳定可靠运行,同时在系统设计要充分考虑系统运行性能,达到 简便、实用、快捷、安全、准确 的目的。

先进性原则:
     
由于 IT 技术发展的速度惊人。因此,在电子商务项目进行系统总体规划时,我们选择业界到目前为止先进和成熟的技术作为整个系统的技术架构,以保证系统有不断发展和扩充的余地。
      
系统总体设计的先进性原则主要体现在以下几方面:
    1
  系统结构选择当前先进的 J2EE 多层 B/S 架构进行系统开发;
    2
  软件的设计中利用先进的面向对象技术、设计模式和组件技术来提高软件的通用性和复用性。

实用性、操作性原则

衡量一个系统的好坏决不是看它投入了多少、如何的先进,而是看它是否真正满足业务需求,是否真正实用。因此,在进行系统的建设时,始终不忘实用性原则,努力保证投资花在实处,保证建设出来的系统切切实实是所需要的,而不是一个富丽堂皇的空架子,光有一个外表而没有实际的内容。
   
实用性是每个信息系统在建设过程中所必须考虑的,从实际应用的角度来看,这个性能更加重要。为了提高系统的实用性,本系统考虑如下几个方面:
    A
、设计上充分考虑当前各业务层次、各环节管理中数据处理的便利和可行,把满足用户业务管理作为第一要素进行考虑;
    B
、采取总体设计、分步实施的技术方案,在总体设计的前提下,系统实施时先进行业务处理层及低层管理,稳步向中高层管理及全面自动化过渡。这样做可以使系统始终与业务实际需求紧密连在一起,不但增加了系统的实用性,而且可使系统建设保持很好的连贯性;
    C
、全部人机操作设计均充分考虑不同使用者的实际需要;
    D
、用户接口及界面设计充分考虑人体结构特征及视觉特征进行优化设计,界面尽可能美观大方,操作简便实用。
   
一、统一及一致性原则
   
在统一的用户界面风格前提下,实现各 GUI 中各类按钮、图标、文字(字体、大小)、热键(快捷键)的统一和一致,达到便于使用、便于学习、交互友好的目的。
   
二、人机工程及标准化原则
   
在保证界面风格统一、一致的基础上,按照人机工程原理,遵循 IBM Microsoft 的界面设计标准,将界面的布局(包括按钮、菜单、显示框等)设计成符合操作者习惯的形式,并在界面颜色的搭配上满足操作者长时间工作要求,提供一个人性化的人机操作环境,以保证用户使用的舒适性。
   
三、业务引导及易用性原则
   
充分考虑业务的管理需求,在界面的菜单及功能的组合设计中,将界面的操作顺序按业务归类,以便操作的有效引导,保证软件的易用性。同时,在各功能名称的用词、信息提示文字等方面,使用政府审批业务的规范化、习惯化用词,以保证软件使用者的习惯性,符合现有政府审批管理模式,有利于操作者在较快的时间熟练用好软件。
   
四、友好及方便性原则
   
鼠标、键盘的灵活输入方式;热键的使用,以保证各种业务数据信息的录入界面,更新维护界面和记录增删界面及部门内部信息查询界面和信息统计报表界面等使用的方便性、友好性,确保各种业务信息数据都能通过用户界面方便地、快速录入。

 

系统技术架构的特点

我们的技术架构有以下特点:
    
层次清楚,多层的结构,每一层的作用都有明确的规定;
    
具有很强的稳定性,多层结构,每一层都相对稳定,只要接口不变,每一层的改变都不影响其他层;
    
基于组件技术,力求将变化封装在组件内部;
    
适应能力强,同步、异步都能处理,既能满足快速反映的业务的需求,又能满足大数据量、复杂的、异步的业务的需求;
    
OS 、中间件平台、数据库系统无关;
    
具有很好的可扩展性。模块化使得系统很容易在纵向和水平两个方向拓展:一方面可以将系统升级为更大、更有力的平台,同时也可以适当增加规模来增强系统的网络应用。在扩充或修改功能时,基本不会破坏原有结构的稳定性。

系统整合技术概要

中间库

对于大批量的数据共享与交互是通过建立中间的库表结构,将各个系统的信息数据转存的该中间库中,通过一定的间隔时间进行整表或差异的同步更新,从而实现数据共享和交互。
     
中间库的接口实现是通过定义一个对接双方需要的表结构放置于中间库中,然后对接双方不需要直接访问同时也不需要知道对方的数据库,直接从中间库表结构中获取相关的数据信息从而实现数据的共享对接。

中间库特性:
    1
、快速高效
      
通过数据库内置的功能,直接通过数据通信,减少数据中间转换。

2 数据同步和完整性保证
     
对接双方的数据将在可接受的时间间隔内进行中间库数据的同步更新,从而保证对应的数据的 同步和完整性。

3 、数据安全性保证
     
经过中间库数据缓冲,对接双方可以对数据进行过滤、分析从而实现对共享数据的控制。所有进入对接双方系统的数据,都通过业务规则的处理,确保数据进入系统时都是安全可靠的

SOA 技术

对于实时的、需要事务性处理的请求和响应以及小数据量的数据通信采用 SOA 构架的 WebService 技术来发布相关的数据以及服务接口,实时的响应、处理相关的请求。
      SOA
服务具有平台独立的自我描述 XML 文档。 Web 服务描述语言( WSDL, Web Services Description Language )是用于描述服务的标准语言。
     
不同种类的操作系统,应用软件,系统软件和应用基础结构( application infrastructure )相互交织,这便是信息化建设的现状。一些现存的应用程序被用来处理当前的业务流程( business processes ),因此从头建立一个新的基础环境是不可能的。怎样才能对业务的变化做出快速的反应,利用对现有的应用程序和应用基础结构( application infrastructure )的投资来解决新的业务需求,同时为客户、商业伙伴以及供应商提供新的互动渠道,并呈现一个可以支持有机业务( organic business )的构架呢? SOA 凭借其松耦合的特性,使得可以按照模块化的方式来添加新服务或更新现有服务,以解决新的业务需要,提供选择从而可以通过不同的渠道提供服务,并可以把现有的或已有的应用作为服务, 从而保护了现有的 IT 基础建设投资。

项目开发 / 实施方案

基于架构和组件进行开发

基于一个有弹性的架构进行开发,能够非常经济地大幅度提高重用率,从而能够更加适应变化,还能提高可维护性。
     
基于组件的开发是一种非常重要的软件构架方法,通过重用已有的软件组件,可以使软件开发者像搭积木一样快速构造应用程序,从而节省时间、提高工作效率,而且使软件设计更加规范可靠。

RUP(Rational 统一过程 )

RUP 是一种软件工程过程,它提供了如何在开发组织中严格分配任务和职责的方法。它的目标是:按照预先制定的时间计划和经费预算,开发高质量的软件产品以满足最终用户的需求。
     
下图显示了 RUP 的构架。水平轴代表时间,显示了过程的生命周期。垂直轴代表核心过程工作流:业务建模 定义系统需求 分析设计 编码 测试 安装发布。


      RUP
包含了很多现代软件开发中的最佳实践,通过采用 RUP 的部分过程,我们可以更加有效地与用户进行沟通,更好地适应需求的变化,缩短交付周期,向用户交付具有更高质量的

需求管理

需求管理是一种系统性的方法,用于提出、组织、交流和管理软件不断改变的需求。
     
通过有效的需求管理,我们可以:
    1
、更好地控制复杂项目;
    2
、提高软件质量和客户满意度;
    3
、降低项目成本和延迟;
    4
、增强与用户的交流、项目组成员的交流。

网站系统缓存

网站系统缓存,指的是将网站用户浏览过的网页以                                                   静态页面的方式在服务器中保存一段时间,并且缓存定期进行刷新。当有新用户浏览网页时可以从,重新从数据库中读取数据,响应速度更快,从而也减轻了服务器的处理,性能得到优化。

缓存管理

 

借鉴了业界众多的解决                                                         方案,开创提供了一种非常尖端先进的缓存数据技术即 Cache 技术。在系统软件架构分析与设计

上采用先进的 Cache 缓存机制算法,保证了高用户量并发访问给系统服务器带来的业务逻辑计算、核

心组件计算等对各项共享资源的高性能开销要求降到最低;系统效率,主要涉及到高速缓存的问题。

缓存的技术实现主要分为两种:

二、请求中的页面对象存在于缓存对象中:

                                                             

管理用户和用户组

管理用户即为网站系统的管理员,每个管理用户拥有不同的管理权限。划分管理用户组,每个用

户组里面包括了管理用户,一可用户可以属于多个不同用户组。用户 / 用户组的概念与操作系统中的用

/ 组的概念是一致的。一个用户加入一个组之后,就自动拥有了这个组的所有权限。一个用户除了拥

有组的权限之外,还可以被赋予自己独有的权限。

在系统中,用户组可以被定义为对某个特定功能的操作角色。平台管理需要设定一些操作角色,

例如专门有一些人去确认订单的有效性,一些人去做支付确认,另外一些人则负责客户的回访工作。我们可以把这些操作角色都设定成用户组,并配以专门的操作权限。以后一旦有新的用户加入,只要把他加入到特定的组,他就立即拥有该组角色的操作权限,马上上岗操作了。

用户与用户组的引入很大程度上减少了工作量,提高了工作效率。保证了系统的维护的方便与快捷。

操作权限

在系统后台管理栏目树中,每一个管理栏目都有对应的不同的操作。权限的设置是指对系统资源树各个支点所具有的管理权限设置。权限是指特定用户进入该栏目后,对栏目提供的功能的操作权限。举个简单的例子,后台信息管理栏目中包括了信息的增加、修改、删除三种操作,不同的用户可以有不同的操作,如有一部分只有增加和修改信息的操作,有一部分只允许查看信息,有一部分用户可以增删改信息。

权限设置

在权限的设置中包括了三个关键对象:用户 / 用户组、商家、栏目对应的操作,权限的设置就是围绕着这三个对象来进行设置的。在多商家(即多分站)的情况下,后台的管理栏目它是可以分配给多个商家的,例如商品管理栏目, A 分站有此栏目、 B 分站有此栏目、 C 分站也有此栏目。因此在权限设置的过程中就需要有商家(分站)选择。在权限设置的过程中还直接把当前栏目下面的子模块对应的操作列了出来方便设置。

权限设置的步骤:

进行某一个后台栏目设置权限。首先选择某个用户 / 用户组,然后再选择对应的某个商家(分站),在单店模式的情况下,通常只有一个选项 总部 在栏目对应的操作中勾选该用户 / 用户组所拥有的操作权限,然后保存设置。设置其他用户 / 用户组权限,重复 2/3/4 步操作。

图例:                                                                                                        

在后台的多级栏目树中,

子级栏目可以继承父级栏目的权限。例如在                          

商品分类管理中,一个管理用户在拥有了手机栏目下商品的增删改权限,那么手机下一级子栏目诺基亚品牌也继承了上一级栏目的权限,拥有对诺基亚品牌下商品的增删改权限。

栏目权限继承的实现

首先,一个用户在某栏目下所拥有的权限先看该用户在本地栏目下所设置的权限。如果某权限    在本地没有设置,则找该用户所属的所有组在本地栏目下有没设置,有设置则用户得到该权限。用户在这一环节下所得到的权限,我们称为本地权限,在设置权限页面上显示为可设置。

进入第二个环节,如果该用户和其所属组在本地栏目下某权限都没设置,则这套规则就会找该栏目的父栏目。看看该用户和其所属组在父栏目下该权限有无设置,如果有则用户在本地栏目得到该权限设置。如没有则在按同样规则找他父栏目的父栏目,如没有,再往上找,直到最顶,还没有,那该用户在本地栏目下该权限就为没设置。
    
以上这一环节得到的权限我们称为继承权限,在设置权限页面上显示为不可修改,即选择按钮为灰色 DISABLE 状态。

例如: 现有 A B C D 四级栏目, A 为顶层栏目。每个栏目各有其自身所拥有的权限种类,用数字 0~9 表示, X 表示一用户。表示权限的数字颜色为红色代表其为用户在该栏目的本地设置,为兰色代表为继承权限。(用户 X A 栏目有本地权限 1 3 4 。在 B 栏目有本地权限 4 5 6

     
系统中每个栏目有一个是否继承的设置,如选择继承则按照上述规则得到用户权限,如设置成不继承,则该栏目下用户得到的权限只是本地设置,并且该栏目下的子栏目的用户权限也只能继承到这个栏目。比如上例,如果 B 栏目关掉继承,那么用户 X B 栏目只有本地设置的 4 5 6 三种权限,并且 C D 俩栏目将不能从 B 栏目包括 B 自己以上所有栏目继承得到权限,也就是说 D 栏目只能从 C 栏目继承权限了。

栏目管理

网上商城包括了许许多多的功能模块,每一个功能模块都有一个与之对应的栏目管理。一个栏目对应一个业务模型。栏目与栏目之间通常会是从属关系,栏目不是固定不变的,它会随着业务需求不断增加与完善。

可伸展的树状栏目管理

我们的系统以可伸展的树状栏目管理作为整个系统的核心架构,来支持商城的业务运作模型。后台管理由一个系统资源树构成,系统资源树中每一个分支对应的就是一个管理栏目。系统资源不是固定不变的,随着业务的要求,它还可以不断的动态 长大 ,而不会给核心架构带来影响而不可修改。管理员可以根据不同的需求,对分支点进行再分支,可以分为更多不同的小模块,方便管理。

 

 

1、JDBC(Java Database Connectivity)提供连接各种关系数据库的统一接口。   2、EJB(Enterprise JavaBeans)使得开发者方便地创建、部署和管理跨平台的基于组件的企业应用。   3、Java RMI(Java Remote Method Invocation)用来开发分布式Java应用程序。一个Java对象的方法能被远程Java虚拟机调用。这样,远程方法激活可以发生在对等的两端,也可以发生在客户端和服务器之间,只要双方的应用程序都是用Java写的。   4、Java IDL(Java Interface Definition Language) 提供与CORBA(Common Object Request Broker Architecture)的无缝的互操作性。这使得Java能集成异构的商务信息资源。   5、JNDI(Java Naming and Directory Interface)提供从Java平台到的统一的无缝的连接。这个接口屏蔽了企业网络所使用的各种命名和目录服务。   6、JMAPI(Java Management API)为异构网络上系统、网络和服务管理的开发提供一整套丰富的对象和方法。   7、JMS(Java Message Service)提供企业消息服务,如可靠的消息队列、发布和订阅通信、以及有关推拉(Push/Pull)技术的各个方面。   8、JTS(Java transaction Service)提供存取事务处理资源的开放标准,这些事务处理资源包括事务处理应用程序、事务处理管理及监控。   在Java技术中,值得关注的还有JavaBeans,它是一个开放的标准的组件体系结构,它独立于平台,但使用Java语言。一个JavaBean是一个满足JavaBeans规范的Java类,通常定义了一个现实世界的事物或概念。一个JavaBean的主要特征包括属性、方法和事件。通常,在一个支持JavaBeans规范的开发环境(如Sun Java Studio 和IBM VisualAge for Java)中,可以可视地操作JavaBean,也可以使用JavaBean构造出新的JavaBean。JavaBean的优势还在于Java带来的可移植性。现在,EJB (Enterprise JavaBeans) 将JavaBean概念扩展到Java服务端组件体系结构,这个模型支持多层的分布式对象应用。除了JavaBeans,典型的组件体系结构还有DCOM和CORBA,关于这些组件体系结构的深入讨论超出了本书的范围。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值