用Java实现基于CORBA的自动负载均衡

CORBA程序设计入门:分布式计算的中间件技术 本文还有配套的精品资源,点击获取 简介:CORBA是一种允许不同计算机平台间软件组件相互通信的中间件技术。本文介绍了CORBA的核心概念,如ORB、IDL、GIOP/IIOP、CORBA对象和服务、ORB初始化、客户端调用流程、多语言支持以及安全性。文档将指导读者了解如何定义接口、创建ORB、注册和查找对象,并介绍客户端和服务器端的交互,同时提供实际示例帮助初学者快速掌握C... 阅读详情
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script> 用Java实现基于CORBA的自动负载均衡 陈亚奇 王红霞 2002-4-18 14:39:07 -------------------------------------------------------------------------------- 负载均衡 负载均衡是分布式计算中的一个重要内容,它的主要目标在于均衡所有结点上的负载,以使得所有结点上的负载基本相等,这种相等并非简单的任务数目相等,而是依据这些异构结点的性能分派的加权相等。 负载分配算法大体上可以分为静态、动态和自适应算法三类。静态负载分配算法根据已有的有关任务的信息,通过某个算法来确定任务的分配,它不使用系统状态信息来决定负载的分配,这对一些应用具有较高的效益。动态分配算法通过交换系统的状态信息决定系统负载的分配,具有超过静态算法的执行潜力。它能够适应系统负载变化情况,比静态算法更灵活、有效。由于它必须收集、储存并分析状态信息,因此动态算法会产生比静态算法更多的系统开销,但这种开销常常可以被抵消掉。自适应负载分配算法是一类特殊的动态算法,它们通过动态地改变其参数、策略来调节其活动以适应变化的系统状态。 动态负载分配算法按照集中程度可以分为集中式、完全分布式、层次性或它们中的一些结合算法。在动态集中式负载均衡系统中,全局负载信息收集在一个结点上,任何结点的负载变化信息都传给这个结点,负载均衡的所有决定由它做出。这种方式的好处在于能够以较少的开销收集全局信息,挑选出最佳结点执行任务,并且可以扩充到较大的网络计算系统。在完全分布式负载均衡系统中,每个结点保存相邻结点或系统中部分结点的负载信息,相互合作做出各自的负载分配。这种策略实现比较简单,并且经过一段时间后,可以选择到较合适的结点执行任务,缺点是不能获得最佳结点分配负载,很难扩展到成千上万个结点的网络计算系统。层次性方法是根据集中式、分散式方法的优缺点结合而成的一种负载均衡算法。它将系统分成层次性的子系统,在不同层次上特殊的结点作为负载均衡决策的控制结点,以分散其集中方式控制整个系统的负载均衡,它和网络拓扑结构有很强的相关性。 分布式计算 简单地说,分布式计算就是两个或多个软件互相共享信息,分散的计算资源通过分布式计算可以形成强大的计算能力。这些软件既可以在同一台机器上运行,也可以在通过网络连起来的几台不同的机器上运行。绝大多数分布式计算是基于客户机/服务器模型的。在客户机/服务器模型内,有两类主要的软件,客户机软件,它提出信息或服务的请求;服务器软件,则提供这种信息或服务。分布式计算具有共享稀有资源、在不同机器上平衡计算负载等优点。 目前比较流行的分布式计算方案为CORBA(Common Object Request Broker Architecture,通用对象请求代理体系结构)。CORBA由OMG(Object Management Group,对象管理组织)提出,已得到业界的广泛认可,获得了广泛的应用支持。本解决方案即采用了CORBA技术。 CORBA使用代理器ORB(Object Request Broker,对象请求代理)来处理系统中客户机与服务器之间的消息(称为请求)。ORB提供客户程序与服务程序之间的通信连接。当客户程序发出请求时,ORB查找对象的实现,将请求交给该对象(并在需要时激活对象),并将响应返回给客户程序。客户机无需知道服务器是哪个,身处何处,发送请求及返回结果的工作全部由ORB完成。ORB能选中一个最符合客户机请求的服务器,并把客户机所看到的接口从服务器的实现中分离出来,接口与实现分离的好处是可以采用灵活的、搭积木式的开发方法,实现对客户隐藏服务器的变化。只要接口及其行为没有变化,就可以构造一个新的服务器或修改已有的服务器而无需改变客户机。 实际问题 在油藏描述中有一类问题为地质统计分析,计算耗时很长(用工作站进行一次最简单的计算约耗时30分钟)。已有的计算程序是为单机而开发,生成的结果数据文件数据量很大(300002行,8Mb)。为了提高分析质量,现场多采用选用不同参数多次分析计算,然后对所有结果文件的对应位置数据取平均值的做法,非常费时费力。 为了解决这一难题,作者采用了基于CORBA的分布式计算技术。首先对原有非CORBA兼容程序进行封装,使其能被服务器对象的方法所调用,从外界看好象是服务器对象的方法一样;然后将计算程序—服务器程序对分别安装到网络中的几台工作站上,构成服务对象组;最后在网络中的一台微机上安装客户软件和ORB,即构成了一个完整的CORBA应用系统。在该系统中,操作者在客户程序中输入计算参数,通过ORB依次使其它工作站上的服务器程序启动计算软件进行分析计算,并将计算结果由服务器程序通过ORB回送给客户程序,由客户程序进行结果处理。 在上述过程中,最为关键的操作为ORB确定下一个请求时要启动的服务器,在各服务器节点间平衡负载,以减少任务响应时间,提高计算资源利用效率。这一工作需要用到CORBA的一个特性——自动负载均衡。 CORBA的ORB提供了基本的负载均衡功能,该功能的提供是基于动态集中式负载分配算法。服务器端建立服务器对象,然后向ORB注册,这样便形成了网络中所有可用的服务器对象列表。当ORB收到对某个服务器对象的引用请求后,就在自己维护的可用服务器对象列表中根据动态集中式负载分配算法找到可用对象,并将客户程序绑定到该对象的实例(在需要时将其激活)。 尽管CORBA提供了基本的负载均衡能力,但在某些特定的应用中仍显得性能不足。如前述的油藏描述问题,要求客户程序每变换一次参数,就新启动一个服务器进行分析,也即对每一个客户端请求实例,都必须有一个新的服务器对象来响应。而在CORBA中,对于客户端的同一个请求实例,都会固定地被绑定到同一个服务器对象。因此,需要对CORBA的基本负载均衡特性进行巧妙的应用以解决上述瓶颈问题。 方案一:采用多客户进程和多服务器进程(如10客户机和10服务器)的方式(见图1),使每个客户机都可以找到一个服务器进行计算。但这样带来的问题是,客户端为各个彼此间相互独立的进程,结果数据位于各进程的专有存储空间中,结果处理比较困难。 方案二:在客户端引入多线程技术,见图2。在客户机程序中建立线程组,组中的线程根据操作者进行计算的需要自动产生,并且都是同一个客户请求实例的副本。这样,每个副本实现了相同的请求实例却又相互独立,就可以激活不同的服务器完成相同功能的分析操作。由于线程共享内存单元,因此每个线程都可将计算结果存储在公用结果存储空间中,这就使得可以用客户端程序自动对计算结果进行平均处理。每当操作者修改了计算参数开始计算时,客户程序即向线程组中加入一个新的请求线程,通过ORB根据动态集中式负载分配算法找到一个空闲或负载最轻的服务器进行计算,并将返回的计算结果存入客户程序的公用结果存储区中。另外,在计算线程组之外还需要一个监控线程对计算线程组中各线程的状态进行轮询,以便当所有计算线程执行完毕并返回结果后触发结果处理操作。 经过方案二巧妙的技术处理,利用CORBA提供的基本负载均衡功能解决了特定应用的特殊要求所带来的瓶颈问题。 根据上面的思想,作者在某项目中应用了该技术。该分布式计算系统由一台微机和数台Sun工作站组成,CORBA客户端和ORB运行于微机上,在每个工作站上运行有计算程序—服务器程序对。整个处理过程耗时为第一个服务器启动到最后一个服务器启动的时间间隔加上单服务器执行时间。前者是调整参数时间,后者为真正的计算时间,且前者一般远小于后者。由此可以看出,应用该技术构建分布式计算系统,处理一个油藏描述问题所耗时间将约为原计算耗时的1/N(N为计算次数,整数),进行更复杂的处理时效率提高就尤为明显。
构建分布式酒店预订系统:Java RMI和CORBA的应用 本文还有配套的精品资源,点击获取 简介:分布式通信对于构建大规模、高可用性的IT系统至关重要。本课程项目“Distributed-Communication”通过Java平台上的远程方法调用(RMI)和公共对象请求代理架构(CORBA)技术,实现了一个酒店预订系统。该系统涵盖了一系列组件,如预订服务器、用户界面、数据库、认证与授权以及负载均衡。项目同时探讨了性能优化、容错与... 阅读详情

相关推荐

C++ CORBA高级编程实践:源代码详解

随着计算机网络技术的飞速发展,分布式计算应运而生,成为了现代软件开发中的一个重要方向。CORBA(Common Object Request Broker Architecture)即通用对象请求代理体系结构,它是OMG(Object Management Group)组织在1991年提出的一项旨在实现分布式对象系统互操作性的国际标准。CORBA通过一个中间件层来连接位于不同网络环境下的各种对象,使得这些对象能够无缝通信,共同协作完成复杂的任务。

weixin_42452483的博客 1163

每个Java程序员都必须知道的四种负载均衡算法

一般来说,我们在设计系统的时候,为了系统的高扩展性,会尽可能的创建无状态的系统,这样我们就可以采用集群的方式部署,最终很方便的根据需要动态增减服务器数量。但是,要使系统具有更好的可扩展性,除了无状态设计之外,还要考虑采用什么负载均衡算法,本文就带领大家认识以下常见的4种负载均衡算法。负载均衡是指多台服务器以对称的方式组成一个服务器集群。每台服务器的地位相当(但不同的服务器可能性能不同),可以独立提供服务,无需其他服务器的辅助。为了保证系统的可扩展性,需要有一种算法能够将系统负载平均分配给集群中的每台服务器。

不定时分享最优质的网络技术与教程,满满的干货。 354

深入理解中间件技术:COM、CORBA与EJB实验报告

中间件技术作为IT架构中的重要组成部分,为软件应用提供了一个基本框架和一系列服务,以便于应用程序的开发、集成、运行和管理。在本章中,我们将从中间件的定义出发,探讨其核心特征、基本功能以及在现代企业级应用中的重要性。中间件位于操作系统和应用程序之间,提供了一组标准的服务,使得应用程序的开发、部署和维护更为简便。它通常包括消息服务、远程过程调用、事务管理等组件。中间件的一个关键特性是其平台独立性,允许不同的应用程序之间相互通信,无论是跨不同硬件平台还是操作系统。

weixin_36382073的博客 1093

java负载均衡工具类(LoadBalancerUtils)

T select();该接口定义了负载均衡器的基本操作,即select()方法,它返回一个类型为T的对象,用于处理请求。T可以是服务器实例或微服务实例等。

Flying_Fish_roe的博客 1673

nginx-tomcat整合实现JAVA程序负载均衡

负载均衡 Haproxy1.8.4

负载均衡工具haproxy 1.8 linux下用的,windows服务器请不要下载

均衡负载java工具类_GitHub - YuanCoder/ProportionalSelector: 按权重以指定概率/比例的方式获取元素的Java实现工具类,适用场景如:流量分配、负载均衡、随机...

ProportionalSelector按权重以指定概率/比例的方式获取元素的Java实现工具类。Get Started//使用简单的候选对象SimpleCandidate c1 = new SimpleCandidate("service1", 1);SimpleCandidate c2 = new SimpleCandidate("service2", 2);SimpleCandidate c...

weixin_34039843的博客 364

负载均衡配置

nginx配置负载均衡配置,以及相关说明,及权重配置说明

什么是CORBA

公用对象请求代理(调度)程序体系结构(Common Object Request Broker Architecture),缩写为 CORBA,是对象管理组织(Object Management Group)对应当今快速增长的软硬件的协同工作能力的要求而提出的方案。简而言之,CORBA 允许应用程序和其他的应用程序通讯,而不论他们在什么地方或者由谁来设计。CORBA 1.1 由对象管理组织在 19

jxluoix的专栏 1145

adb 通信协议分析以及实现 (三) (Adb 网络通信部分解析)

这篇文章说下adb 和adb 服务进程之间通信的socket 协议。  adb 服务进程启动之后,会监视本地的5037 端口,使用的是TCP 协议,所以adb 发送的命令其实就是往本地的5037 端口发送数据,做过网络编程的都知道,本机可以用127.0.0.1 ip地址。 有了ip 地址和端口号socket 通信就没问题 1)  命令发送方式      

inforecovvery的博客 2870

RT-Thread实战:手把手教你用STM32F04ZGT6通过SPI驱动BMI088(附完整工程)

本文详细介绍了如何使用RT-Thread操作系统在STM32F04ZGT6上通过SPI接口驱动BMI088高性能6轴惯性传感器(包含陀螺仪和加速度计)。从硬件连接到软件配置,再到数据采集与处理,提供了完整的开发指南和优化技巧,帮助开发者快速实现精确的姿态测量功能。

kappa的博客 237

方兴未艾的CORBA

方兴未艾的CORBA 庞燕 武新逢 ---- 一直以来,面向对象的技术(Object Orientation,OO)是软件界努力追求的目标,传统的对象技术通过封装、继承及多态提供了良好的代码重用功能。但是这些对象只存在于一个程序中,外面的世界并不知道它们的存在,也无法访问它们。要解决这些问题就需要提供一个标准的构件框架,使不同厂家的软件通过不同的地址空间、网络和操作系统交互访问。该构件

闲云野鹤专栏 848

建议收藏:华为海思IC设计笔试题,含解析(附下载)

接触过的部门有麒麟芯片、CPU/GPU,总体面试感觉非常好,规范且认真,第一轮手撕代码状态机+复盘机考题+瞄准几个知识点深挖,时间1hour+;一二轮面试是连着的,所以很累。但是岗位就那么多,在面试的时候,很多同学因为准备不充分,与岗位失之交臂,无缘进入该公司。时序电路有记忆功能,不会产生锁存器,锁存器一般在组合逻辑中case写不全,else写不全,或者敏感列表写不全。

nuoweishizi的博客 3289

【架构-34】浅谈构件技术CORBA、EJB、COM+

CORBA(Common Object Request Broker Architecture,公共对象请求代理体系结构)是一种软件架构,它允许不同计算机系统之间进行通信和数据交换,不管这些计算机系统是用什么编程语言编写的,也不管它们运行在什么类型的硬件上。想象一下,你有很多不同的玩具,它们来自不同的制造商,有的会说话,有的会动,但它们之间不能互相交流。想象一下,你正在组织一个大型的国际美食节,这个美食节需要不同的厨师团队来自世界各地,他们要在一个共同的平台上展示他们的厨艺。

qq_45611002的博客 1672

逆向CarPlay协议时,除了USB主从切换,你还需要注意这3个关键点

本文深入探讨逆向CarPlay协议时的3个关键点,包括MFi协议背景、多通道协同工作机制和协议分析工具的高级过滤技巧。特别解析了USB主从切换后的复杂交互过程,帮助安全研究员和逆向工程师更好地理解CarPlay协议的核心机制与潜在安全研究切入点。

weixin_29164497的博客 383

告别手动打点!用Cesium为你的大疆无人机快速生成区域巡查航线(保姆级教程)

本文详细介绍了如何利用Cesium平台为大疆无人机快速生成区域巡查航线的保姆级教程。通过自动化航线规划,告别传统手动打点的繁琐操作,实现高效、无死角的区域覆盖。文章涵盖环境搭建、实战案例及高级优化技巧,特别适合无人机操作员和巡检工作者提升工作效率。

weixin_30399821的博客 521

已解决:org.omg.CORBA.portable.RemarshalException 在 CORBA 中需要重新编组的正确解决方法,亲测有效!!!

异常在分布式系统中较为常见,尤其是在使用 CORBA 进行远程方法调用时。通过引入自动重试机制、检查和优化网络连接、增加超时处理以及增强服务器稳定性,可以有效减少和解决此类异常。

猿鹏探码的博客 728

永磁同步电机定子槽型设计实战:从梨形槽到矩形槽的NVH优化之路

本文深入探讨了永磁同步电机定子槽型设计在NVH优化中的关键作用,对比了梨形槽与矩形槽的性能差异。通过Ansys Maxwell仿真和实际案例,揭示了矩形槽在提升槽满率、降低电磁噪声方面的优势,并总结了五大设计黄金法则,为电机设计工程师提供了实用指导。

weixin_28740299的博客 494

【系统架构设计师】商用构件的标准规范

2.最底层的对象请求代理(ObiectRequestBroker,ORB)规定了分布对象的定义(接口)和语言映射,实现对象间的通信和互操作,是分布对象系统中的“软总线”;2.其中,在分布式互操作协议上,J2EE同时支持远程方法调用(RemoteMethodInvocation,RMI)和互联网内部对象请求代理协议(Internet Inter-ORB Protocol,IIOP),而在服务器端分布式应用的构造形式,则包括了 Java Servlet、JSP、EJB等多种形式,以支持不同的业务需求。

王佑辉的博客 1044

多路输出电源的交叉调整率:从理论到无源优化实践

本文深入探讨了多路输出电源中的交叉调整率问题,分析了其物理根源及无源优化方法。通过漏感与耦合的理论分析,结合加权反馈、电感耦合等五种无源优化技术,帮助工程师有效解决交叉调整率挑战。文章还以TDK-Lambda CUT75系列为例,展示了优化技术的实际应用与效果。

weixin_26886855的博客 281

机器学习(十九):梯度提升回归(GBR)

机器学习中的梯度提升回归算法原理与案例实战。

全栈川川 5157

java 应用服务器 2015_JAVA应用服务器 >BES

一、产品简介:针对J2EETM和基于Web Services应用程序的高性能应用服务器快速开发与部署。BES® Application Server是一款健硕的高性能应用服务器,适用于J2EETM平台应用和Web Service。其可插拔架构,小型运作脚本以及完善的集中管理配置,使其非常适合成为需求高可靠性J2EE应用程序的构建模块。BES Application Server集成的应用程序业务和...

weixin_33158887的博客 632

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

上一篇: 面向对象编程:Java中的抽象数据类型
下一篇: 浅论Java访问COM/ActiveX
java169
博客等级 码龄19年 27粉丝 2568原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值