惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园 - 三生石上(FineUI控件)
月光博客
月光博客
人人都是产品经理
人人都是产品经理
Google DeepMind News
Google DeepMind News
M
MIT News - Artificial intelligence
Vercel News
Vercel News
MyScale Blog
MyScale Blog
爱范儿
爱范儿
博客园 - 司徒正美
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
IT之家
IT之家
H
Help Net Security
Last Week in AI
Last Week in AI
阮一峰的网络日志
阮一峰的网络日志
酷 壳 – CoolShell
酷 壳 – CoolShell
L
LangChain Blog
罗磊的独立博客
Stack Overflow Blog
Stack Overflow Blog
宝玉的分享
宝玉的分享
博客园 - 聂微东
云风的 BLOG
云风的 BLOG
J
Java Code Geeks
博客园 - 叶小钗
D
Docker

Hacker News: Show HN

PurrrrrFocus: Pomodoro Timer App - App Store Workflow Engine — Multi-Step Orchestration for Bun RapidPhoto: Pro Photo Editor App - App Store GitHub - DheerG/swarms: Achieve extraordinary results with claude code across a variety of tasks SPICE simulation → oscilloscope → verification with Claude Code — Lucas Gerads Show HN: VCoding – A 5 MB native Windows IDE with no dynamic dependencies Show HN: LLMs don't hallucinate because they're bad at math, it's the format GitHub - Agent-FM/agentfm-core: AgentFM is a peer-to-peer network that turns everyday computers into a decentralized AI supercomputer. AgentFM lets you run massive AI workloads directly across a global mesh of idle CPUs and GPUs. Show HN: Tracking Top US Science Olympiad Alumni over Last 25 Years GitHub - Potarix/agent-hub: One place to talk to all your agents Show HN: Runtime security for AI agents(injection,tool abuse, data exfiltration) GitHub - dubeyKartikay/lazyspotify: Terminal Spotify client for macOS and Linux GitHub - the-banana-tool/king-louie: Easy to use GUI Personal AI Assistant. Win/Linux/Mac. Show HN I made my vacation rental bookable by AI agents–no Airbnb, 0% commission GitHub - basteez/jsf-autoreload: maven plugin to enable hot reload on jsf projects uvm32/hosts/host-gdbstub at main · ringtailsoftware/uvm32 GitHub - labsai/EDDI: Config-driven engine that turns JSON into production-grade AI agents. Multi-agent orchestration, 12+ LLM providers, MCP/A2A protocols, RAG, persistent memory, and enterprise compliance (EU AI Act, GDPR, HIPAA). Built on Quarkus. GitHub - glitchnsec/fortyone-oss: AI Executive Assistant Platform Quickstart | Alien GitHub - muxshed/shed: One stream in, or many. Every destination, simultaneously. No cloud middleman, no per-channel fees, no limits. GitHub - ocrbase-hq/ocrbase: 📄 PDF/IMG ->.MD/JSON Document OCR API for PaddleOCR and GLMOCR. Self-hostable. GitHub - impactjo/home-memory: MCP server that lets your AI assistant remember everything about your home. GitHub - Sets88/dbcls: DbCls is a powerful terminal database client that supports various databases GitHub - neptun2000/heor-agent-mcp GitHub - SeanFDZ/macmind: Single-layer transformer in HyperTalk for the classic Macintosh RollQuation: Math Puzzles - Apps on Google Play GitHub - dropbox/witchcraft Show HN: Agent-cache – Multi-tier LLM/tool/session caching for Valkey and Redis GitHub - opentalon/opentalon: OpenTalon is an open-source platform built from the ground up in Go as a robust alternative to OpenClaw LinkedIn™ 职位抓取工具 - Chrome 应用商店
facebook-system-design-doc
Igor_Wiwi · 2026-05-01 · via Hacker News: Show HN

Facebook-like Social Network — System Design

[!NOTE] Demo document for MDView: headings, TOC, GFM, callouts, tasks, wide tables, code, math, and Mermaid diagrams.

Contents


Goal

Design a simplified Facebook-style social platform with:

  • Profiles
  • Friends / follows
  • Posts
  • News feed
  • Likes and comments
  • Notifications
  • Media uploads
  • Search

How it works

At a high level:

  1. User creates a post.
  2. Post is stored in the Post Service.
  3. Fanout workers distribute the post to follower feeds.
  4. Feed Service reads precomputed timelines.
  5. Notification Service alerts interested users.

[Diagram]


GFM support

Core entities

Entity Description
User Account, profile, privacy settings
Post Text, media, author, visibility
Edge Friendship or follow relationship
Reaction Like, love, angry, etc.
Comment Threaded discussion under a post

Example rules

  • Friends see private posts.
  • Followers see public posts.
  • Everyone sees everything is not acceptable.
  • visibility = friends must be checked on every read path.

Autolink example: https://example.com/privacy-policy


Admonitions and Callouts

[!IMPORTANT] Authorization must happen on both write path and read path. Feed precomputation is not a substitute for privacy checks.

[!WARNING] Celebrity accounts can have millions of followers, so naive fanout-on-write can overload workers.

[!TIP] Use hybrid fanout: push posts from normal users, pull posts from huge accounts at read time.

[!CAUTION] Deleted posts must be removed from feeds, search index, notification previews, and caches.


Task list

  • Support user profiles
  • Support friendship graph
  • Support post creation
  • Support feed generation
  • Support likes and comments
  • Add marketplace
  • Add groups
  • Add reels/video ranking
  • Add end-to-end encrypted messaging

Wide table

Subsystem Main responsibility Storage Cache Queue/Event Scaling strategy Consistency model Failure concern Notes
API Gateway Auth, routing, rate limits None Edge cache None Horizontal replicas Stateless Bad deploy blocks all traffic Keep thin
User Service Profiles and settings Postgres / MySQL Redis UserUpdated Shard by user_id Strong for profile writes Hot users Privacy settings critical
Graph Service Friends/follows Graph DB / MySQL adjacency lists Redis sets EdgeCreated Shard by user_id Eventual for feed fanout Large adjacency lists Needs fast mutual lookup
Post Service Create/read posts Cassandra / DynamoDB Redis PostCreated Shard by author_id Strong write, eventual fanout Hot partitions Immutable post body preferred
Feed Service Home timeline Cassandra / RocksDB Redis FeedUpdated Shard by viewer_id Eventual Stale feed items Hybrid fanout
Media Service Photos/videos Object storage CDN MediaProcessed CDN + async workers Eventual Large uploads Store metadata separately
Notification Service Push/email/in-app alerts Cassandra Redis NotificationCreated Shard by recipient_id Eventual Spam storms Deduplicate aggressively
Search Service User/post search Search index Query cache IndexPost Async indexing Eventual Stale results Respect privacy filters
Ranking Service Feed scoring Feature store Redis FeatureUpdated Model serving replicas Best effort Bad model rollout Use fallback ranking

Code

Post creation API

POST /v1/posts
Authorization: Bearer <token>
Content-Type: application/json

{
  "text": "Hello world",
  "visibility": "friends",
  "media_ids": ["m_123"]
}

Example event

{
  "event_type": "PostCreated",
  "event_id": "evt_9f31",
  "post_id": "post_123",
  "author_id": "user_42",
  "visibility": "friends",
  "created_at": "2026-04-30T18:00:00Z"
}

Fanout worker pseudocode

def handle_post_created(event):
    post = posts.get(event["post_id"])
    followers = graph.get_visible_recipients(
        author_id=post.author_id,
        visibility=post.visibility
    )

    for user_id in followers:
        feed.insert(
            viewer_id=user_id,
            post_id=post.id,
            score=rank_initial(post),
            created_at=post.created_at
        )

Math

Fanout cost

If a user has (F) friends and creates (P) posts per day:

[Formula]

For a celebrity account:

[Formula]

[Formula]

That is why pure fanout-on-write is dangerous.

Feed ranking score

A simplified score:

[Formula]

Where freshness may decay as:

[Formula]


Diagram

[Diagram]


Feed read path

[Diagram]


Storage model

CREATE TABLE posts (
  post_id BIGINT PRIMARY KEY,
  author_id BIGINT NOT NULL,
  visibility TEXT NOT NULL,
  text TEXT,
  media_ids JSONB,
  created_at TIMESTAMP NOT NULL,
  deleted_at TIMESTAMP
);

CREATE TABLE feed_items (
  viewer_id BIGINT NOT NULL,
  created_at TIMESTAMP NOT NULL,
  post_id BIGINT NOT NULL,
  score DOUBLE PRECISION,
  PRIMARY KEY (viewer_id, created_at, post_id)
);

Final architecture rule

[!IMPORTANT] The feed is an optimization, not the source of truth. The source of truth is always: posts + graph + privacy settings.