请问 EBJ到底是什么??

请问 EBJ到底是什么??,第1张

EJB是sun的服务器端组件模型,最大的用处是部署分布式应用程序,类似微软的com技术。凭借java跨平台的优势,用EJB技术部署的分布式系统可以不限于特定的平台。
EJB (Enterprise JavaBean)是J2EE的一部分,定义了一个用于开发基于组件的企业多重应用程序的标准。其特点包括网络服务支持和核心开发工具(SDK)。
在J2EE里,Enterprise Java Beans(EJB)称为Java 企业Bean,是Java的核心代码,分别是会话Bean(Session Bean),实体Bean(Entity Bean)和消息驱动Bean(MessageDriven Bean)。
1Session Bean用于实现业务逻辑,它可以是有状态的,也可以是无状态的。每当客户端请求时,容器就会选择一个Session Bean来为客户端服务。Session Bean可以直接访问数据库,但更多时候,它会通过Entity Bean实现数据访问。
2Entity Bean是域模型对象,用于实现O/R映射,负责将数据库中的表记录映射为内存中的Entity对象,事实上,创建一个Entity Bean对象相当于新建一条记录,删除一个Entity Bean会同时从数据库中删除对应记录,修改一个Entity Bean时,容器会自动将Entity Bean的状态和数据库同步。
3MessageDriven Bean是EJB20中引入的新的企业Bean,它基于JMS消息,只能接收客户端发送的JMS消息然后处理。MDB实际上是一个异步的无状态Session Bean,客户端调用MDB后无需等待,立刻返回,MDB将异步处理客户请求。这适合于需要异步处理请求的场合,比如订单处理,这样就能避免客户端长时间的等待一个方法调用直到返回结果。
EJB实际上是SUN的J2EE中的一套规范,并且规定了一系列的API用来实现把EJB概念转换成EJB产品EJB是BEANS,BEANS是什么概念,那就是得有一个容纳她,让她可劲造腾的地方,就是得有容器EJB必须生存在EJB容器中这个容器可是功能强大之极!她首先要包装你BEAN,EJB的客户程序实际上从来就不和你编写的EJB直接打交道,他们之间是通过HOME/REMOTE接口来发生关系的它负责你的BEAN的所有的吃喝拉萨睡,比如BEAN的持续化,安全性,事务管理
一什么是 EJB
一个技术规范:EJB 从技术上而言不是一种"产品"
EJB 是一种标准描述了构建应用组件要解决的:
可扩展 (Scalable)
分布式 (Distributed)
事务处理 (Transactional)
数据存储 (Persistent)
安全性 (Secure)
二Sun 对 EJB 的期望
提供一个标准的分布的、基于 OO 的组件架构
屏蔽复杂的系统级功能需求
Write once, run anywhere
与非 Java 应用之间的互 *** 作能力
兼容 CORBA 标准
三为什么选择 EJB
EJB 服务器完成"繁杂"的工作:应用开发人员关注于业务逻辑的实现而不是底层的实现机制(类似于 4GL 语言设计的目标)
支持事务处理
多个业务 *** 作同时成功,或全部失败
可以通过在代码外的描述来定义事务处理级别
可扩展性
EJB 可以根据您应用的增长而扩展
EJB 服务器往往还提供了负载均衡和
安全性:由 EJB 服务器提供资源的访问权限控制
四EJB 架构
为了满足架构的目标,规范中描述了
服务器 (Server)
容器 (Container)
类 (Class) 和实例 (Instance)
Home 和 Remote 接口
客户端 (Client)
五 简化的编程模型
关注于业务逻辑实现:EJB 负责生命周期 (lifecycle), 数据存储 (persistence), 事务处理语义 (transactional semantic), 安全(security),
通用的编程模型:各种服务的高层 API
Java 是其编程语言
EJB( 业务逻辑代码 ) 表示了与特定商业领域(例如银行、零售等行业)相适应的逻辑。它由
运行在业务逻辑层的 enterprise bean 处理。一个 enterprise bean 可以从客户端接受数据,对
它进行处理,并将其发送到企业信息系统层以作存储;同时它也可以从存储器获取数据,
处理后将其发送到客户端应用程序。
有三种类型的 enterprise beans:session beans、entity beans 和 message-driven beans。
Session bean 描述了与客户端的一个短暂的会话。当客户端的执行完成后,session bean 和
它的数据都将消失;与之相对应的是一个 entity bean 描述了存储在数据库表中的一行持久
稳固的数据,如果客户端终止或者服务结束,底层的服务会负责 entity bean 数据的存储。
Message-driven bean 结合了 session bean 和 Java 信息服务(JMS)信息监听者的功能,它允
许一个商业组件异步地接受 JMS 消息。

常见的服务器架构有以下三种:
服务器集群架构:
服务器集群就是指将很多服务器集中起来一起进行同一种服务,在客户端看来就像是只有一个服务器。集群可以利用多个计算机进行并行计算从而获得很高的计算速度,也可以用多个计算机做备份,从而使得任何一个机器坏了整个系统还是能正常运行。
服务器负载均衡架构:
负载均衡
(Load
Balancing)
建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。
分布式服务器架构:
所谓分布式资源共享服务器就是指数据和程序可以不位于一个服务器上,而是分散到多个服务器,以网络上分散分布的地理信息数据及受其影响的数据库 *** 作为研究对象的一种理论计算模型服务器形式。分布式有利于任务在整个计算机系统上进行分配与优化,克服了传统集中式系统会导致中心主机资源紧张与响应瓶颈的缺陷,解决了网络GIS
中存在的数据异构、数据共享、运算复杂等问题,是地理信息系统技术的一大进步。
这个三种架构都是常见的服务器架构,集群的主要是IT公司在做,可以保障重要数据安全;负载均衡主要是为了分担访问量,避免临时的网络堵塞,主要用于电子商务类型的网站;分布式服务器主要是解决跨区域,多个单个节点达到高速访问的目前,一般是类似CDN的用途的话,会采用分布式服务器。

分布式服务器上下线动态感知(Hadoop HA)
HDFS集群中NameNode 存在单点故障问题,对于只有一个NameNode的集群,如果NameNode机器出现意外情况,将导致整个集群无法使用,直到NameNode 重新启动。

影响HDFS集群不可用主要包括以下两种情况:

NameNode机器宕机,将导致集群不可用,重启NameNode之后才可使用。

计划需要对NameNode节点软件或硬件升级,导致集群在短时间内不可用。

为了解决上述问题,Hadoop给出了HDFS的 高可用 HA方案:HDFS的HA通常由两个NameNode组成,一个处于 active 状态,另一个处于 standby 状态。Active NameNode对外提供服务,比如处理来自客户端的RPC请求,而Standby NameNode则不对外提供服务,仅同步Active NameNode的状态,以便能够在它失败时快速进行切换。而这里的快速切换是如何实现的呢?是通过zookeeper的 动态上线感知 来实现的。

简单介绍下zookeeper是什么?

ZooKeeper 顾名思义  动物园管理员 ,他是拿来管大象(Hadoop) 、 蜜蜂(Hive) 、 小猪(Pig)  的管理员, Apache Hbase和 Apache Solr 以及LinkedIn sensei  等项目中都采用到了 Zookeeper。ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,ZooKeeper是以Fast Paxos算法为基础,实现同步服务,配置维护和命名服务等分布式应用。这是zookeeper的官方介绍,对于程序原来说zookeeper在hadoop中的应用可以理解为是hadoop的整体监控系统,如果namenode宕机后,这时候Zookeeper 的重新选出leader。这是它最大的作用所在。

接下来看看zookeeper的 动态上线感知 图:

1、首先在hadoop中配置自动故障转移机制。

2、在配置HA的时候首先配置zookeeper集群,然后启动zookeeper集群。

3、在第一次启动hadoop的HA之前先初始化HA在zookeeper中的状态然后启动HA,在启动过程中会在各个NameNode节点上启动DFSZK Failover Controller,作用就是向zookeeper中注册服务器的信息,然后hadoop通过进程监控在zookeeper中的节点状态。

4、在zookeeper中注册的节点是临时节点,当服务器宕机下线的时候,zookeeper会把这个节点删除掉,这样才会产生事件,客户端(hadoop)才能监听到,然后hadoop将Standby NameNode转换为Active NameNode。

java的某些项目为什么要采用分布式开发,分布式开发

在数据库应用程序的开发过程中,网络已走到社会的各个角落。从金融行业的银行联网、交通行业的售票系统、公安系统的全国户籍管理等等,这些企业或行业单位之间地理分布性或业务分布性,使得一个企业或行业拥有多个网络服务器,如何在这种分布式的网络环境下实现高效的数据库应用程序的开发是一个重要的问题。

分布式应用开发简单的说,是指将用户界面、控制台服务、数据库管理三个层次部署在不同的位置上。其中用户界面是客户端实现的功能,控制台服务是一个专门的服务器,数据管理是在一个专门的数据库服务器上实现的。

提示:这里的Web服务器,都是指软件(如IIS等Web服务器软件),它和Web服务器应用以及其它程序等,共同存在于服务器计算机上。

控制台CGI应用:是一个独立的控制台EXE。它在一个标准输入设备上接收客户端的请求信息,在标准输出设备上将结果返回给服务器。

分布式数据库系统已经成为信息处理学科的重要领域,正在迅速发展之中,原因是什么?

1、它可以解决组织机构分散而数据需要相互联系的问题。比如银行系统,总行与各分行处于不同的城市或城市中的各个地区,在业务上它们需要处理各自的数据,也需要彼此之间的交换和处理,这就需要分布式的系统。

2、如果一个组织机构需要增加新的相对自主的组织单位来扩充机构,则分布式数据库系统可以在对当前机构影响最小的情况下进行扩充。

3、均衡负载的需要。数据的分解采用使局部应用达到最大,这使得各处理机之间的相互干扰降到最低。负载在各处理机之间分担,可以避免临界瓶颈。

4、当现有机构中已存在几个数据库系统,而且实现全局应用的必要性增加时,就可以由这些数据库自下而上构成分布式数据库系统。

5、相等规模的分布式数据库系统在出现故障的几率上不会比集中式数据库系统低,但由于其故障的影响仅限于局部数据应用,因此就整个系统来讲它的可靠性是比较高的。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/13270357.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-05
下一篇 2023-07-05

发表评论

登录后才能评论

评论列表(0条)

保存