深入研究云计算模式

来源:互联网 发布:jquery weui.js文档 编辑:程序博客网 时间:2024/05/07 00:01

深入研究云计算模式

 

上次我写了篇《初识云操作系统》的文章。这次我将着重介绍如何进行云计算,以及云计算所涉及的方方面面的知识。当然,这都是我按我自己的了解到的知识再加上自己的创造而写的,并不算是什么权威的东西。可以认为是我自己的一些感想!

 

云计算,即分布式计算、网格计算的衍生物。在本地计算资源不足的情况下,将计算任务发送到网络服务器上,由网络服务器代为完成其计算任务。

 

云计算的模式主要有以下三个(参考了网络操作系统相关知识):

一、线程迁移模式,这个是量级最小的一级迁移,再小就难以协同了(至少实现难度上会比这个难),有的时候需要将进程里的各个线程分到不同的服务器上运行,以期达到更好的计算性能。如矩阵计算需要特殊的CPU等,而非矩阵运算可以使用一般的CPU即可。

二、进程级任务迁移模式。一个进程可包括多个线程。因而是一个完整的计算任务的迁移。如:把在手机运行魔兽游戏的进程迁移到网络服务器上,只能输入输出进行传送及结果的回传(输入---键盘鼠标的输入,运行结果---动画结果)。又如运行别的大型的程序,如一个科学计算的大型算法程序。这些都可以将整个进程迁移到别的服务器上进行计算,得到结果再返回即可。

三、作业级作务迁移。作业即在某一段时间内计算机要完成的计算及逻辑处理任务。这是粒度最大的一类迁移。比如将手机作为一个大型门户网站的服务器,这是计算能力肯定是不够的,怎么办。可以使用云服务进行虚拟服务器的配置。将某一段时间内的服务任务都放到这些云服务器,让云服务代为处理所有的一切。当然,通过你的手机终端,你可以对这些作业进行实时的监控及管理。

 

对于上述过程是如何实现的呢。云操作系统可以采用隐式和显示调度两种方式。

一、隐式调度。对于线程等一级的调度可以采用隐式调度,当然,这隐式调度也是经过用户允许的隐式调度。如云计算服务费用太贵,用户可以不采用此种方式。但如果用户将模式设定为:在计算过程中,为了更高的性能,操作系统可以以最好的方式对线程进行“云调度”。那么云操作系统可以完全按照云计算任务所需的计算能力,进行动态的“云调度”。

二、显式调度。一旦需要进行“云调度”,则必先征求用户的同意(比如弹出对话框,以征求用户的意见)。这里的“云调度”涉及计算任务的调度及“云设备”的调度。(云设备---比如需要用到“云打印机”等)。

在具体的云计算的调度(即计算任务的迁移调度),可以采用两者的综合来平衡之。

 

云计算的底层实现

云计算要将一个计算作务迁移到别一台机器上,要涉及很多的问题。其中最为关键的问题是:

一、数据如何进行迁移及共享。这里的数据包括代码数据及程序运行所需的数据(堆、栈内存数据,文件数据,设备资源等)。

二、运行结果将如何返回给用户。是实时返回还是运行结束再一次性返回。运行结果是如何描述的,内容是什么----图形亦或仅仅是数据。这些数据将如何描述及再现。

三、如何迁移,应该迁移到什么样的机器上,这些机器是如何分配和调度的。各个服务器是相互间是平等的还是有主从关系的。这些协作的算法及服务器又得安装怎样的操作系统(管理软件)来完成这些任务的协作。

四、对于已经在云端注册云服务的用户,如何保证其计算任务的可持续性,以及完整性及安全性。可持续性指的是,如果用户的云端下线之后,服务该如何进行,现场该如何保存等。完整性是指,如何将这些运行结果反映到用户的云环境中。比如在云端对云存储的数据进行了动态的修改,那么这些数据的修改如何保证其能完整无缺的保存下来---将计算结果保存起来。安全性,云计算服务器出现异常,如何避免出现不可预料的结果。

五、云计算如何将本地资源与云服务器资源结合起来,以提供给用户最优质的云计算服务。如优先使用本地的云设备,把本地的云计算设备整合成一个局域的云网络。

 

虽然我提出了这些实现云计算所要解决问题,但是并不是说我就已经拥有了这些问题的答案。因为这些都是些很现实的问题,涉及到了具体的实现了。没有做就没有发言权,所以还是等我做了再说。

 

云计算的应用程序的编制及实现机制。这是极其关键的。是云应用的基础。没有云应用程序的编写,用户的云计算任务将无法得到满足,因而提供一种云编程模式是十分关键的。

参考微软的.net,可以设想的实施方案为:

一、将基本的类库及服务编写成通用的代码集(程序集),由本地编写程序时调用之。这点可以构造统一的应用程序编程模式。标准接口,标准类库,这将进一步降低云计算任务迁移的数据量。(只需将极少量的非标准化代码及程序所需数据进行迁移即可----当然,这里涉及了托管机制)。强大的类库及云计算例程(标准化的程序集)将为代码的迁移的方便提供最为优良的保障。

二、将代码编译成中间代码形式,采用托管的方法对代码进行动态的编译及执行。生成一些移植性其好的托管代码。有利于程序集的迁移。这就好比,如果你云行的一个程序。我在服务器端已经安装有的话,那么程序你就不需要从用户端迁移到服务器了,只需要将程序所需的数据迁移即可。这迁移所需的时空资源大为降低。

三、将云应用程序存储于云端,由云网络提供方便的迁移。比如你在家上传了一个应用程序。那么你这个程序将保存在离你家最近的云网络中,当你需要将云计算“托管”出去,那么直接从最近的服务器得到该云计算服务即可。当你离开注册地(云应用程序上传所在地)时,在外地运行你所需的程序,可以通过云网络进行快速的转移,近而解决了云共享的问题。当然,这在用户看来是不可见的。

 

从这点来说,微软的.net战略还是具有一定的优势的。商业云的发展值得我们继续关注。

 

文章结尾语:

随着云计算技术的不断发展,以上谈到的各种问题也将逐步的解决,云计算所涉及的各种计算模式也将渐渐清晰,唯一还值得我们警醒的是:我们自己的云又以哪里,难道云计算只能靠大型的IT厂商来支持发展吗?我想不是的,在上面我也谈到,如果一台主机断网了或者局域网里面亦有着很多功能强劲的主机,为什么我们不能把云操作系统弄好一点,让这些离散的“云设备”(脱离了互联网的计算设备)也具有云计算的能力了-------实现了这种功能的云操作系统也是我们所需要的。所以不管是大云还是小的云朵,只要是给这个世界带来了美丽的风景线,就值得我们去创造它。