美文网首页
设计一个twitter

设计一个twitter

作者: 尚无花名 | 来源:发表于2019-04-08 00:52 被阅读0次

Use case/Scenario:

用户发tweet
用户follow别人
用户获取时间线
用户评论,转发(非核心功能)

Service

核心api
login (userName, password): return session key or exception
PostTweet(userName, content) : return a url or exception
getTimeLine(userName): return list of tweet, then organize by the app or web browser

  1. User Service, login时用到的
    2。 Tweet service
    又可以分为 a. Timeline service: 链接数据库
    b. Post Twitter service, 链接数据库
  2. Friendship service: time line时用到的。链接数据库
  3. Media service,也是指向一个数据库
    upload
    download
    感觉拆分成microservice的时候就是看哪些业务适合归并在一起。
    一般对相同数据库的操作都可以group在一起。

Storage

User table

user id, name, password, last login

Friendship table

follower, followee, since time

Tweets table

Tweet id, user id, content, createdAt

File System for media

Working solution

使用pull model的solution

image.png

缺陷,读的时候会比较慢

使用push model的solution

为了解决读的比较慢的问题,再加一个new feed table.
用户发完帖子之后, 服务器会把它写到这个用户的每个follower的news feed里面去。这样用户登录的时候只需要拿自己的前一百条就好了。会快很多。

news feed table

user id, owner id, tweet id, created At.
为什么要用owner id? 感觉可以当sharding key。
写news feed是一个很长的过程,可以用一个message queue来异步执行。
这个缺点就是比较慢 。。。


image.png

如果明星发帖了,对于在线的用户,如何让他第一时间知道,再开一个real time service, 用户订阅这个明星的channel,一量明星发帖了,就直接通知。有点小题大做的样子也可以让用户每十秒钟pull一次, cache明星。

什么时候用pull 什么时候用push

相关文章

  • LeetCode 355 design-twitter

    LeetCode 355 design-twitter 题目355.设计推特 设计一个简化版的推特(Twitter...

  • 设计一个twitter

    Use case/Scenario: 用户发tweet用户follow别人用户获取时间线用户评论,转发(非核心功能...

  • 设计Twitter

    读完本文,你可以去力扣拿下如下题目: 355.设计推特[https://leetcode-cn.com/probl...

  • 【Django实践】_bootstrap框架

    Bootstrap是Twitter推出的一个用于前端开发的开源工具包。它由Twitter的设计师Mark Otto...

  • bootstrap总结

    *Bootstrap是Twitter推出的一个开源的用于前端开发的工具包。它由Twitter的设计师Mark Ot...

  • leetcode 355. Design Twitter 面向对

    Design Twitter应用面向对象设计(OO)模拟Twitter的几个功能,分别是: 发推postTweet...

  • Twitter第三方登陆(iOS)

    想要实现login with Twitter,首先你要注册一个Twitter账号。 有了自己Twitter账号后,...

  • 系统设计- 怎么简单设计一个twitter?

    那么我们nail down 三个最为重要的社交网络的features: tweeting: 指的就是user可以发...

  • 从0开始设计Twitter系统架构

    Twitter是全球最大的社交网络之一,如果让我们从0开始设计twitter的系统架构,该怎么做呢?有哪些服务是必...

  • 355-设计推特

    设计推特 题目 设计一个简化版的推特(Twitter),可以让用户实现发送推文,关注/取消关注其他用户,能够看见关...

网友评论

      本文标题:设计一个twitter

      本文链接:https://www.haomeiwen.com/subject/qyhyiqtx.html