了解facebook网站框架技术-LAMP

news/2024/5/15 14:52:02/文章来源:https://blog.csdn.net/iteye_17920/article/details/81972906

网址: http://www.dbanotes.net/arch/facebook_arch_note.html

设计原则

  • 尽可能的使用开源软件,并且在需要优化的时候进行优化
  • Unix 哲学。包括,模块化原则;整合化原则;清晰化原则等
  • 任何组件具备扩展性
  • 最小化故障影响
  • 简化,简化,简化!

架构概览

Facebook 是 LAMP 的坚定支持者,也差不多是用 LAMP (或许用 LAM2P 更适合) 实现的最大的动态站点。

Facebook Arch Overview.png

基础组件加上服务,中间用自己实现的一些工具进行粘合。其中关于运维细节的事情基本不会说出来的,这是很多公司的软实力所在。

PHP 经验

参见《Facebook 的 PHP 性能与扩展性》

MySQL 经验

  • 主要用于做 Key-Value 类型的存储操作,数据随机分布在多台逻辑实例上,访问多数基于全局 ID 。
  • 逻辑实例分散在多台物理主机上(超过1800台),负载均衡在物理层进行。
  • 不做读复制。
  • 尽量不做逻辑数据迁移(成本太高)。
  • 不做 JOIN 操作 (豆瓣在 QCon 上也阐述了这一点)。数据是随机分布的,关联操作反而带来了极大的复杂度。
  • 对于数据访问,主要的操作集中在最新的数据上,针对这部分做优化,旧的数据进行归档。
  • 在中心 DB 绝不存储非静态数据。
  • 使用服务或者 Memcached 进行全局查询。

 

Memcached 经验

参见我以前的笔记:Facebook 的 Memcached 扩展经验。Facebook 对 Memcached 做了不小的改进。另外,顺便说一下,前两天 Memcached 刚在 1.2.7 发布几天之后又发布了新版本 1.2.8,修正了一些问题。

一个比较有价值的是关于个人页面数据的获取的描述。这个就完全是需要做单页面 Benchmark 的细致活儿了,可能还需要产品经理能够理解工程师的"抵抗"。

  • 获取个人信息数据:通过Cache,隐性通过用户所在的 DB 获取(基于 User-ID 获知 DB)
  • 获取朋友连接信息:通过Cache,否则的话通过DB(基于 User-ID 获知 DB)
  • 并行抓取每个朋友的 10个照片相册 ID ,从Cache抓取,如果失效,再从 DB 抓取(基于相册 ID)
  • 并行抓取最近相册中的照片数据
  • 运行PHP 把整个业务逻辑跑出来
  • 返回数据给用户

然后是对 Facebook 非 LAMP 体系的东西做了一番介绍,基本上也开源了。最后参考两个架构图。

Facebook NewsFeed 的架构示意图

Facebook_NewsFeed_Arch.png

Facebook 搜索功能的架构示意图

Facebook_Search_Arch.png

管中窥豹,盲人摸象而已。

--EOF--

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_904936.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《大型网站系统与Java中间件实践》读后感

《大型网站系统与Java中间件实践》读后感 这几天逛ITEYE,首页老提示新书有奖试读活动,我是看了看书单,正好第一本书就是我最近看完的《大型网站系统与Java中间件实践》。不在乎奖不奖(最多送本书,不过我已经买了&#…

大型网站架构系列:分布式消息队列(一)

以下是消息队列以下的大纲,本文主要介绍消息队列概述,消息队列应用场景和消息中间件示例(电商,日志系统)。 本次分享大纲 消息队列概述消息队列应用场景消息中间件示例JMS消息服务(见第二篇:大型…

大型网站架构系列:消息队列(二)

本文是大型网站架构系列:消息队列(二),主要分享JMS消息服务,常用消息中间件(Active MQ,Rabbit MQ,Zero MQ,Kafka)。【第二篇的内容大部分为网络资源的整理和汇…

基于Vue+Element-ui+Laravel的牙齿矫治器定制厂家网站

BlueTooth 蓝牙医疗-后台管理 项目简介 本项目的应用场景是某牙齿矫治器定制厂家的网站,其功能目的是提供牙医与厂家的交互平台,网站涉及三个角色:游客、牙医、专家(网站管理员)。 根据需求,专家和网站管理员的功能具有高度相似…

大型网站架构之分布式消息队列

以下是消息队列以下的大纲,本文主要介绍消息队列概述,消息队列应用场景和消息中间件示例(电商,日志系统)。 本次分享大纲 消息队列概述消息队列应用场景消息中间件示例JMS消息服务常用消息队列参考(推荐&…

个人网站的简易数据分析

大数据时代,不会一点数据分析总觉得会被时代淘汰。但是,数据分析看起来很难的样子,每个人都能学会吗?就笔者个人观点来看,数据分析要做的深,的确不容易,涉及到许多的工具和模型建设。但仅仅只是…

YSLOW测测网站速度

一个网站打开的速度有多快?除了机房带宽,线路,IP级别,等不能或不好改变的因素外,跟网站本身的程序也有很大关系,这里谈谈一个测试工具,YSLOW,测测网站的内部因素以提升用户的访问速度; YSLOW是FIREFOX的一个插件,所以必须先装FIREFOX,下载地址http://www.mozilla.org.cn YSL…

网站接入QQ登录

在网站接入QQ登录时遇到很多麻烦,主要是QQ互联和腾讯开放平台的关系比较乱,不知道要从哪个接入。 最终解决方式:在腾讯开放平台注册个人开发者,验证通过后,在QQ互联平台会有腾讯开放平台的注册信息,然后依次…

基于SSM(Spring+SpringMVC+MyBatic)+JSP的少儿编程教育网站管理系统

项目背景 在国家重视教育影响下,教育部门的密确配合下,对教育进行改革、多样性、质量等等的要求,使教育系统的管理和运营比过去十年前更加理性化。依照这一现实为基础,设计一个快捷而又方便的网上少儿编程教育网站系统是一项十分…

基于nodejs的电影交流网站

末尾获取源码 开发语言:nodejs 框架:Express 数据库:MySQL5.7 数据库工具:Navicat 11 开发软件:Hbuilder / VS code 浏览器:edge / 谷歌 目录 一、项目简介 二、系统功能 三、系统项目截图 3.1前台首页…

基于SpringBoot的留守儿童爱心网站

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SpringBoot 前端:Vue、HTML 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目&#…

基于SSM的书画拍卖网站

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:采用JSP技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目&#x…

项目二网站完善

<div class"container-fluid"><div class"container"><h2 class"common-title text-center">成功案例</h2><div class"row"><div class"col-lg-8 col-lg-offset-2 common-detail text-center&q…

利用json隔离网站布局和页面实际模块的内容载入

在项目中,有个这样的需求:动态维护页面的布局,以及动态载入布局容器中的具体模块。最开始的实现方式是&#xff0c;在服务端一次性获取当前页面的布局结构&#xff0c;当前页面的所有功能模块&#xff0c;同时通过循环检索某一功能模块属于哪个容器并合理放置&#xff0c;最后获…

网站流量日志数据分析系统与技术架构

文章目录 网站流量日志数据分析系统1&#xff0e; 点击流数据模型点击流概念点击流模型生成 2&#xff0e; 如何进行网站流量分析网站流量质量分析&#xff08;流量分析&#xff09;网站内容及导航分析&#xff08;内容分析&#xff09;网站转化以及漏斗分析&#xff08;转化分…

前端开发的一些网站

前端学习需要用到的一些网站 最近从网上收集的一些对前端开发有帮助的网站 我常用的有: 千库网&#xff0c; jQuery之家&#xff0c; 前端在线工具&#xff0c; 字体库&#xff0c; 阿里图标&#xff0c; RBG转16进制&#xff0c; itmeo 1. 素材类网站 http://588ku.com…

为我的博客网站数据库使用Docker实现MySQL主从同步

前言 个人博客使用了阿里云的服务器&#xff0c;此文是笔者实现WordPressDockerMySQL主从同步架构的记录。 环境 Docker version 1.13.1 LNMP&#xff1a; 阿里云centos 7.3nginx version: nginx/1.12.2mysql5.6&#xff08;Docker镜像&#xff09;PHP 5.4.16 WordPress:…

漂亮的HTML网站赞助打赏单页源码

简洁大气的一款打赏页&#xff0c;纯HTML上传即可使用&#xff0c;自己修改相对应图片&#xff0c;尺寸设置好就行 修改首页文字在/index 搭建环境教程 虚拟主机域名 直接上传虚拟主机然后解析域名在绑定&#xff0c; 搭建非常的简单&#xff0c; 下载地址&#xff1a;ht…

12个对网页设计师非常便利的CSS框架、模板和摘录网站

12个对网页设计师非常便利的CSS框架、模板和摘录网站 如果您经常性地需要建立和开发新的网站&#xff0c;那么您就应该考虑使用模板创建&#xff0c;收集有用的代码片段等等。为了加快开发的进程&#xff0c;您就应该这样做&#xff0c;在需要的适 合您可以使用、修改并优化这些…