大规模视频网站的计费与流量管理
本次分享将会就大规模视频网站的计费与流量管理这个话题,从操作层面细细进行讲解和分析,为系统工程师们揭示平日里我们没有关心的另一些内容。同时也希望本次分享能揭示行业中的一些“潜规则”,让互联网行业的流量与带宽管理更为开放与简洁。
本次演讲视频录制于QCon杭州2011。
该内容已经被标记书签!
标记书签错误,请重试!
作者 Werner Schuster 译者 李明(nasi) 发布于 2008年2月26日
通过对.NET中LINQ的介绍和对LISP的重拾兴趣,一类元编程被重新关注起来。在LINQ中,可以使用表达式树,例如一棵由一段代码表示的树。
在LISP(或者类似语言)中,这种方法被称为宏或者宏展开。宏看上去很像函数调用,但不同的是函数调用在编译期就被估值,例如当代码载入的时候。宏可以得到宏调用的抽象语法树(AST),但是在AST宏返回时宏调用会被替换掉。这也就是说,宏调用并不是一段被实际执行的代码,而是返回的AST宏被执行了,例如宏调用展开的实际的代码。
Ruby并不在语言级别支持AST,于是有一些库做到了。最流行的一个要数ParseTree了,可以将s表达式作为AST返回。例如,符号紧凑列表和字符常量。有很多有用的工具就是基于ParseTree而构建的,例如:
现在,一些新库采用了LINQ的方式来使用ParseTree。Ambition允许用户使用Ruby语法来编写查询,例如:
LDAP::User.select { |m| m.name == 'jon' && m.age == 21 }
或者
SQL::User.select { |m| m.name == 'jon' && m.age == 21 }
在块中的代码实际上永远都不会运行,相反会被ParseTree用来得到AST。它会被分析并转换成目标查询语言的查询语句。Ambition提供可扩展的适配器,可以允许用户为Ruby的AST到查询语言的转化来编写新的转换器。
另外一个采用了此类型查询的库是Sequel。作为一个ORM,Sequel同样允许用户使用Ruby来编写查询:
old_nonruby_posts = posts.filter {:stamp > 1.month.ago && :category != 'ruby'}
需要重点注意的是,和Ambition不同,这仅仅是Sequel编写查询的方法之一,它同样支持通过字符串常量来编写查询。
一种很不同的Ruby代码AST使用方法可以在Merb中找到。它被用在参数化Action中:
参数化Action:
如果你在你的action方法中指定了参数,收到的查询参数将会自动被正确的指定。示例如下:
class Foos < Merb::Controller
def index(id, search_string = "%")
@foo = Foo.find_with_search(id, search_string)
end
end
访问/foos/index/12将会调用index方法并传入参数“12”和“%”(默认值)。访问/foos/index将 会抛出一个BadBehavior错误(状态码400),因为id是一个必须的参数,但是却没有被传入。访问/foos/index/5? search_string=hello将会调用index方法并传入参数“5”和“hello”。最后的示例说明你可以像是用一个真正的方法一般使用 action。这个特性是通过查看处理action方法的AST并抽取默认参数来实现的。通过这种方法,可以实现一种通常并不可用的、类似于内视/反射的特性。
require 'ripper'可以这样来使用:
class MyRipper < Ripper
def on_gvar(node)
puts node
end
def on_int(node)
puts node
end
# etc.
# Handle each element of the AST with an on_* method
end
f = MyRipper.new("$foo = 1")
f.parse
除了Ruby 1.9以外,ParseTree还提供了对其他可选Ruby实现的支持。Rubinius大量的使用了ParseTree的AST表示。JRuby几乎完全移植了ParseTree,但是基于.NET的Ruby实现似乎目前还不支持。译者 李明(nasi) 毕业于东北大学,曾供职于百度网页搜索部,从事分布式网络爬虫及其国际化的研发工作。
本次分享将会就大规模视频网站的计费与流量管理这个话题,从操作层面细细进行讲解和分析,为系统工程师们揭示平日里我们没有关心的另一些内容。同时也希望本次分享能揭示行业中的一些“潜规则”,让互联网行业的流量与带宽管理更为开放与简洁。
本次演讲视频录制于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。
本文将对特性注入以及相关方法做一个扫盲性的介绍。我们会解释这个框架的关键要素,并附上实例来证实它们。为了让文章保持相对较短,我们不会深入到某个工具或方法中,而是会给出一些参考资料,以便大家做进一步的研究。
没有回复
关注此讨论 回复