TechCrunch 前两天报道说 Flickr 针对 Pro 用户新增了一项统计功能。今天有看到 Flickr 的DBA Dathan Pattishall 描述了一下这个统计功能的实现。
Flickr 统计功能的基本技术信息:
- 所有的信息统计是实时的
- 同时用到 MYISAM 与 INNODB 两种引擎
- 数据因为存储需求跨在 6 个 Cluster 上(12 台服务器,6 台提供服务,6 台做失败接管)
- 没有用 Memcache
Dathan 提到这是他最耗时的一个项目(似乎有点怨言呀)。因为是实时统计,并且还要不影响整体页面响应速度,所以整个项目非常复杂。一旦 DB 设计搞定后,大部分时间都花在如何创建分布锁上了。
其实就我个人而言,真的不觉得这个功能有什么必要(尤其还是实时统计)。这或许是过度设计的一个例子。Flickr 在被 Yahoo!收购之后,这段时间倒是有点颓势。
说起 Dathan 这老兄,在 MySQL 技术圈子算是大名鼎鼎了。曾先后在 Friendfinder、Friendster做 DBA,并获得国 05、06 两年的 "MySQL Application of the Year Award“。(看他 Blog 的活跃劲儿,估计今年也差不多。)
这老兄加盟了 Flickr 后,一个礼拜解决了 40% 左右的性能问题。从他的简历来看,Flickr 目前每日 DB 的事务超过 10亿,MySQL 运行在 16G 内存、AMD CPU 服务器上,存储采用本地硬盘而没有用 SAN。数据库采用联邦架构,能做到线性扩展,为公司节省成本达 40 万美元(占40%,从而估计 DB 相关硬件成本为 60万美元).
推荐国内每个 Web 2.0 公司的 DBA 持续关注 Dathan 的 Blog,当然,可能大家都已经一直在看了。
相关推荐
以Facebook和Flickr为例,它们分别存储了海量的照片,对存储和访问性能提出极高要求。而传统的存储系统在面对这种大数据量时,出现了存储、检索瓶颈,以及成本、性能等问题。 2. **传统存储系统的局限** - 文件...
此外,系统可能使用了MVC(Model-View-Controller)设计模式,这是一种将业务逻辑、用户界面和数据访问分离的方式,有助于提高代码的可维护性和可扩展性。框架如Spring Boot可以简化开发过程,提供自动配置、依赖...
此外,它还可以用于分布式集群架构中的会话分离,构建聊天室的在线好友列表,实现任务队列(如秒杀、抢购),生成应用排行榜,统计网站访问量,以及精确到毫秒的数据过期处理。 安装 Redis 单机版通常涉及以下步骤...
- **Flickr.com**:本书作者Cal Henderson作为Flickr的核心开发者之一,分享了该网站如何成功应对大规模用户访问的经验。 - **低成本技术栈**:利用“穷人技术”(如Linux、Apache、MySQL、PHP等)构建高性能网站,...
这个平台的核心功能是让用户能够上传他们的照片,并且获得其他用户的意见和喜好,从而实现对作品的平均评价。从描述来看,我们可以推测这个项目的目标是创建一个社区环境,鼓励摄影爱好者们互相学习和交流。 在...
6. 网站访问统计:记录和分析网站的访问情况。 7. 数据过期处理:支持毫秒级的精确过期时间设置,便于清理旧数据。 安装 Redis 需要注意以下步骤: 1. 下载 Redis:访问官方网站 http://redis.io/ 获取最新版本的 ...
大型数据库的设计与编程技巧 本人最近开发一个访问统计系统,日志非常的大,都保存在数据库里面。 我现在按照常规的设计方法对表进行设计,已经出现了查询非常缓慢地情形。 大家对于这种情况如何来设计数据库呢?...
根据2007年的报告,仅Flickr一家网站就拥有每月4000万访问者,托管着超过20亿张照片,并且每天都有成千上万的新照片被上传。这种现象不仅限于Flickr等大型平台,还包括其他各种专门的照片分享社区。在这样的背景下,...
2. **Flickr**: 对于摄影爱好者和图片分享,`django-ditto` 支持与Flickr的集成,你可以获取并展示用户的相册、照片以及相关的元数据,如拍摄日期、地点等。 3. **Pinboard**: Pinboard是一款流行的书签服务,`...
此外,一些高级图像托管服务还提供了额外的功能,如图像编辑工具(旋转、裁剪、滤镜等)、自定义域名、以及详细的访问统计,帮助用户了解他们的图片被多少人查看、在哪里被查看。 最后,版权问题不容忽视。许多图像...
提供图片访问统计,帮助用户了解图片的受欢迎程度,如查看次数、下载次数等。 10. **集成进Web应用** 开发者可以将图片托管服务无缝集成到网站或应用中,通过API实现图片的动态上传和显示。 在"image_hosting-...
它们通常提供各种功能,如图片编辑、分类、隐私设置和访问统计。 2. 图像处理:ImageBed可能包含了图像处理功能,如裁剪、旋转、滤镜应用和色彩调整。这些功能通常基于图像处理算法,例如像素操作、色彩空间转换和...
在个人Web项目中,可能有自定义的中间件来实现如访问统计、权限控制等功能。 8. **wsgi.py**:这个文件是Django与Web服务器交互的接口,例如使用Apache或Nginx时,会通过WSGI协议与Django项目进行通信。 9. **...