`
Xsen
  • 浏览: 138252 次
  • 性别: Icon_minigender_1
  • 来自: 贵阳
社区版块
存档分类
最新评论

java技术扫盲----CLUSTER概要 [转]

阅读更多
转贴:

1 Cluster的概念及优势

2 Cluster的工作机制

3 Cluster的命名服务

4 Cluster的服务类型

CLUSTER概要 一、 Cluster的概念及优势

Weblogic支持集群技术,即让一组Server指向同一域名一起工作从而提供一个更强大、更可靠的应用平台。对于客户端而言,无论Cluster中有几个Server在工作,看上去都是一个。集群技术有两个最明显的特色:
(1)可伸缩性:Cluster对加入其中的Server在性能上没有限制,为了提高性能,当客户端的请求大幅增加时,可以动态地向Cluster中添加Server。并且,配置Cluster当一台机器的资源没有被完全利用时,可以在同一机器上启动多个Server,但要求每一个Server使用不同的IP,而不能用同一IP的不同端口。
(2)高可用性:由于在Cluster中同一service在多个Server上同时存放或放在一个共享文件系统中,因此相同的请求可以有多个Server提供,并且Server间还可以复制状态信息。这样,当其中某一Server宕机或无法响应请求时,其它的Server会立即接管它的任务,从而把应用和客户端完全隔离开来。 二、Cluster的工作机制 每一个Clustered service,在每一个server上都会有一个instance,即一个replica,这些replicas集合在一起形成一个replica-aware stub。这些stubs负责客户端与相关的服务器段对象的通信,当客户端请求该service时,实际上是向stub发出请求,stub根据不同的算法调用集合中某一replica,如果调用失败,stub会检测到错误并重新调用其它的replica。Cluster支持多种算法:随机、轮循、基于性能的负载均衡的轮循(Weight-based round-robin)、根据参数值调用(Parameter-based routing)。
Weblogic Cluster通过负载均衡和容错最大程度的实现了它的可伸缩性和可用性。 为了提高Cluster的可伸缩性,必须保证充分利用每一个Server。Weblogic可以在不同平台、不同性能的机器上安装Server并进行Cluster,然后采用Weight-based round-robin算法达到负载均衡,从而使每一个Server都得到充分的利用。 为了使Cluster具有高可用性,必须具备故障恢复的能力,这一点可以通过replica-aware stub的容错功能来实现。Stub 主要是通过在检测到错误信息时重新进行调用的方式实现容错。当重新调用不会导致错误的结果时(如stub确认failed server不能接收到请求),容错功能自动实现。而有些情况下,重新调用可能会导致某一service被请求了多次的错误结果。例如:客户端C请求Clustered购物车服务中的additem()方法,replica-aware stub接收到请求,根据算法调用Server1上的service,Server1响应请求并返回结果,但在结果成功到达客户端之前,Server1出现错误。此时stub接收到错误信息,因此重新调用Server2上的这一方法,但实际上Server1已经将item加入购物车,这样就造成重复。为了解决这种问题,可以为服务添加一个唯一标识,如上述的additem()方法中可添加一个参数——序列号。每一个item有一个唯一的sequence,相同sequence的item不能被重复添加。 三、 Cluster的命名服务
在Weblogic Server中使用命名服务时,客户端通过JNDI存取service,JNDI tree上绑定了Server提供的所有的公共服务。Server提供一个新的service时,是将service以某一名称绑定到JNDI tree上,客户端和Server建立连接并按照名称获取相应的stub。
Custer扩展了Server的这种命名服务机制,它不仅包含了每一个Server上的非Clustered的stub,而且包含了多个Server间的Clustered 的replica-aware stub。 四、 Cluster的服务类型 在Weblogic中,有多种服务可以进行cluster,如:RMI对象、EJB、Servlets、Jsp、Web Application。 (1)RMI和EJB Clustering
RMI和EJB对象在Cluster过程中使用JNDI命名服务机制。RMI和EJB对象发送remote stubs到客户端,客户端获取的这些stubs可以是已经clustered的,也可以是没有clustered的。对于Clustered的服务,Stubs根据负载均衡和容错的不同需求调用Cluster中合适的Server;而对没有Clustered的服务,所有对此stub的调用只能由提供此服务的Server来处理。 有些有状态的RMI和EJB对象是不可以进行clustered的,因为客户端必须总是和同一个Server上的对象实例相联系。所有的EJB都是clusterable,虽然EJB也有有状态的,但是EJB home interface 都是无状态的,可以进行clustered,这样就可以从JNDI tree上获取 Clusterable EJB 的home stub 对象。然后通过home stub的方法创建或检索相应的EJB bean,若为stateful session bean 或entity bean,那么此时得到的stub就是不可clusterable。为了使有状态的对象可以更好的cluster,可以将一些操作作为一个事务来执行,如果工作中的Server出现意外,可以重新获取此对象并进行事务操作。
RMI和EJB不同,RMI没有定义有状态和无状态分类,因此必须特意绑定一个有状态的RMI对象到Server上。可以仿效EJB home interface的方式即客户端从JNDI tree上获取一个clusterable factory method,然后factory method 可以调用集群中的任意一台Server,但是被调用的Server上必须有由此factory调用的对象。 (2)Clustered Servlets
Servlets也是可以进行Cluster的。对于Servlets,它用replica-aware proxy替代了replica-aware。这个proxy接受web server上所有请求,并转给集群中的某一Server。Proxy对cluster的所有请求进行负载均衡,并且当请求失败时会进行恢复处理。Proxy还可以在cluster中特别是Server没有正常完成请求响应时保持session状态。当session初始化时,proxy按照负载均衡算法选择一台Server保存session,此后,所有与此session相关的请求都由这同一台Server处理。为了避免当此Server出错时,无法保存客户端状态信息,所以session会被复制下来,并且session的所有变化都会在备份中进行及时更新,这样,当原有Server在响应请求过程中失败时,proxy会立即获取session的备份,并由此继续响应客户端请求,同时做新的复制。


(3)JDBC clustering 为了利用Weblogic Server cluster的负载均衡和容错的性能,Weblogic JDBC连接池也可以在replicated naming tree上注册。通常情况下,cluster中的每一个Server都进行连接池属性配置来访问同一个后端的DBMS实例,即对相同数据库的访问,每一个Server都有一个连接池。然后通过在配置文件中定义一个DataSource属性来在naming tree 上注册连接池。客户端使用Weblogic JDBC/RMI JDBC 驱动程序从cluster中获取数据库连接,即客户端按照DataSource name获取连接池,然后按照负载均衡的算法选择相应的Weblogic Server来响应请求。

分享到:
评论

相关推荐

    oracle扫盲-第一讲-创建和管理表PPT课件.ppt

    Oracle扫盲-第一讲-创建和管理表PPT课件 本资源主要讲述Oracle数据库管理系统的基本知识,包括创建和管理表的方法、数据类型、CREATE TABLE语句、数据字典等。 知识点1:数据类型 Oracle数据库中有多种数据类型,...

    Linux扫盲-Linux菜鸟过关(V3.0)——Linux入门必备

    Linux扫盲-Linux菜鸟过关(V3.0)——Linux入门必备 您不需要任何Linux技能也能阅读本教程,Linux菜鸟过关全面解决您的Linux之旅问题。您现在要做的是了解一些Linux知识与安装方法,按照本教程的顺序阅读即可。本...

    matlab扫盲--任.doc

    MATLAB 是一种强大的数学软件,由美国MathWorks公司开发,主要功能包括数值计算、符号计算和图形可视化。MATLAB 的名称来源于"Matrix Laboratory",它以其丰富的运算符和库函数,简洁的语言结构,高效的编程效率而...

    PCIe扫盲-Felix.zip

    具体描述见: https://blog.csdn.net/BjarneCpp/article/details/80370986

    java扫盲初级知识

    随着技术的发展,这些命名逐渐被简化为Java SE、Java EE 和 Java ME。 #### JDK (Java Development Kit) 与 JRE (Java Runtime Environment) - **JDK**:是Java开发工具包,包含编译器、类库、文档以及其他工具,...

    互联网 Java 工程师进阶知识完全扫盲-涵盖高并发、分布式、高可用、微服务、海量数据处理等领域知识

    2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; ...

    诺基亚手机扫盲贴--如何鉴别NOkia品质

    诺基亚手机扫盲贴--如何鉴别NOkia手机品质

    Java 工程师进阶知识完全扫盲

    Java 工程师进阶知识完全扫盲 本文将从 Java 工程师的视角,深入探讨消息队列(Message Queue)技术的知识点,并对面试官的提问进行解答。 一、使用消息队列的原因 面试官:你在系统里用过消息队列吗? 候选人:...

    电子技术扫盲资料-从基础学起

    这份“电子技术扫盲资料”旨在帮助初学者从基础开始理解并掌握电子技术的基本概念和元件。我们将深入探讨电阻、电容、电感以及二极管和三极管这五种基本电子元件。 首先,电阻是电子电路中最常见的元件,它能限制...

    java8集合源码-java-K-stars-projects:java-K-stars-projects

    java8 集合源码 Java 优秀项目列表 更新日期:2020-01-16 :tear-off_calendar: java 学习 : 67,781:star:Java学习+面试指南 : 54,886:star:设计模式 : 41,650:star:Reactive Extensions for the JVM : 41,455:star:...

    渗透测试 行业术语扫盲.pdf

    渗透测试 行业术语扫盲-来源-公众号-moonsec

    01-扫盲篇-渗透入坑专业术语知多少.md

    01-扫盲篇-渗透入坑专业术语知多少.md

    扫盲队伍-报警讲义

    报警系统扫盲

    java8源码-learn-java:学习Java

    java8 源码 :thumbs_up:推荐:PDF 版本在 后台回复“开源”即可获取! 中文 | Great Java project on Github(Github 上非常棒的 Java 开源项目). 大家都知道 Github 是一个程序员福地,这里有各种厉害的开源框架、...

    PCIe扫盲,pcie扫盲系列博文

    PCIe(Peripheral Component Interconnect Express)是现代计算机中广泛使用的高速接口标准,它为设备...通过深入学习这些概念,无论是硬件工程师还是系统管理员,都能更好地掌握PCIe技术,从而在实际工作中得心应手。

    J2EE扫盲之-揭开J2EE集群的神秘面纱

    ### J2EE扫盲之-揭开J2EE集群的神秘面纱 #### 1. 前言 随着互联网业务的迅速发展与企业信息化水平的不断提升,越来越多的关键性应用程序选择基于J2EE(Java 2 Platform, Enterprise Edition)平台进行构建。例如,...

    高级java笔试题-awesome-learning:Github仓库学习资源!

    高级java笔试题 awesome-learning Github repository learning resource! Java/Kotlin 基础/面试/算法 27天成为Java大神 :face_with_open_mouth: 互联网 Java 工程师进阶知识完全扫盲:涵盖高并发、分布式、高可用、...

    华三H3C-VXLAN配置-扫盲必看

    ### 华三H3C-VXLAN配置-扫盲必看 #### VXLAN简介 VXLAN(Virtual eXtensible Local Area Network)是一种网络虚拟化技术,它通过在网络层和传输层之间添加一个二层封装,使得二层数据可以在三层网络上进行传输。这...

    互联网 Java 工程师进阶知识完全扫盲

    "互联网 Java 工程师进阶知识完全扫盲"是一个全面的学习资源,旨在帮助Java开发者提升技能,掌握在高并发、分布式、高可用、微服务以及海量数据处理等关键领域的专业知识。 首先,我们要讨论的是高并发处理。在...

Global site tag (gtag.js) - Google Analytics