ProDeveloperTutorial.com

教程和编程解决方案
菜单
  • Shell脚本
  • 系统设计
  • Linux系统编程
  • 4g LTE
  • 编码问题
  • C
  • C ++
  • DSA
  • GIT

系统设计教程示例5:类似PasteBin的服务的系统设计

前开发者教程 二月17,2019

Pastebin是一项服务,用户可以在其中存储平面文本,例如源代码或代码审查,并通过URL与其他用户共享。

5.1在设计系统之前,以下是要考虑的要点列表

1.要求
2. API创建
3.数据库设计
4.负载均衡器
5.缓存
6.分片
7.消息队列
8.散列
9. LRU
10. HDFS
11.微服务

5.2要满足的最基本逻辑是

1.用户粘贴内容时,服务应提供URL
2.当用户粘贴URL时,服务应提供内容。

5.3要求:

除了上述两个要求,我们还将讨论以下要求:

1.用户可以指定URL的到期时间
2.用户也可以提供自定义URL。
3.每位用户最多只能创建1000个免费轮胎URL。
4.选择创建公共或私有URL

5.4 API创建:

以下是根据需要我们需要的2个基本API:

5.4.1。发布
create_paste(内容,用户名,到期时间,custom_url,is_private);

内容 :将检查内容的长度(假设限制为10MB),以及内容的类型(如果可接受)。

user_name:在使用私人网址的情况下要存储的User_name

expiration_time:用户可以指定URL应该过期的时间。

custom_url:用户可以根据需要指定自定义URL。

is_private:检查URL是否需要为私有。

5.4.2。得到
get_text(url)
输入网址时,此api将提供文本。

5.5数据库设计:

我们需要2张桌子:

5.5.1用户表:

用户身份_table
名称
电子邮件
联系

5.5.2简短的URL表
Short_Url_table
到期时间
自定义网址
用户身份
内容

为了存储内容,您可以使用AWS服务。要存储表,可以使用Cassandra,因为它是分布式的。

5.6 URL创建逻辑:

我们可以使用密钥生成服务来生成6个字符长的字符串。创建shortURL的逻辑可以在第二章中找到。

工作流程:

 

系统设计教程示例5:类似PasteBin的服务的系统设计
从上图可以看出,当用户粘贴文本并单击Enter按钮时,第一个请求将到达负载均衡器。

负载平衡器将联系密钥生成服务以获取短网址。生成简短URL后,内容将存储在AWS中。然后,AWS将提供其已存储内容的URL。

该内容URL将与短URL映射,并将存储在DB中。
应该为分布式设计添加数据分片。

快取:

当用户经常与数据交互时,可以应用缓存。您可以使用memcache服务进行缓存。

5.7用量计算:

承担:
1.用户将粘贴1KB
2.简短网址将占用7个字节
3.有效期限为4个字节
4. Paste_path将占用255个再见
5. Is_private将占用1个字节

这样,每个用户每个粘贴的总大小约为1.2KB。

假设每月有1000万粘贴,则等于

每月12.7 GB的数据,
3年内450GB的数据。

这样就完成了类似于PasteBin的服务的系统设计。

 

该网站上可用的教程列表:

C编程20+章C ++编程80+章
100多个编码问题数据结构和算法85+章
系统设计20+章Shell脚本编写12章
4g LTE 60+章节最常见的编码问题
5G NR 50+章Linux系统编程20+章
分享
电子邮件
鸣叫
领英
Reddit
绊倒
Pinterest的
上一篇文章
下一篇

关于作者

前开发者教程

每天我们都会讨论竞争性编程问题,请加入我们的网站:   电报频道

ProDeveloperTutorial.com

教程和编程解决方案
版权© 2020 ProDeveloperTutorial.com
从以下课程获得热门课程: 教育性的







  1. <tfoot class="r5pvuvV"><del class="QxrAZsf"><aside id="T1k6gCA"><summary id="JeBKZSi"></summary></aside></del></tfoot>