2KB项目,专业的源码交易网站 帮助 收藏 每日签到

dRuby 的机制与实现

  • 时间:2019-01-23 18:30 编辑:2KB 来源:2KB.COM 阅读:302
  • 扫一扫,手机访问
  • 分享
摘要: 英文原文:dRu
英文原文:dRuby and Rinda: Implementation and application of distributed Ruby and its parallel coordination...

面向对象的脚本语言 Ruby 由于它代码容易编写并且灵活,动态的特性被众多程序员喜爱。过去的几年里,Ruby onRails 的 web 开发框架非常流行,这是得益于它的开发效率,而且再次引起了企业对 Ruby 的关注。Ruby 的焦点已经开始从小的脚本工具向大型应用程序转移,针对于 Ruby 的分布式系统的需求和 Ruby 一般用法的例子与特性的相关教程也正在与日俱增。一本由日本作者写的关于 dRuby 的书,其英译版正在由 Pragmatic Bookshelf 计划出版。

作者开发 dRuby 和 Rinda 是为 Ruby 语言提供分布式对象系统和共享元组空间功能, 并且也作为 Ruby 标准库的一部分。dRuby 通过网络扩展了 Ruby 同时还保留了其优点。Rinda 在 dRuby 的基础上构建,并且带有 Linda 的功能,是作为 Ruby 与分布式协作系统通信的中间语言,这篇文章讨论了这两个系统的设计原则和实现要点,并且用示例代码和实际应用程序的例子来展示它们的简单易用性。dRuby 和 Rinda 除了可以做分布式系统,这篇文章还会给你展示它们可以作为现实中应用程序的底层组件。

1. 介绍

这篇文章的目标是给你一个关于 dRuby 和 Rinda 的细节。dRuby 为 Ruby 提供分布的对象环境。Rinda 是一个运行在 dRuby 上的协调机制。首先,我来介绍 Ruby。

Ruby 是一个面向对象的脚本语言,它是由松本行弘(Yukihiro Matsumoto)创造。

直到现在,Ruby 的流行被限制在早期采用的程序员社区中。但是,Ruby 因为其潜在的生产力,现在正在快速引得商业用户的注意。

Ruby 有如下特性:

  • 标准的面向对象特性,比如类与方法

  • 一切皆为对象

  • 弱类型变量

  • 简捷方便的使用库

  • 简单易学的语法

  • 垃圾回收器

  • 丰富的反射功能

  • 用户级线程

Ruby 号称是动态的面向对象语言。一切都由对象构成,并且无强类型变量。方法统一在运行时创建。此外,Ruby 还有丰富的反射功能,并且可以使用元编程。

Ruby 是一门难解的语言,好像是老天对 Ruby 开了个玩笑。就像 Ruby 在主导着我们进行编程一样,在我们没有得到明示的情况下就觉得已经触及了面向对象的本质。

dRuby 是一个使 Ruby 运行于其上的分布式系统环境。dRuby 通过网络扩展了 Ruby 的方法调用,并且使得其他进程或者机器也可以调用当前对象的方法。另一个就是 Rinda 在它自己内部加入了 Linda 的实现,所以它提供了公共的元组空间。这篇文章不但介绍了 dRuby 的基本概念和设计原则,而且还包括 dRuby 的实现和实际用法。这篇文章会讨论如下主题:

  • 在 Ruby 之路 - dRuby 概述与其设计原则

  • 实现 - dRuby 的实现

  • 性能 - dRuby 的使用开销

  • 应用程序 - 一个真正运行在 dRuby 上的系统应用,Rinda 的概述与运行在 Rinda 上的一个系统应用。

Blaine Cook,Twitter(一个微博服务)的主要开发者负责人,在他的“"Scaling Twitter”发布会中提到过dRuby。

  • 简单至极,速度够快

  • 些许古怪,无冗余,高耦合


他的观点是合理的看法。

在这章里,我会说一下 dRuby 的设计原则和特性。

2.1 dRuby 的特性

dRuby 是用于 Ruby 的 RMI(远程方法调用)库的其中一个,我的最终目标不是让 dRuby 成为另一个用于 Ruby 的传统的分布式系统。准确来说,我打算扩展 Ruby,使其可以调用其他进程或者别的机器上的 Ruby 方法。

最终,dRuby 扩展了 Ruby 解释器,使其无论在物理环境还是虚拟环境都可以跨进程,跨机器。

dRuby 有如下特性:

  • 专门用于 Ruby

  • 完全纯 Ruby 编写

  • 不需要像 IDL一样的规范

从常规的分布式对象系统的角度来看,dRuby 还有这些特性:

  • 便于安装

  • 易于学习

  • 能自动选择对象的传递策略(传值或者传引用)

  • 足够快速

  • 服务器端与客户端无差别

dRuby 是专门用于 Ruby 上的分布式对象系统,dRuby 运行的平台上可以交换对象,也可以在对象之间调用方法。dRuby 可以不受操作系统影响,运行在任何可以跑 Ruby 的机器上。

dRuby 完全由 Ruby 编写,没有特殊由 C 编写的扩展。感谢 Ruby 优秀的 thread,socket 和 marshaling 类库,早期的 dRuby 实现仅有 200 行代码,我相信这足以展示了 Ruby 类库的强大和优雅。现在 dRuby 包含了 Ruby 的标准发布版作为其标准库之一,所以 dRuby 在任何装了 Ruby 环境的机器上都可以跑起来。

dRuby 特别注意保持与 Ruby 脚本的兼容性。dRuby 向 Ruby 加入分布式对象系统的同时也尽可能多的保留了 Ruby 的原汁原味。Ruby 程序员会发现 dRuby 是 Ruby 的无缝集成扩展。程序员可能习惯于其他的分布式对象系统,而且可能会感觉到 dRuby 有点奇怪。

Ruby 里的变量都是弱类型的, 而且对象赋值不受继承体系限制,不像一些静态检查变量的语言,如java,在代码执行之前不会检查对象的正确性,并且方法定位也只在运行时(方法被调用的时候),这是 Ruby 语言一个重要的特性。

dRuby 也以相同的方式运行。dRuby 中,客户端静态方式 (DRbObject,在 dRuby 也称之为 "reference" ) 也同样是弱类型的,而且方法定位也只在运行时进行。这就不需要提前暴露方法列表或者知道继承信息。 因此,不需要定义一个接口(e.g. by IDL)。

除了允许跨网络方法调用,dRuby 也一直在用心的开发,遵守尽可能接近常规 Ruby 行为的准则。因此,开发者可以尽情的享受大量 Ruby 的独特优势。

例如,方法使用 blocks(原始叫法是迭代器)和异常是可以被处理的,如果是在本地的话。互斥,队列和其他线程同步机制都可以同时被用来进行进程间同步,无需任何特殊考虑。

本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接。 2KB翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。


2KB项目(www.2kb.com,源码交易平台),提供担保交易、源码交易、虚拟商品、在家创业、在线创业、任务交易、网站设计、软件设计、网络兼职、站长交易、域名交易、链接买卖、网站交易、广告买卖、站长培训、建站美工等服务

  • 全部评论(0)
资讯详情页最新发布上方横幅
最新发布的资讯信息
【计算机/互联网|】Nginx出现502错误(2020-01-20 21:02)
【计算机/互联网|】网站运营全智能软手V0.1版发布(2020-01-20 12:16)
【计算机/互联网|】淘宝这是怎么了?(2020-01-19 19:15)
【行业动态|】谷歌关闭小米智能摄像头,因为窃听器显示了陌生人家中的照片(2020-01-15 09:42)
【行业动态|】据报道谷歌新闻终止了数字杂志,退还主动订阅(2020-01-15 09:39)
【行业动态|】康佳将OLED电视带到美国与LG和索尼竞争(2020-01-15 09:38)
【行业动态|】2020年最佳AV接收机(2020-01-15 09:35)
【行业动态|】2020年最佳流媒体设备:Roku,Apple TV,Firebar,Chromecast等(2020-01-15 09:31)
【行业动态|】CES 2020预览:更多的流媒体服务和订阅即将到来(2020-01-08 21:41)
【行业动态|】从埃隆·马斯克到杰夫·贝佐斯,这30位人物定义了2010年代(2020-01-01 15:14)
联系我们

Q Q: 7090832

电话:400-0011-990

邮箱:7090832@qq.com

时间:9:00-23:00

联系客服
商家入住 服务咨询 投拆建议 联系客服
0577-67068160
手机版

扫一扫进手机版
返回顶部