Chapter 2. Clustered JNDI Services
(HA-JNDI服务也是个cluster的服务, 就像其它服务一样, 并且是其他服务的注册表)
JNDI是应用服务器中最重要的服务(就像手机中的sim卡). JBoss HA-JNDI(High Availability JNDI)服务功能如下:
* 透明的失败转移. 如果一个naming context连接的服务失效或者停机, 自动转移到另外一个AS 实例上
* 负载均衡. naming context自动的负载均衡到cluster中的所有server上.
* 自动发现 HA-JNDI服务器, 利用广播.(现在的网络情况下能行?)
* 统一的JNDI树形结构. 连上一个node就能知道其他node上的服务. 通过以下两种机制实现:
1. cluster内lookup. 客户端lookup, 服务端HA-JNDI服务能发现绑定在node上的普通JNDI
2. cluster范围内的复制context tree. 绑定到HA-JNDI上面的对象可以在cluster内复制, 副本会出现在cluster中每个node的vm内.
JNDI是其他基于拦截器cluster服务关键: 那些服务注册到JNDI所以客户端能够lookup到他们的proxy, 从而调用他们. HA-JDNI通过HA的方式查找服务. 但是, 要记住, HA-JNDI对找到的服务能否提供cluster服务没有作用:
* 如果EJB不是配置为cluster, 仅从HA-JNDI lookup到的EJB不能得到cluster的好处(load balance/失败转移/状态传播)
* 如果EJB配置为cluster, 通过普通的JDNI去lookup不会让EJB cluster的特点消失.
(这个鸟东西写的特别晦涩, 貌似注册表同步缓存到每个节点上. EJB的cluster服务必须跟他狼狈为奸才最好用, 但不是必须的.)
(另外这玩意应该是基于缓存服务的, 能否就把它当singleton使?)
2.1 HA-JNDI是怎样工作的
JBoss客户端HA-JNDI命名Context基于客户端拦截器.
客户端拿到一个HA-JNDI proxy对象(通过InitialContext对象), 通过proxy调用远程服务器上的JNDI lookup. 客户端通过配置InitialContext需要的properties来指定HA-JNDI proxy.
在服务器端, HA-JNDI服务维护一个cluster范围内的contex树. 只要cluster里面还有一个node, 这个树就存在. 每个Node还维护一个本地的JNDI Context树. 这个节点上的HA-JNDI服务就能找到本地树JNDI树上绑定的对象. 一个应用把可以把对象绑定在哪里都可以. 理由如下:
* 避免了迁移问题. 仅仅通过配置文件就能让cluster实现.
* 在一个homogeneous cluster,这种配置减少了网络通讯. homogenous cluster是说在不同node上, 同类对象用相同的名字去绑定. (有反例吗?)
* HA-JNDI变成可选服务. 因为代码里面仅仅new InitialContext()来查找和绑定.
服务器端, 通过new InitialContext()来绑定是本机的, 不是cluster范围内的(这是基本的JNDI). 所以, 所有的EJB home等等都不会绑定到cluster级别的JNDI上, 仅仅是绑定到本地JNDI
当一个远程客户端通过HA-JNDI来lookup的时候, HA-JNDI在cluster范围内找不到时会代理本地到Context. 规则如下:
* Cluster范围JNDI优先
* 尝试本地JNDI
* 去其他node的本地JNDI找(没有隐私了?)
* throw new NameNotFoundException()
在实战中, 应该尽量不要绑定对象到Cluster级别的JNDI树上去, 应该绑定到本地. 比如EJB, 应该绑定到本地JNDI, 而不是HA-JNDI. 所以, 客户端通过HA-JNDI是通过代理到本地JNDI上的.
(就是说, 把cluster这种事情让框架去操心, 尽管按照最简单的本地方式去lookup, 减肥是EJB的近期发展方向)
注意 写道
在不同的node上, 同样的名字可能在本地绑定了不同的东西, 而HA-JNDI不一定先找到哪个node. 所以要用不同的名字绑定不同的东西
注意 写道
如果你想用HA-JNDI的话, 就别想用其他的JNDI实现,比如LDAP. 但是你可以使用ExteneralContext MBean来绑定非JBoss JNDI树到JBosss JNDI命名空间. 此外, 你可以为cluster用一个集中的JNDI服务器, 废掉HA-JNDI和JNP
注意 写道
如果绑定仅仅发生在一小撮node上, 比如一个bean仅仅部署在cluster的少部分node上, 根据查找规则, 那些没有绑定的节点可能会被先遍历一圈才回到本地. HA-JNDI的查找时间会很长. 尽可能的, 缓存JNDI查询结果
这里有三段重复,貌似作者喝高了, 略
分享到:
- 2009-05-03 22:06
- 浏览 1319
- 评论(2)
- 论坛回复 / 浏览 (2 / 2704)
- 查看更多
相关推荐
- **外部负载均衡器架构**:使用第三方负载均衡设备来分发请求,这种方式通常适用于大规模部署。 #### 三、负载均衡策略 负载均衡策略决定了如何将客户端请求分配给集群中的各个节点。常见的负载均衡策略包括: -...
### JBoss4 Guide 中文版知识点详述 #### 核心知识点概览 - **JavaEE平台**: JBoss4作为一款高性能的企业级应用服务器,专为JavaEE平台设计,支持J2EE1.4标准,提供了全面的企业级服务,如事务处理、消息传递、...
Jboss集群配置指南,详细介绍了如何构建Jboss集群环境
6. 集成与扩展:探索jBPM5与企业服务总线(Enterprise Service Bus,简称ESB)、数据持久层和第三方系统的集成方案。 7. 测试与优化:提供jBPM5应用的测试策略,以及如何根据业务需求优化流程性能。 8. 安全性:...
### JBoss Admin Development Guide 3.26:深入解析与技术要点 #### 一、关于JBoss及其在开源世界中的地位 JBoss是一款基于Java的开源应用服务器,它支持Java平台上的各种服务,如Java EE应用程序。JBoss以其强大...
EJB3是Java EE 5中的重要部分,JBoss5对其进行了全面支持。EJB3引入了无XML的注解配置,简化了开发流程。源代码中可以看到容器如何解析注解,管理bean的生命周期,以及如何执行持久化操作(通过Hibernate)。 4. *...
### Drools JBoss Rules 5 开发者指南 #### 知识点一:Drools 平台介绍 - **定义与背景**:Drools 是一个开源业务规则管理系统(Business Rule Management System, BRMS),它支持开发人员通过声明式编程来实现...
综上所述,"JBoss 4.0 Start Guide"将引导读者全面了解和掌握JBoss 4.0的使用,从安装、配置、应用部署到性能优化,再到故障排查和源码分析,涵盖了整个生命周期的操作。通过学习,开发者和系统管理员能有效地管理和...
与客户端拦截器不同,这里更多地依赖于硬件或第三方软件来进行流量分配。 **2.3 农场部署模型** 农场部署模型是一种特殊的集群部署方式,通常用于处理大规模并发请求的情况。这部分内容深入探讨了农场部署的原理、...
3. 文档中提到了Hibernate EntityManager Reference Guide,该指南是专门针对JBoss Enterprise Application Platform 5及其补丁发布版的。这份文档的目的是帮助开发者更好地理解和使用Hibernate EntityManager与...
这部分详细介绍了 JBoss Enterprise Middleware Suite (JEMS) 在集成过程中的重要里程碑事件。通过这些里程碑,读者可以了解到 JBoss 如何逐步完善其产品线,并且与其他组件进行集成的过程。 #### 二、项目管理和...
本部分将深入探讨JBoss 5的源代码,了解其内部工作原理以及如何利用这些知识来优化和扩展应用程序。 JBoss 5源代码的分析可以从以下几个关键模块入手: 1. **核心服务**:JBoss的核心服务包括事务管理、安全管理、...
安全性是 JBoss 的一个重要组成部分,书中详细介绍了如何配置安全服务以及使用 JAAS (Java Authentication and Authorization Service) 来实现用户身份验证和授权。 **安全服务配置** - **`org.jboss.security....
### JBoss Messaging 1.4.0.GA 用户指南知识点概览 #### 一、关于本书及介绍 **1.1 关于本书** 本用户指南是JBoss Messaging 1.4.0.GA版本的官方文档,详细介绍了该消息中间件的安装与配置流程。文档由Red Hat公司...
JBoss Developers Guide 英文epub 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系上传者或csdn删除
### JBoss AOP 用户指南概览与核心知识点 #### 一、什么是面向切面编程 (Aspect-Oriented Programming, AOP) 面向切面编程是一种软件设计范式,它旨在通过将横切关注点(cross-cutting concerns)从业务逻辑中分离...
《JBoss 4.0 The Official Guide》是JBoss应用服务器使用的一本权威指南,针对的是4.0版本,这是JBoss的一个重要里程碑。这本书详细介绍了如何配置、管理和部署Java EE应用程序在JBoss上,是开发者、系统管理员以及...
- **使用 JMX 作为微内核**:这部分阐述了 JMX 在 JBoss 中作为微内核的作用,以及它是如何管理和启动服务的。 #### 六、其他重要知识点 - **类加载器架构**:讨论了 JBoss 中的类加载器是如何工作的,以及这种架构...