大规模视频网站的计费与流量管理
本次分享将会就大规模视频网站的计费与流量管理这个话题,从操作层面细细进行讲解和分析,为系统工程师们揭示平日里我们没有关心的另一些内容。同时也希望本次分享能揭示行业中的一些“潜规则”,让互联网行业的流量与带宽管理更为开放与简洁。
本次演讲视频录制于QCon杭州2011。
该内容已经被标记书签!
标记书签错误,请重试!
作者 Werner Schuster 译者 马家宽 发布于 2008年4月7日
运行Ruby代码的新方法层出不穷——继最近的MacRuby之后,据RubyInside报导,HotRuby已经发布。
不过,Yu Kobayashi的HotRuby与其他Ruby实现有所不同。首先,HotRuby并不包含一个Ruby语法分析器——而是执行Ruby1.9虚拟机的操作码。像Rubinius这样的Ruby1.9虚拟机可以将Ruby源代码编译为操作码,然后由解释器执行。这些操作码也可以存储在磁盘中。
HotRuby另一引人注目之处在于它由JavaScript编写。实际上,操作码解释器、运行时以及一些类实现都在同一个约为40KB的JavaScript文件中:HotRuby.js(可参见HotRuby在Google上的代码库)
用于编写HotRuby的JavaScript代码同样可以在Flash中运行。一些精美的示例展现了这一特性,如弹子游戏。 这些示例的逻辑使用Ruby编写,不过需要指出的是许多事例中的功能也采用了Flash库。无论如何,这还是展示了Ruby代码与JavaScript平 台的紧密集成。从实现和使用角度来看,应用JavaScript类和函数都非常简单。例如,将JavaScript类导入到Ruby中(下面的代码摘自弹 子游戏示例):
$n = $native
$n.import "Box2D.Dynamics.*"
$n.import "Box2D.Collision.*"
$n.import "Box2D.Collision.Shapes.*"
在这里,$native是一个NativeEnvironment类型的全局变量——实际上,它并不包含任何内容。在HotRuby中,访问这一类型对象的成员提供功能。例如,$n.import "Box2D.Dynamics.*" 载入制定的JavaScript类。这些类随后可以被以同样的方式访问,也就是通过NativeEnvironment(在这些同样来自于弹子球游戏的例子中,变量$n即为一个实例):
def add_sprite
@sprite = $n.Sprite.new
$n.Main.m_sprite = @sprite
$n._root.addChild @sprite
@input = $n.Input.new @sprite
end
另一个察看HotRuby实例的方式是通过自己动手页面。该页面可以让使用者输入Ruby代码,然后用HotRuby运行。其工作原理在于将Ruby代码发送到服务器端,然后再服务器端进行编译,最后将操作码返回浏览器,由HotRuby解释执行。
如果尝试运行一些Ruby代码,或查看一下已实现的类/方法,我们会发现HotRuby目前的一个比较明显的问题:HotRuby所提供的库支持是最小的 (实际上,HotRuby只实现了一些关键类的方法)。查看那些已实现的基础类并不困难,因为他们的实现可以在HotRuby.js源文件的后半部分找到。
然而,这一问题可能不再那么难以解决——至少在功能方面(性能则是另当别论)。Rubinius项目正在致力于重新实现许多Ruby中的基础类,甚至包括那些通常用C(在CRuby中)、Java(在JRuby中)或C#(在IronRuby中)实现的Ruby库基础性功能。尽量用一种语言来编写其语言自身实现的想法通常被称为“Turtles All The Way Down”)(在Avi Bryant发表那篇著名的blog文章虽然是老调常谈之后)。(译注:这里“Turtles all the way down”的意思应该为无限递归永无中止。关于此典故的详细信息可参http://en.wikipedia.org/wiki/Turtles_all_the_way_down)
显然,任何与外部接口交互的部分(I/O、操作系统集成)都应该被移植,并特定于所在的整个系统。同时,除非所在的运行时能够优化, 一些基础类可能需要进行调整以适应所在系统,以此满足性能方面的要求。
长久以来,无限递归方法已经被众多系统所采用,其中的一个例子是Squeak Smalltalk,其具有很强的可移植性,这一特性被Dan Ingalls成功的在JVM上运行一幅Squeak图片所再次证明(包括一个到Java Web Start-able版本的链接)。
使用纯Ruby编写的Ruby库也为HotRuby在未来向独立方向发展提供了可能。拼图中目前缺失的一块是一个完全的Ruby语法分析器——不过Ryan Davis的'ruby_parser'。一个用Ruby来编写Ruby语法分析器的项目,正在为此而努力。当与一个基于Ruby,接收Ruby AST(ruby_parser在ParseTree中 产生它们)并返回Ruby1.9操作码的编译器协同工作时,HotRuby就可以独立的直接运行Ruby源代码(语法分析器和编译器都得是预编译的操作码 形式,这样HotRuby就可以装载它们——只要一次性的完成这一工作,那么HotRuby就可以一直独立自主的工作)。
虽然HotRuby还不能完全支持Rails,不过它允许编写那些对于JavaScript运行时可见的对象,比如浏览器或 Flash中的对象。作为一个能够运行Ruby1.9操作码的虚拟机,HotRuby自身仅为一个40KB大小的文件,这使得研讨这样一个虚拟机的内部构 造不再困难。
查看英文原文:HotRuby - Ruby 1.9/YARV opcode interpreter in Javascript
本次分享将会就大规模视频网站的计费与流量管理这个话题,从操作层面细细进行讲解和分析,为系统工程师们揭示平日里我们没有关心的另一些内容。同时也希望本次分享能揭示行业中的一些“潜规则”,让互联网行业的流量与带宽管理更为开放与简洁。
本次演讲视频录制于QCon杭州2011。
Jeffrey Richter以其多本Windows核心技术的经典著作而闻名,同时,他深入掌握微软的.NET等一系列核心技术,2012年1月,Jeffrey Richter在北京接受了InfoQ中文站的专访,谈到Windows 8和WinRT编程,并就异步编程、Windows编程中的可扩展性、性能和安全性方面给出自己的建议。
云计算平台的可用性,相比传统互联网服务而言,更加复杂和困难,也更具有挑战性。本文借助新浪SAE云平台为读者讲述了云平台可用性的定义、如何打造高可用的平台,以及对云计算的用户提出了建议。
淘宝高度重视Java平台的健康发展,组建了一个团队专注于Java平台的底层部分的性能、功能与稳定性改进;工作主要基于OpenJDK中的HotSpot VM开展,其中一些通用的功能随后也会逐渐反馈给OpenJDK社区。希望能与使用Java平台开发应用的大家交流经验。
本次演讲视频录制于QCon杭州2011。
2011年4月21日至22日是值得云计算从业者纪念的日子。Amazon的IaaS服务出现故障,导致许多商业网站的服务中断,影响非常严重。作为云计算用户,我们需要思考的是,如何保证即便在云服务不可用的情况,我们的应用架构仍然能够屹立不倒?本文正是站在云计算用户的角度试图探讨这一问题。
12人的技术团队,4组刀片服务器,每月20亿的访问量,每日1次准时部署,99.9%的可用性。这可能吗?当然。想知道如何做的吗?百姓网将与您分享他们在DevOps实践过程中的经验和技巧。
本次演讲视频录制于QCon杭州2011。
篱笆作为一家起源于社区的电子商务公司,反映到技术层面就是同时要面对产品和业务,以及经营战略的变化调整。如何在产品和业务的夹缝之间完成技术架构的抽象与平衡,寻找更有效的价值定位,这当中有些经验教训和个人感悟愿与众人分享。
本次演讲视频录制于QCon杭州2011。
本文将对特性注入以及相关方法做一个扫盲性的介绍。我们会解释这个框架的关键要素,并附上实例来证实它们。为了让文章保持相对较短,我们不会深入到某个工具或方法中,而是会给出一些参考资料,以便大家做进一步的研究。
没有回复
关注此讨论 回复