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的逻辑可以在第二章中找到。
工作流程:
从上图可以看出,当用户粘贴文本并单击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+章 |