`

SmugMug 的架构介绍

阅读更多

本文介绍的  SmugMug   是一家提供付费图片托管服务的站点,在 2002 年由 Chris MacAskill 与 Don MacAskill 父子二人创建,最初提供面向游戏的视频服务,随后转型为现在的模式。网站流量现在是全球 1800 多,盈利能力自称良好。

在 MySQL Conf 2009 上,SmugMug 的  Don MacAskill   做了一次关于SmugMug 网站架构 的分享。

SmugMug 整个网站采用 LAMP 架构(其实也有 OpenSolaris),300 多台 4 核(或更多)的服务器(大多是 AMD 的 CPU) ,分散在四个机房,两个运营的人员。SmugMug 充分运用了云计算服务,是 Amazon 的一个大客户,图片和视频总计达到了 PB 级,托管在  Amazon S3   上,图片和视频的处理也在 Amazon EC2 上。使用了  Akamai   的服务做前端的  CDN   加速,主要是 JavaScript/CSS   等文件的加速,此外,DNS 加速也带来了很好的收益。

结构化数据放在 MySQL 中,存储引擎多数用的 InnoDB,数据超过 2TB 的空间,数据库服务器为 4 核或更高配置,内存多达 64GB。缓存方面,用了 Memcached 做加速,有 1TB 的数据在这里面,平均命中率达到 96%。Memcached 里面尽量存放 MySQL 行数据,减小对  DB   的冲击。数据库设计思路是尽量做垂直分区,没有 Sharding。不过在反范式(denormalized)方面做得比较彻底,不用表连接(JOIN)方法者复杂的查询。多数查询依赖主键,更新或者删除数据也是单行,依赖主键。InnoDB 引擎打了  Percona   的 Patch,并发能力也有了很大增强。

  DB   的数据完整性与写能力的要求高,而对于读的扩展性还是相对比较好解决。Linux 上的文件系统是 SmugMug 不太满意的地方,备份也成问题。ZFS   倒是能满足相关的需求,可惜不支持 Linux(妈的,早该支持 Linux了)。所以他们迁移到了 OpenSolaris   上。另外,对于复制中可能出现的风险,尝试了第三方提供的一些 Patch (参考  Google 发布的 MySQL Patch )。

采用 OpenSolaris 后,MySQL 放在 Sun Sushi Toro(Storage 7410 ,这个东西也支持  SSD   ) 上,走 NFSv3 协议。写到这里,发现 SmugMug 的解决方案非常不具有通用行,看起来 Sun 是给了他们不小的硬件优惠,否则一般情况下不会有人这么搞的,用  NFS   协议走数据库,除非是测试环境或者是复制(我怀疑只是 Slave 端通过  NFS   走),产品上真的有人跑么?

网站架构的进化,其实也是选定一个方向(比如用开源工具解决),然后一直试错的过程。

--EOF --

 

原文:http://www.dbanotes.net/arch/smugmug_arch.html

分享到:
评论

相关推荐

    humblemug:用于与 SmugMug API 交互的库

    SmugMug 的 Node.js 库 这个库还处于起步阶段,只支持 SmugMug 1.3.0 API 支持的少数方法。 这些方法应该有效,但还没有经过大规模测试。 SmugMug 表示 1.3.0 已被弃用,并将“在未来”删除。 由于 2.0 API 仍处于...

    jekyll-smugmug:在 Jekyll 驱动的站点中轻松渲染 SmugMug 照片

    在 Jekyll 驱动的站点中轻松渲染 SmugMug 照片。 这不是官方的 SmugMug 软件,不隶属于 SmugMug, Inc。 入门 这个插件创建了一个smugmug Liquid 标签,它接受尺寸和照片 GUID,并输出给定​​尺寸的该照片的 URL,...

    smugmug.net:Smugmug API的.Net客户端

    smugmug.ne​​t Smugmug API的.Net客户端

    smugcli:SmugMug的命令行工具

    斯穆格克利SmugMug的命令行工具,用于自动将本地文件夹层次结构与SmugMug帐户同步。 使用Smugmug V2 API实施。 使用Python 3.5、3.6、3.7、3.8和3.9进行了测试。安装 pip install smugcli样品用法要使用此命令行工具...

    sync2smugmug:将本地Picasa管理的图片存储库同步到SmugMug

    将本地图像结构同步到SmugMug 该程序假定目录结构由文件夹(仅目录)和相册(带图像的目录)构建。 它将在磁盘上扫描所有图像文件,并使用适当的层次结构将其上传到SmugMug中。 它具有从SmugMug同步回到相同结构...

    Smugmug看守人「Smugmug Watcher」-crx插件

    当新照片添加到您最喜爱的smugmug网站时通知您。 1.单击图标以打开选项屏幕。 2.添加您喜欢的smugmug网站的昵称和密码。 3.现在,无论何时添加新图像,您都会收到通知。 更新:1.0.4:澄清了选项屏幕。 更新:1.0.3...

    Chrome的非官方SmugMug扩展「Unofficial SmugMug extension for Chrome」-crx插件

    SmugMug网站所有者的额外功能 该扩展程序在您的工具栏上添加了一个“ SM”按钮。 当您查看SmugMug页面时,单击按钮以显示旨在帮助您管理网站的特殊功能菜单! 功能包括:-将PayPal购物车添加到您的画廊-创建自定义的...

    PE2SmugMug-开源

    轻松将图片从Adobe Photoshop Elements v4.0传输到SmugMug的工具。

    Smugmug Watcher-crx插件

    当新照片添加到您最喜欢的smugmug站点时通知您。 1。 单击图标以打开选项屏幕。 2.为您最喜欢的Smugmug站点添加昵称和密码。 3.现在将通知您,任何时间添加新图像。 更新:1.0.4:澄清的选项屏幕。 更新:1.0.3:...

    Unofficial SmugMug extension for Chrome-crx插件

    smugmug站点所有者的额外功能 此扩展将“SM”按钮添加到工具栏中。 查看Smugmug页面后单击按钮以显示旨在帮助您的网站的特殊功能菜单! 功能包括: - 为您的画廊添加PayPal购物车 - 创建您的自定义的备份副本 - 在...

    smugmug.sh-开源

    POSIX Shell脚本能够将您的本地文件夹与smugmug.com网络画廊同步。 在Solaris和Linux上测试。 当前只能上传多张图像,但目的是对其进行升级以能够管理整个画廊。

    JSmugMug Client - java client to smugmug-开源

    JSmugMug 是一个实现 SmugMug XML-RPC API 的库(参见 www.smugmug.com)。 JSmugMugClient 是使用 JSmugMug 库的 Java Swing 应用程序。

    云计算第二版

    3.9.1 在线照片存储共享网站SmugMug 129 3.9.2 在线视频制作网站Animoto 130 3.10 小结 131 习题 131 参考文献 131 第4章 微软云计算Windows Azure 135 4.1 微软云计算平台 135 4.2 微软云操作系统Windows Azure 136...

    dns-zone-files:DNSDNS区域文件可随时导入CloudFlare上,以轻松配置常用配置。 文件为BIND格式

    DNS区域文件 准备导入CloudFlare的通用配置区域文件。 可用区域文件 :配置服务。 :配置服务。 :配置服务。 :配置云存储。... SmugMug :配置SmugMug服务。 SparkPost :配置SparkPost服务。 Tu

    smuganizer:自动从code.google.compsmuganizer导出

    欢迎使用Smuganizer! 该程序有两个目的: ... 另一方面,SmugMug具有相当刚性的结构,您不得不使用它,但它不那么灵活。 具体来说,它们具有三个概念:类别(和子类别),专辑和图像。 图片只能在

    John’s Background Switcher 4.3

    能够运行于98之后的所有Windows,壁纸图可来自本地硬盘、Flickr、Phanfar、SmugMug、Picassa或Yahoo图像搜索。可以随意设置壁纸切换频率。

    John's Background Switcher

    自動更換你硬碟裡的桌布收藏之外,還可以自動從網路相簿抓圖片來當桌布喔!目前它支援 Flickr、phanfare、SmugMug、Picasa、facebook、以及 Yahoo! 圖片搜尋

    sm-photo-tool-开源

    欢迎来到sm-photo-tool的家。 这是一个小的python脚本,用于管理smugmug.com上的照片和画廊。 使用sm-photo-tool需要在smugmug.com上拥有一个帐户。 sm-photo-tool基于John Ruttenberg的sm_tool.py(smugmug.py)。

    SmugMugSample:仅供测试

    项目使用 maven 和 Java 8。 你只需要在smugmug.Sample类中输入你的 API KEY 和 SECRET 然后运行它。 mvn exec:java -Dexec.mainClass="smugmug.Sample

Global site tag (gtag.js) - Google Analytics