基于Java的网络分布式计算相关技术探究

2015-04-20 15:52李艳花
电子技术与软件工程 2015年6期
关键词:分布式

摘 要 分布式计算以其无比快捷的处理速度使其在世界迅速流行开来,而java也因其对于分布式计算的友好性使得越来越多的人开始注重基于java的分布式计算。可以预见,基于java的分布式计算系统会越来越普遍,本文即是讨论利用java研究分布式计算的相关技术。

【关键词】分布式 java RMI

1 分布式计算

1.1 分布式计算系统

分布式计算,顾名思义,即将原本需要极其巨大计算能力的问题分解为众多的小问题,并且将这些问题分配给一些计算机进行处理,最终将各个计算机得出的计算结果进行统计即可得出原本问题的答案。

1.2 分布式计算应用程序的特点

分布式最为显著的特点之一就是其可以进行稀有资源的共享,及其可以在两个或两个以上的软件中进行信息共享,并且这些软件不仅可以在一台电脑上运行,更可以在多台电脑上运行。因此我们可以根据计算机的计算能力平衡的分配每台计算机的任务,将程序放在最为适合运行运行该程序的计算机上,使得计算速度达到最快。由于这种特点,目前世界甚至已经存在一些处理能力可以超过巨型计算机的分布式计算系统。

1.3 分布式计算面临的问题

正所谓有得必有失,无数子电脑的帮助计算大大加速了分布式计算的运行速度,但缺乏足够的计算机进行计算成为了分布式计算一个不小的问题。

随着科技的发展,计算机也开始慢慢普及开来,越来越多的家庭电脑出于闲置状态,互联网虽然使得网络分布式计算的实现成为了可能。一些研究所开发出了用于分布式计算的服务端和客户端。服务端将可以分解的复杂问题分解为无数小块,通过互联网将问题发送到志愿提供计算机部分计算能力的计算机中,并统合得到最终答案。但随之而来的又有了一部分问题,志愿者需要在研究所等处下载计算用的程序,并且允许该程序运行在本电脑上,会因此带来一些隐私数据泄露的隐患,而且计算程序在平时虽然不会影响用户使用电脑,但当计算程序全负荷运行时,仍然会对一些性能不是很优秀的电脑造成影响,甚至影响用户的计算机寿命。此外还有防止志愿者电脑突然事故等原因,研究所还需要寻找一部分多余的电脑进行保证计算的运行。

2 Java技术

2.1 Java在分布式计算上的优势与不足

Java作为当今最为流行的编程语言,其本就是应网络而生的,更因为其提供了众多的类与方法,其对网络分布式计算有着天然的友好性。其不足之处也很是明显,由于java开发分布式大多采用RMI,而RMI又有着其局限性,因为它只提供着java虚拟机之间的相互联系,它不能被其他语言所编写出来的对象或应用所使用。

2.2 Java多线程编程

多线程可以允许程序在执行中发出多个并发的指令流,并且这些指令流是乱序执行的,而我们可以轻易的通过类java.lang.Thread在java中实现多线程

2.3 Java类装载器

Java类加载器是负责动态加载java类至java的虚拟机中的,正是因为java类加载器,java程序在运行时系统不需要知道文件和文件系统。

2.4 Java RMI

前言已经提及了java对于分布式计算有着天然的友好性,其主要原因就是因为RMI。RMI中文意思为远程方法调用,其为我们提供了很方便的使java程序调用其他计算机上的java的方法,即只需经过一些初始化过程,远程方法的调用就可以和本地方法的调用一样,因此其为分布式网络的应用提供了比较完善的框架。

在RMI中,我们需要先建立一个服务器和一个或多个客户端。其中服务器必须在被客户端访问前初始化完毕,做好被远程访问的准备,而客户端则需要寻找到服务器并激活,然后使用服务器对RMI连接初始化。

3 用Java对网络分布式计算相关技术的研究

3.1 服务器与客户端的建立

首先我们需要先建立一个远程接口。在建立接口之前我们需要知道,只有在网络通信的情况下我们才可以进行远程方法的调用,但由于网络通信的不稳定性即网络出现异常或者有一方断开了连接,远程方法的调用就会失败,因此我们需要在接口中的所有的的方法中调用java.rmi.remoteexception异常,这样在远程方法调用时当网络出现异常,RMI会指出remoteexception异常,当客户端获得到这样的异常时就会做出相应的处理。此外,远程对象必须在远程的接口中申明了被用户程序远程访问。

其次我们要实现远程接口。想要实现远程接口,我们需要使用java.rmi.sever.UnicastRemoteObject类,因为在该类中我们可以实现RMI中的关于服务器和客户端的远程对象、方法以及相关参数序列化的协议交流功能。

然后我们需要创建服务器。先建立一个远程对象实例,然后在rmiregistry注册表中注册这一个远程对象实例将其与一个名字绑定,注册表的相关功能则由jdk的安装目录下的rmiregistry.exe程序完成,该程序主要是为其提供命名服务。

最终我们需要在建立一个客户端。在客户端的程序中我们需要先获得远程对象的存根对象,这些存根是由rmic生成的,我们可以通过这些存根来调用方法。

3.2 负载平衡的研究

负载平衡的意思是对系统的负载情况进行动态的调整,以此来尽力的减少系统中各个站点的负载不平衡的现象,从而提高系统的工作速度。因此负载平衡问题是分布式计算系统的核心问题之一,优秀的负载平衡方法可以使人们充分的利用分布式计算的能力。

负载平衡主要有两种算法,服务器算法:当一个站点超载时期会尝试将任务发给其他的轻站点,并且主要选择新任务作为将要发送的任务。客户端算法:当该站点的任务队列的长度小于阀值的时候,该站点就会尝试从中载站点接受一个任务,这时所有站点上的任务都有可能会作为其接受的对象。

参考文献

[1]谢进军.Java多线程技术在考试系统中的应用[J].电子制作,2013(15):76-76.

[2]谢聪钰.Java多线程编程技术的研究[J].城市建设理论研究(电子版),2013(23).

作者简介

李艳花(1981-),云南省昆明市人。大学本科学历。现为云南工程职业学院计算机科学与技术专业讲师。研究方向为计算机软件应用、计算机教学研究。

作者单位

云南工程职业学院 云南省安宁市 650300

猜你喜欢
分布式
基于预处理MUSIC算法的分布式阵列DOA估计
西门子 分布式I/O Simatic ET 200AL
家庭分布式储能的发展前景