首页 > 代码库 > 架构之美阅读笔记06

架构之美阅读笔记06

    大多数系统核心的是数据,而不是算法。用户不会接触QuickSort,而是去访问一个数据仓库。数据推动了用户喜欢的产品,所以架构师围绕数据创建了其余的传统“n层”软件站。Facebook即是一个围绕数据建立架构的例子。“Facebook社会关系网站”在概念上是一个标准的“n层”栈,用户的请求会从Facebook的内部库中取出数据,然后通过Facebook的逻辑进行转换,最后通过Facebook的界面输出。本章向读者展示了Facebook以一种受控的方式向外界开放数据的过程,跟随数据演进的每一步的架构选择,以及调和数据开放与渗透在社会关系系统中独特的隐私需求的过程。

    随着所谓web2.0”的网络技术逐渐流行,数据在系统中的核心地位就变得更加明显了。web2.0展现的核心主题就是他们是数据驱动的,用户本身提供了绝大部分的数据。Facebook对用户生成的数据有一个非常核心的隐私概念,即用户X查看用户Y的信息的业务规则。

      Facebook的应用平台。在一般的n层架构中,应用将输入映射为对原始数据的请求,这些原始数据可能存在与数据库中。他们被转换为内存中的数据,并通过一些业务逻辑进行智能化处理吧。输出模块将针对显示对这些数据对象进行转换,变成HTMLJavaScriptCSS等。

    创建社会关系数据查询服务。通过一个带有用户控制认证握手的web服务,我们已经将我们的内部扩展到外部世界。通过这个简单的改变,Facebook社会关系的数据现在可以驱动其用户决定认证的任何其他的应用程序,在应用的数据中创建新的社会关系。存在的实际问题是:从Facebook平台API获取数据要比获取内部数据的开销大得多。而数据解决方案为:类似内部数据采用的模式,实现外部数据访问模式:一种查询服务。Facebook的解决方案称为FQLFQL代表了基于Facebook的内部数据的另一项数据架构改进,是标准的黑盒web服务的进步。

      FQL是一种简单的查询语言,它包装了Facebook的内部数据吧。输出的格式通常与Facebook平台APPI的输出格式一样,但输入超出了简单的RPC库的模型,变成了SQL的查询模型:命名的表和字段,包含一致的关系。

     Facebook的用户贡献的社会关系有效地提高了http://Facebook.com上几乎所有页面的效用。而且,这种数据非常通用。虽然我们将关注重点完全放在那些使用Facebook的社会关系数据平台的应用的潜力和约束上,但像这样的新型数据服务不一定局限于社会关系信息。各式各样的平台提供者可以应用Facebook平台特有数据和web架构背后的这些思想,并从中受益。

架构之美阅读笔记06