`
jinghuainfo
  • 浏览: 1524049 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

移动社交社区MocoSpace的架构

 
阅读更多

MocoSpace.com 是一家移动社交网站,有1200多万注册用户,每个月30亿的 PV ,是美国最大的移动社区。我们来看看 MocoSpace 是如何来架构他们的网站的。先来看看他们的统计数据,注意他们只有1个系统管理员,8个程序员,14台服务器(数据和原文来自 MOCOSPACE ARCHITECTURE – 3 BILLION MOBILE PAGE VIEWS A MONTH):

数据

每月30亿 PV
全美第4大流量的网站,继 MySpace, Facebook, Google 之后
75% 手机 Web, 25% Web
1200 万用户
每月600万独立访问
10万在线用户
每月上传1200万照片
每天接受和发送450万 email
8个程序员,2个测试员,1个系统管理员

平台和工具

CentOS + Red Hat
Resin application server, Java Servlets, JavaServer Pages, Comet
PostgreSQL
Memcached
ActiveMQ’s job + message queue,Red Hat 集群做 HA
Squid 静态内容缓存,曾试过 Varnish 但是 Varnish 不稳定
JQuery + Ajax
S3 用来存储用户照片和视频,现在用 Amazon S3 做外部存储是主流,EC2 用来做照片处理
F5 BigIP 负载均衡,用 gzip 压缩所有页面
Akamai CDN,每天 2TB 数据、2.5亿次请求。
Nagios 用来警告,Zabbix 用来监测
EMC SAN 用大量磁盘做 RAID 10 做需要高 IO 的数据库存储,用来替代高性能的 SSD,节省了大量成本
PowerMTA 做邮件传送,用Barracuda 做 spam 和 firewall
Subversion 做源代码控制,Hudson 做 continuous integration
FFMPEG 用来做视频处理
Selenium 用来自动测试浏览器
5x Dell 1950, 2x dual core, 16G RAM(Web 服务器)
5x Dell 6950/R905, 4x dual core, 32G RAM(Web 服务器)
2x Sun Fire X4600 M2 Server, 8x quad core, 256G RAM(数据库服务器)
2x Dell 6950, 4x dual core, 64G RAM(数据库服务器)

架构

他们的网站主要是面向手机应用的,所以他们遇到的一个大挑战是如何让他们的网站在几百种(从最新的 iPhone 到古董级的 Motorola Razrs)不同的手机设备上运行,屏幕大小、缺少相应的 Web 标准等都是问题。他们在几百种不同手机的数据上抽象出了一个表现层,只要用一套代码通过一个手机数据库(包括屏幕大小、允许的文件类型、允许打开的页面大 小等)把处理好的页面发到对应的手机上。

他们也是通过 shard 数据库来分担负载的,以用户 key 作为 shard 的依据,通过查找一张全局表来找到用户所在的 shard,他们自己写了查询层,可以用来在不同的 shards 之间自由查询和关联数据。他们 offline 的时候检查数据的一致性,他们认为如果不是做银行系统的话,一致性不是那么重要,牺牲一点一致性来换回性能还是值得的。他们把大表划分成了小表,这样分散 了锁表带来的问题。

他们使用多级缓存,从应用服务器里的缓存到分布式 memcached,当需要更新 memcached 的数据的时候,他们通过消息发送给每台应用服务器上的缓存,以做到数据一致。他们的服务器通过分布式消息队列来通讯,比如用户实时通过发消息告诉系统需要更新缓存等。

他们用专门的服务器来打造 social graph,并都放在内存里。

他们用 Kickstart 自动安装服务器,用 Puppet 来配置服务器,web 服务器、数据库服务器、cache 服务器等。

经验

  • 在增加服务器之前先确定现有的服务器硬件还能不能往上升级,可以挑选一些二手的 4U 服务器。
  • 理解瓶颈在那里?是 CPU 还是磁盘、网络 IO?数据库总是有磁盘 IO 问题。
  • 扩展 web 服务器很容易也很便宜,扩展数据库服务器就很麻烦了,找出数据库系统查询最多的、查询执行时间最长的,尽早跟踪和测试这些查询找出数据库性能瓶颈。他们使 用 pgFouine log analyzer 和 PostgreSQL pg_stat_statements 工具来测量。
  • 不要让用户等待,尽量在后台处理。避免异步通讯,比如数据等待积累一定程度后再一次提交给数据库;S3 存储的延迟和错误都可能会很大,把失败的请求放在队列里,等队列积累到一定程度的时候再试,而不是失败一个试一个,减少开销。
  • 在设计阶段就考虑监测系统和性能,而不是到了部署的时候才开始监测。他们试过很多监测工具,Cacti, Ganglia, Hyperic, Zabbix, Nagios 等,最重要的是要找到自己用得顺手的工具。
  • 网站变大以后就要做好防黑客、防垃圾的准备。
  • 删除可能会开销很大,尽量软删除,而且用户删错了的话软删除容易恢复。
  • N+1 设计,永远不要少于两种方案。
分享到:
评论

相关推荐

    Python课程设计 课设 手写数字识别卷积神经网络源码+文档说明.zip

    高分设计源码,详情请查看资源内容中使用说明 高分设计源码,详情请查看资源内容中使用说明高分设计源码,详情请查看资源内容中使用说明高分设计源码,详情请查看资源内容中使用说明高分设计源码,详情请查看资源内容中使用说明高分设计源码,详情请查看资源内容中使用说明高分设计源码,详情请查看资源内容中使用说明高分设计源码,详情请查看资源内容中使用说明高分设计源码,详情请查看资源内容中使用说明高分设计源码,详情请查看资源内容中使用说明高分设计源码,详情请查看资源内容中使用说明高分设计源码,详情请查看资源内容中使用说明高分设计源码,详情请查看资源内容中使用说明高分设计源码,详情请查看资源内容中使用说明高分设计源码,详情请查看资源内容中使用说明高分设计源码,详情请查看资源内容中使用说明高分设计源码,详情请查看资源内容中使用说明高分设计源码,详情请查看资源内容中使用说明高分设计源码,详情请查看资源内容中使用说明高分设计源码,详情请查看资源内容中使用说明高分设计源码,详情请查看资源内容中使用说明高分设计源码,详情请查看资源内容中使用说明

    SpringBoot2.0快速开发框架权限.rar

    SpringBoot2.0快速开发框架权限.rarSpringBoot2.0快速开发框架权限.rarSpringBoot2.0快速开发框架权限.rar

    大语言模型的微调和推理baichuan7B, chatglm2-6B, Qwen-7B-chat源码.zip

    详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;

    基于Qt与STM32平台开发的汽车车机系统上位机

    基于Qt开发的汽车车机系统上位机 & 常见类型汽车传感器信号模拟发生器 任务和要求: 任务: 根据发动机测控系统信号需求,设计一套发动机信号模拟器人机交互系统,能够根据需要向下位机输出控制信号,使其输出发动机测控系统需要的传感器模拟信号,给发动机测控系统的开发提供方便。 要求: 1.设计应包含上位机与下位机的交互程序及人机交互界面的设计,与下位机设计相结合,使其能够实现全部类型发动机传感器信号的模拟输出及显示。 2.设计中需要采用模块化开发程序。 3.所设计的人机交互界面简洁合理。 4.应考虑所设计系统的实用性。 具体工作内容: 1.根据设计目标,查阅相关设计标准和设计方法资料,对发动机信号模拟器设计中的关键工程原理和工程方法进行提炼,并围绕关键问题进行国内外设计现状调研,开展分析、评价与总结,确定主要研究内容,制定设计技术路线,制定设计计划(周进度),撰写开题报告,并进行开题答辩,开题报告参考文献应不少于15篇(其中外文文献不少于 4 篇,近五年文献不少于三分之一)。 2.根据设计要求和技术指标,进行满足功能原理需求的多方案拟定,考虑安全、 标准等多因素进行技术性与经济性评价

    实验-三、数据库安全性(目的、要求和模板).doc

    实验-三、数据库安全性(目的、要求和模板).doc

    毕设绝技 - 4天玩乐完成商城系统完整资料day02

    文件为第二天视频教程 在毕业设计的挑战中,有时我们需要以极短的时间完成一个相对复杂的项目,比如一个商城系统。虽然时间紧迫,但只要我们合理规划、高效执行,完全有可能在4天内完成一个基础且功能完备的商城系统。 商城系统,也被称为网上商城系统或Online Mall system,是一种功能完善的网上销售系统。该系统主要包括产品发布、在线订购、在线支付、在线客服等功能模块,旨在为企业或个人提供一个在线销售平台,实现商品的展示、交易和客户服务。 商城系统具有多种核心功能,如商品管理、订单管理、用户管理和营销管理。商品管理功能支持商品的添加、编辑、删除、分类和搜索,满足商家对商品信息的全面管理需求。订单管理功能则涵盖订单的生成、支付、发货、退款和评价等环节,确保交易流程的顺畅进行。用户管理功能包括用户的注册、登录、个人信息管理和收货地址管理等,提升用户体验。而营销管理功能则通过促销活动的设置、优惠券的发放和积分兑换等手段,帮助商家提升销售业绩。 商城系统的特点主要体现在功能性、易用性和安全性上。商城系统注重功能性的开发,每个功能都有其发挥作用的地方,满足商家的实际需求。

    忻州师范学院-论文答辩PPT模板我给母校送模板作品.pptx

    PPT模板,答辩PPT模板,毕业答辩,学术汇报,母校模板,我给母校送模板作品,周会汇报,开题答辩,教育主题模板下载。PPT素材下载。

    小型餐饮管理系统-数据库设计报告.doc

    小型餐饮管理系统-数据库设计报告.doc

    毕业设计+Python+基于OpenCV的交通路口红绿灯控制系统设计+Sqlite +PyCharm 1.zip.zip

    本资源中的源码都是经过本地编译过可运行的,下载后按照文档配置好环境就可以运行。资源项目的难度比较适中,内容都是经过助教老师审定过的,应该能够满足学习、使用需求,如果有需要的话可以放心下载使用。有任何问题也可以随时私信博主,博主会第一时间给您解答!!! 本资源中的源码都是经过本地编译过可运行的,下载后按照文档配置好环境就可以运行。资源项目的难度比较适中,内容都是经过助教老师审定过的,应该能够满足学习、使用需求,如果有需要的话可以放心下载使用。有任何问题也可以随时私信博主,博主会第一时间给您解答!!! 本资源中的源码都是经过本地编译过可运行的,下载后按照文档配置好环境就可以运行。资源项目的难度比较适中,内容都是经过助教老师审定过的,应该能够满足学习、使用需求,如果有需要的话可以放心下载使用。有任何问题也可以随时私信博主,博主会第一时间给您解答!!

    西南交通大学-毕业答辩PPT模板我给母校送模板作品.pptx

    PPT模板,答辩PPT模板,毕业答辩,学术汇报,母校模板,我给母校送模板作品,周会汇报,开题答辩,教育主题模板下载。PPT素材下载。

    2024年中国中空纤维膜行业研究报告.docx

    2024年中国中空纤维膜行业研究报告

    四川师范大学-PPT模板我给母校送模板作品.pptx

    PPT模板,答辩PPT模板,毕业答辩,学术汇报,母校模板,我给母校送模板作品,周会汇报,开题答辩,教育主题模板下载。PPT素材下载。

    实验三、数据库安全性实验报告.doc

    实验三、数据库安全性实验报告.doc

    西北农林科技大学-PPT模板我给母校送模板作品.pptx

    PPT模板,答辩PPT模板,毕业答辩,学术汇报,母校模板,我给母校送模板作品,周会汇报,开题答辩,教育主题模板下载。PPT素材下载。

    java电子相册源码.rar

    java电子相册源码.rarjava电子相册源码.rarjava电子相册源码.rarjava电子相册源码.rar

    玉米脱粒机设计及其总装配图(论文、dwg图).rar

    玉米脱粒机设计及其总装配图(论文、dwg图)

    studyopencv2

    studyopencv2

    2024-2030全球与中国牛肉卷饼市场现状及未来发展趋势.docx

    2024-2030全球与中国牛肉卷饼市场现状及未来发展趋势

    在KITTI车辆数据集,采用随机多尺度变化增强车辆训练集样本数量,采用k-means聚类获取最优先验候选框大小

    在KITTI车辆数据集,采用随机多尺度变化增强车辆训练集样本数量,采用k-means聚类获取最优先验候选框大小,引入到YOLOv3模型中,提升模型的车辆检测精度和鲁棒性。.zip

    基于Vue+SSM高校疫情信息管理系统源码.zip

    详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;

Global site tag (gtag.js) - Google Analytics