Design A Pastebin


title: Notes of System Design No.03 — Design a PasteBin
description: 'Design a PasteBin ’
date: 2022-05-13 18:01:58
tags: 系统设计
categories:

  • 系统设计

00. What is Pastebin?

这是一个网站

在输入框输入文本

网站上会生成一个URL链接

别人可以通过这个链接

访问到你输入的内容

01.Functional Requirement

02. Non-Functional Requirement

03. Assumptions

04. Define API

05. High-Level Design

  • 其实这个系统的设计和前面的TinyURL系统是大同小异的。本质上就相当于TinyURL的长URL部分变成用户输入的内容部分。所以可以先看一下前面的TinyURL设计的部分,

  • 和TinyURL的区别在于,TinyURL的用户输入会小一点,只是一个URL,但是PasteBin会用户输入的数据有可能会非常大,比如10M这样子的数量级 这样的如果还是用直接用普通的数据库去存的话,就会导致在用户读取时,整个链路过载,每次数据流动都是10M多数据。

  • 优化措施1:

  1. 可以把大的文件直接存入对象存储数据库 比如S3,然后生成对象的链接 ,然后在Mapping DB里面存 S3-link 和短URL的 映射数据
    2.用户在取数据的时候,短URL 先到Mapping DB里面找到这个S3 link ,然后再通过S3 link 到S3里面找到实际的内容数据
  • 优化措施2:
    1.如果Content size <10Kb,则可以直接存到Mapping DB里面
    2.如果Content size >10Kb,则可以通过S3来存储实际内容

  • 优化措施3:
    1.对于大文件数据 除了在Mapping DB里面存他的S3 link,还可以把preview data( 大概10KB左右)存到Mapping DB里面,这样用户在访问的时候 就可以先把10kb的preview data 先读取出来 然后再通过S3 link 把剩下的数据读取出来

06. Low-Level Design

1. DB

2. Create Workflow

3.Get Workflow

4.Expire Workflow

07 . Dive Deep

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值