前一段时间学并行算法,了解到并行算法的机制,配置方法和优势,尽管现在的并行运算仍然不算完美,因为必须在程序里控制并行的计算,可是这种方法仍然为我们的大型计算提供着一个差强人意的解决方式,并且在越来越多的领域发挥着她巨大的作用。
我在网上看到Java也支持MPI并行计算了(老师讲的时候只是提到了c和Fortron) ,为了验证Java确实支持MPI并行运算,我特地装了一个Linux系统,配置了MPI环境,然后配置了MPIJava,功夫不负有心人,终于让我配置成功,尽管仍然有一些瑕疵,就是运行程序的时候会出现乱码,现在仍然没有解决。
不管怎么说,Java确实是支持MPI并行运算了。 于是我在想一个问题,那就是能不能让Web应用程序并行化?简单一点说是这样的:我们现在的并行环境就是组织一个机群,我在其中一个机器上编写并行程序,然后通过某种方式或者协议传送到机群,使用机群的处理器帮助我进行并行运算,那是不是可以在机群上建立一个Web应用程序的接口,让用户通过这个Web应用来提交自己的应用程序?这样的话,只要是能连接到这个机群所搭建的网站,就都可以用这个机群来为自己提供并行运算的服务了。这样所有Web应用程序所具有的优点机群基本上也就具有了。而这种方式似乎也有目前无法克服的困难,那就是通讯问题。
进一步说,如果这种方式可行的话,那是不是可以用这种方式搭建Web应用网站,从而达到更快的响应效果呢?举一个简单的例子,我要注册一个用户,需要我填写用户名和昵称,用户名用来登陆,昵称用来显示,系统不允许有重复的用户名和昵称,当我注册的时候,我会填写用户名,提交,看是否重复,如果不重复,则填写昵称,然后提交。如果这两个可以同时提交,交给两个结点来处理,一个处理用户名是否重复,一个处理昵称是否重复,这样当一个重复的时候我只要修改重复的那一个就可以了。
当然对于这么简单的应用是没有必要这样了,可是如果应用再复杂一些,这样做是不是具有更快的响应速度呢?我能够想到一些应用,可以使用上述的技术,不知道是不是无稽之谈:
第一种是图像处理。比如我有一张图片,需要把它处理一下,我们知道图片的信息量是很大的,有时候处理起来需要很长的时间,可是试着将它提交到网络上,让机群帮忙处理。不过这种方式有很大的局限性,那就是网络的通讯问题。我跟同学提到这个问题,同学说很有可能你用机群处理节省的费用要低于通讯的费用。
第二种是杀毒软件。现在的杀毒软件基本上是基于病毒库技术的,就是说我不断的更新我的病毒库,来记录每一种病毒的行为特征,从而来判断一个文件或者程序是不是病毒。我本科的一个老师曾经跟我说这种方式迟早要走到头的,因为病毒每一天都在以数以万计的速度增长,而我们的病毒库势必会随之不断的庞大起来,当病毒库庞大到一定程度,对硬盘存储,对杀毒时系统的要求都是一个很重大的考验。而到目前为止还没有更好的办法被发明出来。我现在想的就是能不能把病毒库存储在服务器上,用Web的方式提供在线杀毒的方法,或者说安装一个简单的客户端也可以,但是杀毒需要的病毒库是在网络上存储的。这样的话采用并行计算应该可以提高一些速度,因为它可以同时扫描多个文件。
当然上面的两种应用只是我随便想到的,可能它的应用并不止如此。
我不知道现在的Web应用是不是都是采用的这种并行机制,我也不知道这种技术发展到了什么地步,我只是从前一段时间学到的东西里想到这些。希望能看到这个方面有更多的发展。