6

我想问是否存在一个程序,该程序旨在穿越地球(例如跟随一些物理力),可能占用和释放计算资源/节点。从字面上看,这意味着某些基于代理的系统只是定期更改其位置和(在某种程度上不可避免地)配置。

一个例子是:假设你有外部传感器,以及跨空间的空闲计算机 - 节点;自我复制代理以跟随传感器的初始化程序是否有意义,但是以这种限制性的方式使计算仅本地化在物理业务进行的地方。

我想强调这个问题只是为了“理论上”的乐趣,因为除了优化“过时”(取代?)代理处置之外,我看不到所提到的限制的任何实际好处。但也许它可能会引起一些兴趣。谢谢!

编辑:很明显,病毒是合适的例子,尽管开发人员很少担心删除此类代理。更准确地说,我对“旅行”软件感兴趣——也就是说,当代理的数量(或至少顺序)是恒定的,而旅行的只是整个系统。

4

7 回答 7

5

无处不在的计算研究社区在这类问题上做了很多工作。

例如,如果您正在处理一个文档,您会根据您周围的设备以特定的交互方式显示它。如果你在交流,同样的事情。您可能会争辩说,许多基于位置的计算应用程序都在做类似的事情。国防部正在赞助一些关于上下文敏感的自动化助手等的研究。

如果我们假设一个跨越全球的分布式“云”,那么计算实际发生的位置对您来说将是未知且透明的。重要的是上下文。考虑到支持 GPS 的设备变得无处不在并且视频处理变得越来越便宜(我 50 美元的相机可以识别人脸),那么上下文的质量肯定会提高。从这个意义上说,许多程序已经体现了您所描述的愿景。

于 2010-05-28T20:32:10.167 回答
2

任何可以由移动程序完成的事情似乎都可以由广泛分布的程序完成。

于 2010-05-28T20:24:11.140 回答
1

我自己从未使用过它,但编程语言Obliq似乎适合这种计算。来自此网页上引用的 Obliq 论文(第 12 页):

Obliq 解决了一种非常动态的分布式编程形式,其中对象可以通过网络重定向它们的行为,并且计算可以在网络站点之间漫游。

于 2010-05-28T20:59:01.823 回答
1

我相信您正在寻找的是所谓的移动代理

顺便说一句:我不相信病毒符合条件。病毒的定义特征之一是它不能自行传播,而是依赖人类用户来传播。不过,蠕虫也有资格。

于 2010-05-28T23:20:23.710 回答
1

这也许是间接的,是 Jini 背后的信条之一。在这种情况下,可以说是下载驱动程序的问题。但由于它是基于 Java 的,因此可移植代码在设备之间移动的概念是系统的核心理念之一。

现在,为此,这段代码本身并没有“移动”,而是被复制了。它不会“离开”服务器。

但是您可以看到,特别是对于 Java,从一个空的 JVM 和某种 shell 开始,让代码从一个 JVM“移动”到另一个是非常简单的。

你可以看到这样的过程。

1) 系统 A 有应用程序正在运行,具有状态和本地类。2) 系统 B 具有在系统上执行的“传输外壳”。3) A 想要将应用程序转移到 B 4) A 暂停应用程序并序列化其状态,这可能就像只使用股票 Java 对象序列化一样简单。这个序列化的对象有一个“重启”方法。5) B 设置了一个ClassLoader,它引用System A 上的类。这个类加载器将根据请求将类从A 复制到B,然后可以将它们存储在本地。6) A 将序列化的应用程序状态发送给 B,B 将其反序列化。7) B 上的 ClassLoader 开始从 A 拉取类文件,因为应用程序被反序列化 8) 一旦对象被反序列化,B 调用“restart”方法,应用程序继续运行。9)一个“忘记”

显然这是幼稚的,并且充满了潜在的问题。

但是你可以看到,尤其是使用虚拟机,这样的东西是如何工作的。

现代虚拟机架构正在处理这个过程,实际上是这个过程,对正在运行的虚拟机进行快照,将图像移动到其他机器,然后启动它们。虚拟机的基础使这变得“简单”。

Java 示例只是您无需成为虚拟化工程师即可使用的东西。

于 2010-05-28T23:42:47.480 回答
0

是的,如果您有一个遍布全球的处理交付网络和某种脚本迁移,您可以登录并让脚本根据某种地理位置迁移到您附近的节点。

于 2010-05-28T20:49:24.947 回答
0

也许僵尸网络的主人很接近您正在寻找的东西?显然与上面的“病毒”答案非常相似:不同之处在于,虽然病毒通常“复制、传播、做预先编程的不方便的事情”,但僵尸网络更像是“为未来控制你的机器,通常是邪恶的,但动态目的。我认为主机(您的“代理”)也可以更轻松地通过僵尸网络进行更改。

于 2010-05-28T22:01:32.230 回答