<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Tim[后端技术] &#187; pubsub</title>
	<atom:link href="http://timyang.net/tag/pubsub/feed/" rel="self" type="application/rss+xml" />
	<link>http://timyang.net</link>
	<description>Tim&#039;s blog, 关于后端架构、互联网技术、分布式、大型网络应用、NoSQL、Key Value等</description>
	<lastBuildDate>Mon, 26 Jul 2010 15:32:05 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Ideas for creating a friendfeed like feed aggregator system</title>
		<link>http://timyang.net/architecture/friendfeed-like-aggregator/</link>
		<comments>http://timyang.net/architecture/friendfeed-like-aggregator/#comments</comments>
		<pubDate>Fri, 03 Apr 2009 07:46:28 +0000</pubDate>
		<dc:creator>Tim</dc:creator>
				<category><![CDATA[架构]]></category>
		<category><![CDATA[English]]></category>
		<category><![CDATA[feed]]></category>
		<category><![CDATA[friendfeed]]></category>
		<category><![CDATA[microblogging]]></category>
		<category><![CDATA[pubsub]]></category>

		<guid isPermaLink="false">http://timyang.net/?p=84</guid>
		<description><![CDATA[I was invited to join a meeting about implement a friendfeed like feed system. Here are some ideas about requirement and architecture, which I typed on my BlackBerry during the meeting.

Like the friendfeed, The product can import external RSS, so we separate the system into two parts. The rss crawl system and the feed pubsub [...]]]></description>
			<content:encoded><![CDATA[<p>I was invited to join a meeting about implement a <a href="http://www.friendfeed.com/" target="_blank">friendfeed</a> like feed system. Here are some ideas about requirement and architecture, which I typed on my BlackBerry during the meeting.</p>
<ol>
<li>Like the friendfeed, The product can import external RSS, so we separate the system into two parts. The rss crawl system and the feed pubsub system. The pubsub system has no responsbility to grab the feed from source. The feed itself only save feed summary and url.</li>
<li>We decided to use the INBOX approach, which will push the published feed to be saved in all subscriber&#8217;s data table. More information of how this work can refer to <a href="http://www.hueniverse.com/hueniverse/2008/03/on-scaling-a-mi.html" target="_blank">Scaling a Microblogging Service &#8211; Part I</a>.</li>
<li>User&#8217;s homepage is an aggregation result. We choose to return a limited recent real-time date, no infinity pagination. But the user&#8217;s own feed(user&#8217;s profile page) may have a bigger date range.</li>
<li>The unsubscibe logic have two choice, delete or keep the history data from one&#8217;s inbox. We decide to keep them.</li>
<li>If the feed source had been deleted, do we need to delete all references in all subscriber&#8217;s inbox?  If need delete, each feed push to the pubsub system need to have a unique resource id. Another problem is after the source updated whether to publish a new feed or update the current feed?</li>
<li>How to manage the group(QUN in Chinese) feed, deliver to all member&#8217;s inbox? Or share a group inbox?</li>
<li>How to impl the feed comment logic, publish the comment to feed system or design a standalone comment system. We prefer to use a standalone comment system which doesn&#8217;t publish the comment back to the feed system.</li>
<li>Every feed has a media type, such as text, video, image so the subscribe API can only retrieve a limited media type (text for mobile device). And a feed may have tags.</li>
<li>The read/unread count is easy to implement. But the load is heavy. (<a href="http://www.qq.com/" target="_blank">QQ</a> / QQzone may has such logic.)</li>
<li>Need open API for 3rd party client(like twitter client), and RSS feed, may have <a href="http://oauth.net/" target="_blank">OAuth</a> integration.</li>
<li>The storage may like friendfeed&#8217;s mysql schema (see <a href="http://bret.appspot.com/entry/how-friendfeed-uses-mysql" target="_blank">How FriendFeed uses MySQL to store schema-less data</a>) or use Amazon simpledb.</li>
<li>May add support for XMPP <a href="http://xmpp.org/extensions/xep-0060.html" target="_blank">Publish-Subscribe</a>, or <a href="http://xmpp.org/extensions/xep-0163.html" target="_blank">PEP</a>(Personal Eventing Protocol) for pushing realtime time to users in the future.</li>
</ol>
Similar Posts:<ul><li><a href="http://timyang.net/python/python-rest/" rel="bookmark" title="February 12, 2009">用Python实现CRUD功能REST服务</a></li>

<li><a href="http://timyang.net/data/friendfeed-mysql-schema-less/" rel="bookmark" title="October 29, 2009">Friendfeed的MySQL key/value存储</a></li>

<li><a href="http://timyang.net/python/python-thread-socket-server/" rel="bookmark" title="March 8, 2009">Python thread socket server</a></li>

<li><a href="http://timyang.net/sns/facebook-feed/" rel="bookmark" title="June 2, 2009">Facebook的feed格式设计</a></li>

<li><a href="http://timyang.net/web/nginx-module/" rel="bookmark" title="March 17, 2009">如何写nginx module</a></li>
</ul><!-- Similar Posts took 9.599 ms -->]]></content:encoded>
			<wfw:commentRss>http://timyang.net/architecture/friendfeed-like-aggregator/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
