分布式系统系列(一)---EJB

来源:互联网 发布:黑马手机安全卫士源码 编辑:程序博客网 时间:2024/06/03 19:10

      分布式系统定义:它是由多个节点组成的系统,一般来说一个节点就是我们的一台计算机,这些节点不是孤立的,而是互相连通的,最后这些连通的节点上部署了我们的组件,并且相互之间的操作会有协同。

 

分布式开发的优缺点

1、协作互联,为我们整合大量地理上分撒怒各地的信息和服务,例如百度地图,现在的微信等等

2、经济,应用了分布式从而降低了硬件设施的性能,性价比高。

3、性能与可伸缩性,为了提高软件的生命周期,分布式系统的性能以及扩展性起着至关重要的作用。如果分布式系统没有性能与可扩展性那就算不上一个成功的软件。

4、容错性,系统发生故障,还能照常运行,即365 X 7 X 24

 

       我们项目开发中用的是EJB的分布式。EJB是用于开发和部署多层结构的、分布式的、面向对象的Java应用系统的跨平台的构件体系结构。

          EJB是按照Java服务器接口定义的Java类,可以理解为一个特殊的Java类,放在容器里容器可以帮助该类管理事务、分布式、安全等,一般小的程序不会用到,只有大型分布式系统才会用到EJB。由于颗粒较小,就可以被其他一个或者是多个模块调用。

 

         我们ITOO项目采用的是EJB远程调用--分布式对象。从项目的角度理解使用EJB

         1、系统只需要对别人提供接口即可(面向接口编程),如此一来,系统可以部署于不同的物理机器,由此可产生许多彼此独立的进程,从而达到性能、可扩展性、可用性的系统目标。

         2、可移植组件框架,框架的平台可移植性好体现在我再换一套其他业务,这套框架依然可以适用即达到与平台无关、供应商和应用服务无关。

         3、对象的持久化用JPA提供的接口。

         4、数据库架构无关,EJB是业务逻辑的分布式,与数据库的架构无关。

         5、事务管理,EJB容器提供了事务的管理并自动去处理复杂的线程和并发的共享数据问题。通过EJB容器还解决了远程调用时分布式事务的处理。

         6JBOSS集群和负载均衡减轻了服务器的压力,提升性能。不会宕机,365 X 7 X 24;容错的处理等等。

         7、由于Ejb是业务逻辑的分布式,所以开发过程中,每个人独自开发自己的业务逻辑,互不影响,如果需要交互则只需要提供接口即可;但是这样也必然存在着开发上的劣势,接口没有开发出来之前必须等接口或者是用假数据直接写死,也就造成了项目开发慢。此外还增加了程序调试的时间。

 

 

EJB远程方法调用

1、定义公共接口

2、本地方法从命名服务器中获得对象

3、调用方法,远程拦截器通过代理在方法前后插入中间件服务(比如事务安全等),再调用远程方法。

4、同一个JVM中为本地调用,不同的JVM中为远程调用

//远程调用查找接口CourseBean courseBean =(CourseBean) this.lookupRemoteBean("itoo-basic-course-ear/itoo-basic-course-core-0.0.1-SNAPSHOT/courseBean!com.tgb.itoo.basic.service.CourseBean");StringcourseId = examineeArrangement.getExamination().getCourseId();//远程调用的方法CourseInfocourseInfo = courseBean.findEntityById(courseId);StringcourseName = courseInfo.getCourseName(); 

 

EJBWeb Service区别

说到EJB就会想到Web Service,WebService与EJB有着本质的不同:

1Web Service主要关注于解决异构的问题,包括平台、编程语言等,可以说其关注的是分布式服务开发,控制层高,粒度大;而ejb可以看作是分布式编程平台,通过ContainerComponent的抽象,简化了应用的开发、发布和调用,可以说其关注的是分布式组件开发,粒度小。

2Web Service可以说是业界的一个规范,是不同编程语言异构系统进行通信的标准,ejb只是属于J2EE规范中的一部分。

3ejb底层用rmi-iiop协议进行通信,防火墙会阻止;Web Service是基于http协议进行通信,防火墙不会阻止。

4ejb是远程调用对象,可以调用对象里面的方法以及属性;Web Service提供的接口通过解析XML提供数据。

 

总结

       EJB是业务逻辑的分布式,这样我们把业务逻辑的粒度划分好了,利用JBOSS集群我们可以把一条线部署在多台机器上降低硬件的成本,提高性能。由于EJB是可移植的,与前端技术无关的服务器端组件,那么在开发的过程中开发者只需要集中精力去实现业务逻辑;如果是页面开发人员只需要关注页面;而EJB容器负责处理事务、访问控制、并发等系统问题;性价比高。

          EJB程序框架的核心思想:业务逻辑相关的实现集中在EJB中完成,而EJB容易负责提供带有重复性质的,系统级的功能,这样EJB组件就可以对外提供完整的业务服务。

1 0
原创粉丝点击