大规模视频网站的计费与流量管理
本次分享将会就大规模视频网站的计费与流量管理这个话题,从操作层面细细进行讲解和分析,为系统工程师们揭示平日里我们没有关心的另一些内容。同时也希望本次分享能揭示行业中的一些“潜规则”,让互联网行业的流量与带宽管理更为开放与简洁。
本次演讲视频录制于QCon杭州2011。
该内容已经被标记书签!
标记书签错误,请重试!
作者 Abel Avram 译者 马国耀 发布于 2010年1月17日
Gremlin 是操作图表的一个非常有用的图灵完备的编程语言。它是一种Java DSL语言,对图表进行查询、分析和操作时使用了大量的XPath。
Gremlin可用于创建多关系图表。因为图表、顶点和边的元素含有由键值对定义的属性,所以图表被称之为属性图表,以下是一个示例:
它包含以下类型:
- 图表:图表是由一组顶点和一组边构成的。
- 顶点:顶点由一组出边(从顶点指出的边),入边(指向顶点的边),和属性表组成。
- 边:边由出点,入点和属性表组成。
- 布尔型:布尔型有true和false。
- 数字型:数字型可以是整数(integer)也可以是实数(double)。
- 字符型:字符型是字符串数组。
- 列表型:列表是一个有序可重复的对象集合。
- map型:map是一个从一组键值对象到一组值对象的关联数组。
除了XPath的数学计算(加,减,乘)之外,Gremlin还提供了很多语句,如If/Else,While,Repeat,Foreach以及其他。
Gremlin可用于任何实现了通用图表模型(General Graph Model)的框架。该模型包括一系列组件(如图、元素、顶点、边和索引)以及相应的Java接口,欲使用Gremlin结构来操作图片,则需要实现这些接口。
使用Gremlin操作图片的一个例子存在于MongoDB文档中。另一个是与资源描述框架(Resource Description Framework)存储一起用于OpenRDF, AllegroGraph, Open Virtuoso 或者 Neo4j等图数据库中。将来,Gremlin团队将有意添加对CouchDB和Terracotta的支持。
示例
要理解JSON编码的图片,你就需要使用以下模式(schema)来描述顶点和边。
object {
string "_id";
array { string } inEdges;
array { string } outEdges;
object { }* properties;
};
object {
string "_id";
string label;
string inVertex;
string outVertex;
object { }* properties;
};
然后,上述图片在用JSON编码后如下所示:
//// VERTEX COLLECTION ////
{
_id: "1",
properties: {
name : "marko",
age : 29 },
outEdges : ["7","8","9"]
}
{
_id: "2",
properties: {
name : "vadas",
age : 27
},
inEdges : ["7"]
} ... [section skipped for brevity]
//// EDGE COLLECTION ////
{
_id: "12",
label: "created",
properties: { weight : 0.2 },
outVertex : "6",
inVertex : "3"
}
该数据存储到MongoDB时,数据库将创建两个集合,一个顶点集合,一个边集合,Gremlin允许你通过通用图表模型接口操作这些集合,如添加/删除顶点或边,获取顶点或边的集合,获取/设置顶点或边的属性,通过查找顶点所关联的边或者查找边所关联的顶点在图片上导航。
向一个图片添加两个顶点并将它们通过边连接起来的动作称之为“related_to”,它是这么实现的:
gremlin> $v := g:add-v($g) ==>v[0] gremlin> $u := g:add-v($g) ==>v[1] gremlin> $e := g:add-e($g, $v, 'related_to', $u) ==>e[2][0-related_to->1]
在电脑芯片设计,生物学,网络学等方面有相当多的图表应用。一个简单的例子是创建这样一个图,顶点表示网站中的网页,而边表示页面指向另一个页面的链接。在Gremlin中你可以对这样的页面图表进行更改和编辑其属性。
资源: TinkerGraph ——通用图表模型的参考实现,Gremlin 文档,Gremlin用户组.
查看英文原文:Gremlin, a Language for Working with Graphs
译者 马国耀 关注企业级应用相关的开发、架构及思想的发展。尤其对Java EE、SOA、ESB和Cloud Computing等领域持有浓厚兴趣。
本次分享将会就大规模视频网站的计费与流量管理这个话题,从操作层面细细进行讲解和分析,为系统工程师们揭示平日里我们没有关心的另一些内容。同时也希望本次分享能揭示行业中的一些“潜规则”,让互联网行业的流量与带宽管理更为开放与简洁。
本次演讲视频录制于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。
本文将对特性注入以及相关方法做一个扫盲性的介绍。我们会解释这个框架的关键要素,并附上实例来证实它们。为了让文章保持相对较短,我们不会深入到某个工具或方法中,而是会给出一些参考资料,以便大家做进一步的研究。
3 条回复
关注此讨论 回复