MyException - 我的异常网
当前位置:我的异常网» 云计算 » nanoHUB 使得远道计算成为可能

nanoHUB 使得远道计算成为可能

www.myexceptions.net  网友分享于:2015-08-26  浏览:2次
nanoHUB 使得远程计算成为可能

nanoHUB.org 使用了一种独特的中间件系统,该系统精确地兼顾了安全性、性能和方便性,以支持纳米技术的分布式公共研究。使用这个研究网关的科学家可以将精力集中在他们自己的研究上,而不必操心有关计算的问题。

与 nanoHUB 当前所提供的优点一样重要的是,它还告诉了我们如何配置和增强一些众所周知的开放源代码组件,以实现比大多数开发人员所想象的更加丰富的虚拟计算体验。让我们看看它究竟带来了什么,以使得像 Supriyo Datta(NASA/Purdue Institute for Nanoelectronics and Computing 的负责人)这样的研究人员对它进行报导,“就我们而言,只需很少的努力,就可以将我们的模拟工具提供给同事们使用。而且,我们的同事基本上不需要付出任何努力,就可以运行分子的电子模拟。”从下面的图 1 中可以看到,nanoHUB 很好地兼顾了两个方面的易用性,既适合于在其中发布工作成果的科学家,又适合于查看相关成果(可用内容)的同事们。


图 1. 碳纳米管模拟的屏幕截图
碳纳米管模拟的屏幕截图

nanoHUB 是一个基于 Web 的研究中心

其基本思想很简单:您是一位纳米技术研究人员,并且希望充分利用 Network for Computational Nanotechnology (NCN) 的资源,NCN 是几所大学与其他合作者组成的一个协会(请参见参考资料)。那么此刻无论您在哪里、无论这些特定的资源在物理上采用何种方式提供,在您的台式计算机或者便携式计算机中,都应该可以通过键盘和显示器连接到各种丰富的数据、计算能力、模拟硬件和 NCN 应用程序。

应该 是很简单的。从最终用户的角度出发,它在开发中得到了极大关注,具体原因如下:

  • 必须对所有的通信进行加密。
  • 为最终用户提供保护的本地防火墙,通常包含一些不容易理解的策略,甚至在少数情况下,最终用户能够意识到它们的存在。
  • NCN 资源的使用必须经过分配,并且在某些情况下,还必须实行定量配给。
  • 对于研究人员所连接的各种台式计算机,它们在技术功能上有着很大的不同。
  • 许多应用程序仅限于特定的硬件组合,并且使用方法各异。
  • nanoHUB 作为一个整体,必须是可管理的、可伸缩的、可靠的、可用的、可测试的和可恢复的。
  • nanoHUB 需要与现有的安全基础设施保持兼容,换句话说,让最终用户尽可能多地依赖于他们已经知道的帐号和密码。

尽管一些专有的和开放源代码工具能够满足一个或者两个需求,但即使在最好情况下,整个过程在配置上也是非常复杂的。那么为 nanoHUB 访问者所提供的方便性体现在哪里呢?

这种方便性的体现必须很好地兼顾自定义的 VNC、SSL、X11、Apache,以及一些其他开放源代码项目。可以考虑一下,在本文开头附近所显示的关于纳米管模拟的内容(请参见图 1)。通过单击特定的 nanoHUB 应用程序(CNTbands 2.0)、选择合适的参数、并以交互的方式调整 3-D 图像,可以在几秒钟之内获得这个图像。除了使用 Web 浏览器中所包含的典型的 Java™ 运行时解释器之外,不需要任何其他软件。具体说来,用户不需要获取和配置可视化系统。大多数研究人员并不知道如何使用 OpenDX 或者 PyMol(甚至不知道如何安装它们),而且他们也没必要知道。

nanoHUB 不需要进行这样的安装,这一点很好。纳米管可视化,与许多其他的 nanoHUB 支持有很多相似之处,它是相当复杂的,并且对于典型的桌面计算机来说运行速度很慢。

最初,这个模拟作为一个不带可视化功能的应用程序提供下载。在过去的一年里,基本上已经停止了这些下载,因为 nanoHUB 的易用性和硬件加速可视化的有效性完全超出了研究人员自己对源代码进行编译和修改所获得的边际收益。对于他们来说,使用本地资源对结果进行可视化,这样做没有任何优点可言。对于这些从事相关工作的科学家来说,与任何备选的本地提供方案相比,nanoHUB 更易于使用,并且可以提供更多有趣的结果。

此外,这个值得注意的示例非常具有概括性。在科学领域中通常认为,如果研究人员要查看令人满意的图形,必须使用最先进的硬件设备。nanoHUB 则一次又一次地证明了它所提供的、经过仔细优化的 VNC 解决方案能够实现更好的 性能,即使是通过普通的广域网 (WAN)。nanoHUB 充分地利用了 NCN 站点所提供的大量特殊用途的工具,然后依赖 VNC 的 RFB 协议,以便将可视化结果传递到 nanoHUB 客户端所在的台式计算机。计算专家专注于最大限度地利用 nanoHUB 的有形资产,而全球范围的、使用 nanoHUB 的纳米技术研究人员,则可以将他们的关注重点由计算问题转回到他们最擅长的科学领域。

软件细化:努力实现“使其正常工作”

nanoHUB 工作人员已经采用不同的方式解决了一些计算问题,以使得研究人员可以向前推进纳米科学的研究,相同的屏幕截图说明了这些方式的几个其他示例。在 Result 选择器的右边,有一个指向下方的绿色下载箭头。如果您单击它,那么将出现一个新浏览器窗口,其中显示了该模拟的静态图像;当然,在这个窗口中,可以直接使用浏览器以打印图像、将其保存到外部文件等等。

下面对这些操作进行更深入地研究:请记住,只有在计算服务器中才能看见这个按钮。为了实现文件的下载,服务器向客户端发送一条消息,以请求客户端的 Web 浏览器从 nanoHUB 获得该文件。这个请求将被路由到该应用程序(基于 Tcl 的 Web 服务器提供该文件的应用程序)。文件上传也很方便。最终用户可以获得他们所需的内容,并且无需担心通过 VNC 可视的图像会影响到新的浏览器框架的启动。

还有更多的内容。请注意,如果您用鼠标抓住该窗口的边界并拉伸应用程序的显示界面,那么会发生下面的事件:它的反应非常灵敏。这不仅仅只是对窗口的大小进行调整,因为 X11 帧缓冲区的尺寸限制了任何调整大小的操作。相反,nanoHUB 将调整自己的 X11 帧缓冲区的大小,并且它允许查看者的帧缓冲区将应用程序压缩 到合适的大小。据我们所知,对于 X11 服务器来说,以前没有记载过这种技术。例如,Xephyr X Server 可以在几个方面对 Xnest 进行更新,但是它并没有尝试这种相当微妙的效果。

该应用程序的显示中还包括一个 Popout 按钮,该按钮将取消 VNC 窗口的嵌入效果。因为某些浏览器无法很好地呈现嵌入的 Java Applet,所以这样做是有好处的。具体说来,最终用户在 Mac OS X 中使用 Firefox 时,或者使用任何运行于双屏幕的 XP 桌面的浏览器时,光标指针的移动常常会留下鼠标轨迹取消嵌入 可以提供一个可充分调整大小的、基于 VNC 的窗口,该窗口不显示鼠标轨迹。

nanoHUB 的实现还提供了大量其他所需的属性。它完全由虚拟计算机来承载,当然可以对这些虚拟计算机进行快照、重新承载、备份、写入到 DVD 等等。如果 nanoHUB 在普渡大学的当前主页受到了一定程度的破坏,那么它可以(至少在原则上可以)恢复到当前状态。

虚拟化基础设施有助于实现 nanoHUB 的可测试性和安全性。可以直接地启动“快速连续的 1000 个随机应用程序会话”、或者“同时启动 100 个会话”,在 nanoHUB 站点中做出了这样的说明。此外,当前的实现“为每个应用程序会话提供了一个完全私有的环境”。这些选项的高度可管理性增加了 nanoHUB 技术团队隔离错误并提高安全性的能力。

nanoHUB 还利用各种标准对其管理的其他方面进行简化。可以通过 WebDAV 完成大量的维护工作。出于这个目的,可以将 WebDAV 看作一种协议,它扩展了 HTTP 的检索模型,以便通过常见的浏览器技术提供读写能力。WebDAV 如何访问多用户文件系统(比如计算上非常复杂的 nanoHUB 结构)呢?可以通过 FUSE(一种可编程文件系统)将 Web 服务器快速、简单地映射到某个特定的用户。与传统备选方法相比,这种方法提供了更安全的访问:以 root 的身份运行 Web 服务器,并提供转换到文件访问器权限的实例。大量其他的站点在体系结构上选择了后面一种方法,它允许 Web 服务器使用 root 用户。开放源代码生态系统现在非常丰富,足以提供所有种类的组件(如 FUSE),可以组合这些组件以产生更好的(更安全的、更有效的、更具可维护性的)解决方案,这一点非常令人满意。

对开放源代码组件进行的修改

nanoHUB 的用户已经非常熟悉各种计算机。与其他情况相比,nanoHUB 向他们提供了一些存在本质区别的功能;它成功地结合了可靠性、性能、功能和安全等方面的特性,这使得 nanoHUB 能够给他们带来更多的东西。

到现在为止,nanoHUB 及其直接前趋已经经历了十多年的发展;详细描述启用 nanoHUB 的所有细化内容,已经超出了本文的范围。例如,对 VNC 和 X11 所做的修改多不胜数、非常复杂,并且分散在许多源文件中,以处理各种各样的安全注意事项,其不只是在最初对这些产品进行编码时出现的注意事项。同样,使用普渡大学的缺省规则(它并 赞成开放源代码)来管理 NCN 源代码的发行。

对 WebDAV FUSE 映射器所做的修改经过了本地化,以便容易理解,甚至在相对孤立的情况下。大多数 FUSE fusexmp.c 示例代码用于选项解析、错误处理和样板文件。其中最初包括 fuse_main(...),nanoHUB 依赖于下面按顺序排列的版本(请参见清单 1):


清单 1. nanoHUB 的经过精心设计的 fuse_main()
                
      fuse_setup(...);
      umask(0);
      setfsuid(...);
      chroot(...);
      setregid(...);
      setreuid(...);
      fuse_loop(...);
      fuse_teardown(...);
    

用于安全性的 Goldilocks 级别 在这里的含义是:严格设置合适的权限和访问,既不太多也不太少。

比较

nanoHUB 并不像常见的远程控制 系统(如 Fog Creek Copilot、Microsoft® Remote Desktop、WebEx Desktop、或者 GoToMyPc)那样共享一台计算机的物理显示器;相反,它是 Citrix(在一个服务器中承载多个虚拟显示器)的再现。使用 nanoHUB 无需缴纳许可费用,并且就承载和显示来说,nanoHUB 比 Citrix 具有更强的可移植性。同样,可以将 nanoHUB 客户端嵌入到 Web 浏览器中,如前所述,并且可以更加容易地对连接进行更改,以便穿过典型的防火墙。

nanoHUB 一次又一次地体现出它的总体主题,即类似于一些更常见的技术(例如,常规的 Web 应用程序),但是它在基础设施中进行了重新设计,以达到更高的安全标准、性能或者可伸缩性。

端口转发

下面为端口转发提供了一个具有说明性的示例:nanoHUB 使用 Web 服务器中的连接路由器进行端口转发。它侦听端口 563 (NNTPS),并等待连接。当 nanoHUB 将 VNC 客户端配置提供给用户浏览器(通过 HTTPS 实现安全性)的时候,nanoHUB 将添加几个参数,以便告诉客户端如何与连接路由器进行协商。该路由器被动地将这个连接转发到私有内部网络中合适的 VNC 服务器。

在其早期历史中,nanoHUB 使用 iptable 进行连接路由。在最好的情况下,与用户空间路由相比,iptable 的效率要高得多,因为用户空间路由涉及到两条 通道中(通过内核从网络到路由器,再返回到其他网络)的数据包。用户空间路由还强制进行至少两次上下文切换。

与端到端的网络延迟相比,内核开销可以忽略不计。更重要的是,nanoHUB 早期是在这样的主机中使用 iptable,该主机需要动态添加和删除 iptable 规则,以便在内部网络中从一个特定端口路由到另一个端口。如果特定的主机中断服务,那么它与现有会话的重新同步就会变得异常困难。在对频繁更改的规则集进行遍历的过程中,对表的更新还将导致偶尔出现丢包的情况。

为端口转发进行用户空间路由则可以消除这些问题。甚至更好的是,连接路由器提供了另一个安全和监视层;具体说来,它可以很容易地准确报告何时对应用程序进行观察,以及对应用程序观察了多长时间。对于了解 nanoHUB 如何使最终用户受益并为记帐提供帮助,这是非常重要的。

通过代理的通道

未签名的 Applet

Java 安全模型提供了几条有关网络的规定,同样适用于 Applet:从最基础的角度而言,最终用户的客户端只能够建立返回到对其进行加载的域的 TCP 连接。如果这涉及到一个显式代理,那么 Applet 还必须经过签名,并且使用提高的权限运行,如下所示。

经过签名的 Java Applet 涉及到一连串的复杂问题,nanoHUB 开发人员一直努力设法避免这些问题。在该安全模型中存在一个潜在的漏洞,那就是可能 使用未签名的 Applet 和相关的限制(仅当后者关闭连接的出站部分时,客户端才能够读取服务器中的数据),通过 Web 代理建立 HTTPS 连接。

这表示,未签名的 Applet 可能打开两个 HTTP 流,其中一个流将永远不停地进行写入,而另一个流则写入标题、并不断地执行读取操作。

经过大量的试验和研究,所得出的结论是,某些代理将最终限制这些不寻常的连接的生存期。在这个领域中,工作的一大难点是对商用代理进行试验的代价太高,从而无法进行这项工作。在任何情况下,在终止一个或者两个连接之后,重新同步的工作将引入更多的复杂性。

如果编程团队尝试使用未签名的 Applet,将遇到同样难以逾越的障碍。经过签名的 Applet 是 nanoHUB 的正确选择。

nanoHUB 的通过 Web 代理穿越防火墙的方法是与众不同的,甚至可以说是独一无二的。正如侧栏所描述的,nanoHUB 设计人员不得不决定通过经过签名的 Applet 使用标准代理 CONNECT 访问方法。即使采取了这种决策,在经过数月的评估阶段后才能够适应其他的情况:

  • 不一致的代理
  • 针对 Java 运行时环境使用不同通信代理参数的特殊方法的 Web 浏览器
  • 采用 Java 1.4 语言,谨慎地实现网络故障的超时
  • 第 7 层的筛选器可能将 nanoHUB 连接误认为违反版权法的文件共享应用程序
  • 代理背后的最终用户不了解、不能够进行解释或者分析

nanoHUB 已经了解,并且现在基本上可以通过服务其客户所需的所有代理。

开放源代码科学

对于计算矛盾 的减少,nanoHUB 还有另一个推论:它积极地鼓励科学共享。几十年来,对于物理学家来说,他们经常会发布基于计算的结果,但是从本质上看,这些计算本身是无法再现的。相关的应用程序作为专有资产进行管理。即使对于那些在名义上将他们的计算结果公布于众的研究人员来说,也没有什么用处,因为他们在可移植性和部署等相关计算技巧方面缺乏专业技能。要充分地了解一个特定的科学结论,常常需要花费时间来研究得出该计算结果的特定的计算机。

nanoHUB 则改变了所有这些情况。它使得有关计算的许多方面实现便利化,包括呈现、显示、高性能计算、安全性和承载,从而能够更方便地使用,并且在许多情况下,纳米科学家能够采用可共享的方式(而不是在他们自己实验室的计算机上)运行他们的程序。

现在要分析所有的结果,还言之过早。我们期望,纳米科学计算方面更大的开放性和可视化将从整体上推进研究的发展速度。当然,计算基础设施的合理化已经受到使用过 nanoHUB 的无数研究人员和学生的极大欢迎。看起来,nanoHUB 的成功表现了几个独特方面之间的良性循环

  • 积极和进取的纳米研究社区
  • 开放研究带给教育的好处
  • 高质量安全性和支持基于开放源代码协作技术的远程程序
  • 大量艰辛而细致的工作

但是,仍然存在各种各样的挑战。例如,图 2 表现了金字塔形几何形状中一个量子点的第四能级。帽翼 (capped wings) 与常规的 P 轨道之间没有相似之处,并且很少有学生能够凭直觉想象出它们的形状。我们希望,使用合适的交互式可视化引擎,能够提高对这种特征值的理解,以及对纳米科学中众多其他方面的理解。


图 2. 量子点第四能级的屏幕截图
量子点第四能级的屏幕截图

结束语

人们已经在 nanoHUB 上投入了超过十二年的编程工作。X11、VNC 和其他众所周知的技术都预示着远程计算的未来,但是经过在它们所提供基础之上的几番细化,已经使得 nanoHUB 的中间件具有了很好的透明性。在虚拟化的所有层次和所有方向上的努力造就了相关的软件,它们能够让科学走在人为约束(在许多计算环境中是很常见的)的前面。最终用户无需了解计算细节来调用产生重大科学成果的会话。开放源代码组件提供了大量的原始材料,但是目前,它仍然需要进行大量的正规编程和系统管理,以实现科学家所希望的无缝计算的体验。

文章评论

当下全球最炙手可热的八位少年创业者
当下全球最炙手可热的八位少年创业者
为什么程序员都是夜猫子
为什么程序员都是夜猫子
2013年美国开发者薪资调查报告
2013年美国开发者薪资调查报告
科技史上最臭名昭著的13大罪犯
科技史上最臭名昭著的13大罪犯
旅行,写作,编程
旅行,写作,编程
不懂技术不要对懂技术的人说这很容易实现
不懂技术不要对懂技术的人说这很容易实现
程序猿的崛起——Growth Hacker
程序猿的崛起——Growth Hacker
团队中“技术大拿”并非越多越好
团队中“技术大拿”并非越多越好
代码女神横空出世
代码女神横空出世
如何成为一名黑客
如何成为一名黑客
每天工作4小时的程序员
每天工作4小时的程序员
十大编程算法助程序员走上高手之路
十大编程算法助程序员走上高手之路
Google伦敦新总部 犹如星级庄园
Google伦敦新总部 犹如星级庄园
为啥Android手机总会越用越慢?
为啥Android手机总会越用越慢?
2013年中国软件开发者薪资调查报告
2013年中国软件开发者薪资调查报告
“懒”出效率是程序员的美德
“懒”出效率是程序员的美德
那些争议最大的编程观点
那些争议最大的编程观点
程序员眼里IE浏览器是什么样的
程序员眼里IE浏览器是什么样的
中美印日四国程序员比较
中美印日四国程序员比较
程序员的一天:一寸光阴一寸金
程序员的一天:一寸光阴一寸金
看13位CEO、创始人和高管如何提高工作效率
看13位CEO、创始人和高管如何提高工作效率
 程序员的样子
程序员的样子
我是如何打败拖延症的
我是如何打败拖延症的
程序员最害怕的5件事 你中招了吗?
程序员最害怕的5件事 你中招了吗?
程序员都该阅读的书
程序员都该阅读的书
鲜为人知的编程真相
鲜为人知的编程真相
那些性感的让人尖叫的程序员
那些性感的让人尖叫的程序员
编程语言是女人
编程语言是女人
程序员的鄙视链
程序员的鄙视链
总结2014中国互联网十大段子
总结2014中国互联网十大段子
做程序猿的老婆应该注意的一些事情
做程序猿的老婆应该注意的一些事情
60个开发者不容错过的免费资源库
60个开发者不容错过的免费资源库
一个程序员的时间管理
一个程序员的时间管理
要嫁就嫁程序猿—钱多话少死的早
要嫁就嫁程序猿—钱多话少死的早
程序员和编码员之间的区别
程序员和编码员之间的区别
初级 vs 高级开发者 哪个性价比更高?
初级 vs 高级开发者 哪个性价比更高?
我的丈夫是个程序员
我的丈夫是个程序员
程序员应该关注的一些事儿
程序员应该关注的一些事儿
Web开发者需具备的8个好习惯
Web开发者需具备的8个好习惯
写给自己也写给你 自己到底该何去何从
写给自己也写给你 自己到底该何去何从
Web开发人员为什么越来越懒了?
Web开发人员为什么越来越懒了?
Java 与 .NET 的平台发展之争
Java 与 .NET 的平台发展之争
什么才是优秀的用户界面设计
什么才是优秀的用户界面设计
程序员必看的十大电影
程序员必看的十大电影
Java程序员必看电影
Java程序员必看电影
10个帮程序员减压放松的网站
10个帮程序员减压放松的网站
“肮脏的”IT工作排行榜
“肮脏的”IT工作排行榜
如何区分一个程序员是“老手“还是“新手“?
如何区分一个程序员是“老手“还是“新手“?
老程序员的下场
老程序员的下场
软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有