FeedBurner(以下简称FB,呵呵)我想应该是大家耳熟能详的一个名字,在国内我们有一个同样的服务商,叫做FeedSky。在2004年7月 份,FB的流量是300kbps,托管是5600个源,到2005年4月份,流量已经增长到5Mbps,托管了47700个源;到2005年9月份流量增 长到20M,托管了109200个源,而到2006年4月份,流量已经到了115Mbps,270000个源,每天点击量一亿次。
FB的服务使用Java实现,使用了Mysql数据库。我们下面来看一下FB在发展的过程中碰到的问题,以及解决的方案。
在2004年8月份,FB的硬件设备包括3台Web服务器,3台应用服务器和两台数据库服务器,使用DNS轮循分布服务负载,将前端请求分布到三台 Web服务器上。说实话,如果不考虑稳定性,给5600个源提供服务应该用不了这么多服务器。现在的问题是即使用了这么多服务器他们还是无法避免单点问 题,单点问题将至少影响到1/3的用户。FB采用了监控的办法来解决,当监控到有问题出现时及时重启来避免更多用户受到影响。FB采用了Cacti (http://www.cacti.net)和Nagios(http://www.nagios.org)来做监控。
FB碰 到的第二个问题是访问统计和管理。可以想象,每当我们在RSS阅读器里点击FB发布的内容,都需要做实时的统计,这个工作量是多么的巨大。大量写操作将导 致系统的效率急剧下降,如果是Myisam表的话还会导致表的死锁。FB一方面采用异步写入机制,通过创建执行池来缓冲写操作;只对本日的数据进行实时统 计,而以前的数据以统计结果形式存储,进而避免每次查看访问统计时的重复计算。所以每一天第一次访问统计信息时速度可能会慢,这个时候应该是FB在分析整 理前一天的数据,而接下来的访问由于只针对当日数据进行分析,数据量小很多,当然也会快很多。FB的Presentation是这样写,但我发现好像我的 FB里并没有今天实时的统计,也许是我观察的不够仔细-_-!
现在第三个问题出现了,由于大多数的操作都集中在主数据库上,数据 库服务器的读写出现了冲突,前面提到过Myiasm类型的数据库在写入的时候会锁表,这样就导致了读写的冲突。在开始的时候由于读写操作比较少这个问题可 能并不明显,但现在已经到了不能忽视的程度。解决方案是平衡读写的负载,以及扩展HibernateDaoSupport,区分只读与读写操作,以实现针 对读写操作的不同处理。
现在是第四个问题:数据库全面负载过高。由于使用数据库做为缓存,同时数据库被所有的应用服务器共享,速 度越来越慢,而这时数据库大小也到了Myisam的上限-4GB,FB的同学们自己都觉得自己有点懒。解决方案是使用内存做缓存,而非数据库,他们同样 使用了我们前面推荐的memcached,同时他们还使用了Ehcache(http://ehcache.sourceforge.net/),一款基 于Java的分布式缓存工具。
第五个问题:流行rss源带来大量重复请求,导致系统待处理请求的堆积。同时我们注意到在RSS源 小图标有时候会显示有多少用户订阅了这一RSS源,这同样需要服务器去处理,而目前所有的订阅数都在同一时间进行计算,导致对系统资源的大量占用。解决方 案,把计算时间错开,同时在晚间处理堆积下来的请求,但这仍然不够。
问题六:状态统计写入数据库又一次出问题了。越来越多的辅助数据(包括广告统计,文章点击统计,订阅统计)需要写入数据库,导致太多的写操作。解决方案:每天晚上处理完堆积下来的请求后对子表进行截断操作:
– FLUSH TABLES; TRUNCATE TABLE ad_stats0;
这样的操作对Master数据库是成功的,但对Slave会失败,正确的截断子表方法是:
– ALTER TABLE ad_stats TYPE=MERGE UNION=(ad_stats1,ad_stats2);
– TRUNCATE TABLE ad_stats0;
– ALTER TABLE ad_stats TYPE=MERGE UNION=(ad_stats0,ad_stats1,ad_stats2);
解决方案的另外一部分就是我们最常用的水平分割数据库。把最常用的表分出去,单独做集群,例如广告啊,订阅计算啊,
第七个问题,问题还真多,主数据库服务器的单点问题。虽然采用了Master-Slave模式,但主数据库Master和Slave都只有一台,当 Master出问题的时候需要太长的时间进行Myisam的修复,而Slave又无法很快的切换成为Master。FB试了好多办法,最终的解决方案好像 也不是非常完美。从他们的实验过程来看,并没有试验Master-Master的结构,我想Live Journal的Master-Master方案对他们来说应该有用,当然要实现Master-Master需要改应用,还有有些麻烦的。
第八个问题,停电!芝加哥地区的供电状况看来不是很好,不过不管好不好,做好备份是最重要的,大家各显神通吧。
这个Presentation好像比较偏重数据库,当然了,谁让这是在Mysql Con上的发言,不过总给人一种不过瘾的感觉。另外一个感觉,FB的NO们一直在救火,没有做系统的分析和设计。
最后FB的运维总监Joe Kottke给了四点建议:
1、 监控网站数据库负载。
2、 “explain”所有的SQL语句。
3、 缓存所有能缓存的东西。
4、 归档好代码。
最后,FB用到的软件都不是最新的,够用就好,包括:Tomcat5.0,Mysql 4.1,Hibernate 2.1,Spring,DBCP。
文章参考了Joe Kottke在MySQL Users Conference 2006上的发言。
分享到:
相关推荐
FeedBurner:基于MySQL和JAVA的可扩展Web应用 53 YouTube 的架构扩展 55 了解一下 Technorati 的后台数据库架构 57 Myspace架构历程 58 eBay 的数据量 64 eBay 的应用服务器规模 67 eBay ...
【标题】:“feedkitchen:基于C#和Azure的feedburner替代品” 【描述】中的“饲料厨房”是一款利用C#编程语言和Microsoft Azure云服务构建的Feedburner替代工具。Feedburner是Google提供的一个流行的服务,主要...
3. **使用RSS和Atom的工具**:介绍各种RSS阅读器、聚合器以及API,如FeedBurner和Google Reader(虽然Google Reader已停用,但可提及类似替代品),并解释如何集成这些工具。 4. **数据抓取与聚合**:讨论如何使用...
而Wordpress现在的应用又不仅仅只是在BLOG方面,因为其强大的扩展性,部分网站甚至已经开始使用Wordpress来架设,或者说这些BLOG你甚至都看不出它们只是BLOG而已了 这个版本包括了重要的安全漏洞修补,推荐所有用户...
- 应用缓存技术,如WordPress和Z-Blog中的缓存机制,将动态数据存储到缓存文件,减少数据库查询。 - 优化SQL查询,避免全表扫描,只检索需要的数据。 3. **禁止外部盗链**:外部对网站资源的盗链会增加服务器负载...
- **知识点概述**:通过在目标市场内的博客留下评论,可增加品牌曝光率。 - **实践建议**: - 针对性地选择与自己业务相关的博客进行互动。 - 发表有价值的见解或提问,以吸引他人关注。 #### 3. 提交读者投稿 - ...
在本文中,我们将向您推荐十个非常实用和高效的 WordPress 插件,这些插件可以轻松地扩展和定制 WordPress 的功能,提升网站的性能和用户体验。 反垃圾留言:Akismet Akismet 是一个非常不错的反垃圾留言插件,...
cd themes/Nodercegit pull配置 menu: Home: / Archives: /archivesexcerpt_link: Read Moregoogle_analytics: UA-123456789-1rss: http://feeds.feedburner.com/willercecomment_provider: duoshuo# Duoshuo ...
博易产品说明文档 ...程序文件扩展名 默认 .aspx, 可在 web.config 更改该配置 开发模式 KISS 且无第三方程序集. 精巧、简练的架构 代码高亮显示 Yes. 支持 C#, Java, VB.NET, HTML, Javascript, T-SQL
- **使用建议**:可设置为侧边栏小工具,激励更多用户参与评论。 **5. WordPress Threaded Comment** - **功能介绍**:采用AJAX技术实现评论的嵌套显示,即多级回复功能。 - **使用建议**:提高评论区的互动性和...
wego:trade_mark:旅游搜索引擎,价格比较 - 在这个包含目的地建议的这个包含的镀Chrome扩展名为节省时间 和金钱,帮助您快速轻松地找到完美的航班,酒店,活动,指南或旅行套餐,以满足您的特定需求。 一个单一(5-...
描述:(1)可自由配置博客的Feed地址,特别适合Feed在feedsky或者feedburner烧制的博友们使用。 (2)可设置在博客边栏显示“订阅按钮”集,方便读者订阅。 安装: 下载后,进入博客后台“插件管理”进行安装...
2. **在Google Reader中应用Gmail标签:** - 当你在Google Reader中找到一篇文章想要保存时,可以将其标记为特定的Gmail标签。 - 这样,你可以在Gmail中查看这些带有特定标签的文章。 - 这种方式非常适合那些希望...
在一个美丽而杂乱的环境中搜索,将您最喜欢的搜索引擎放在指尖中,并使用直观的书签管理器从新的选项卡页面或Web上的任何位置查看和编辑您的书签。强调:✪快速链接功能可让您轻松访问您喜欢的网站✪选择在时钟旁边...
- 利用Google提供的免费工具,如Google Search Console、Feedburner、Custom Search Engine、AdSense和Google Analytics。 10. **robots.txt**: - 正确配置robots.txt文件,允许搜索引擎抓取重要页面,同时屏蔽...
- **使用Feedburner服务**:通过Feedburner等第三方工具管理RSS订阅,提供更丰富的定制化选项。 #### 4. 邮件营销 - **建立邮件列表**:通过收集订阅者的邮箱地址,定期发送邮件简报,通知他们最新的文章或促销...
: Kontakt https://www.igorware.com/contact --------------------------- ------------------------------ :: Spisak izmena v3.1.1-uklonio Google+链接v3.1.0-preuzimanje definicija prebacio sa feedburner ...