Design A Pastebin

news2025/7/9 5:50:47

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/18337.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【图神经网络论文整理】(一)—— 可解释性和泛化性图分类的因果注意力:CAL

KDD 22: Proceedings of the 28th ACM SIGKDD Conference on Knowledge Discovery and Data MiningAugust 2022Pages 1696–1705论文地址 本文介绍的论文是中科大王翔教授等人在KDD2022上发表的《Causal Attention for Interpretable and Generalizable Graph Classification》…

【数据处理】Python matplotlib绘制双柱状图以及绘制堆积柱状图——保姆级教程

Python matplotlib绘制双柱状图以及绘制堆积柱状图双柱状图一、双柱状图的原理二、双柱状图的完善1. 增加图片标题2. 增加x轴y轴标题3. 增加x轴注释四、完整代码堆积柱状图一、堆积柱状图的绘制原理二、plt.bar参数介绍三、完整代码&#xff1a;双柱状图 一、双柱状图的原理 …

机器人C++库(12)Robotics Library 之指定路径规划算法

机器人C库&#xff08;12&#xff09;Robotics Library 之路径规划算法&#xff1a;PRM、RRT、EET算法 RL库的运动规划(rl::plan)模块集成了以下经典的路径规划算法&#xff1a; PRM算法:概率路线图算法RRT算法&#xff1a;快速探索随机树算法EET算法&#xff1a;搜索树算法-基…

java计算机毕业设计ssm基金分析系统的设计与实现

项目介绍 计算机信息技术的发展,推动了基金信息化管理的进程,并随着互联网&#xff1a;概念的提出,各种互联网&#xff1a;软件也应运而生。在传统的管理中,各种信息管理难,传播速度慢,需要耗费很长时间统计核查,不能满足现代化的发展需求,基于JAVA的基金分析系统的提出解决了…

python+django家政服务中介网站系统

通常 一个Django model 对应一张数据表&#xff0c;model是以类的形式表现的 实现了ORM 对象与数据库映射 隐藏了数据访问细节 不需要写sql语句 admin是Django自带的 自动化数据管理界面 前端技术&#xff1a;nodejsvueelementui 我们最初的项目结构由五个文件组成&#xf…

《树莓派项目实战》第六节 使用超声波模块测距

目录 6.1 引脚介绍 6.2 工作原理 6.3 使用注意 6.4 连接到树莓派 6.5 编写代码输出距离 在本节&#xff0c;我们将学习如何使用HC-SR04超声波模块测量前方障碍物的距离&#xff0c;该项目设计到的材料有&#xff1a; 树莓派 * 1面包板 * 1杜邦线若干HC-SR04超声波模块* 1…

Mysql进阶之索引与视图和三大范式

1、索引&#xff08;index&#xff09; 1.1、什么是索引&#xff1f; 索引是在数据库表的字段上添加的&#xff0c;是为了提高查询效率存在的一种机制。 一张表的一个字段可以添加一个索引&#xff0c;当然&#xff0c;多个字段联合起来也可以添加索引。 索引相当于一本书的…

redis搭建主从、redis搭建集群、redis中StrictRedis()、RedisCluster()方法与python交互

一、StrictRedis方法 创建对象&#xff0c;指定host、port、db与指定的服务器端口连接&#xff0c;其中默认host为localhost、port为6379、db为0&#xff0c;不同类型调用的实例方法不同&#xff0c;与redis命令一致&#xff0c;方法需要的参数与命令参数一致 from redis imp…

Xavier(8):Xavier使用速腾聚创激光雷达运行a-loam算法部分报错与解决方案

文章目录1 速腾聚创激光雷达驱动报错&#xff1a;Project cv_bridge specifies /usr/include/opencv as an include dirProject grid_map_cv specifies /usr/include/opencv as an include dir2 a-loam算法报错&#xff1a; fatal error: opencv/cv.h: 没有那个文件或目录报错&…

无线社工基础

无线社工基础 一些社会工程学密码生成器&#xff08;百度&#xff09; Crunch工具 /usr/share/crunch/charset.lstcrunch 最短长度 最长长度 字符集 选项crunch 8 12 -f /usr/share/crunch/charset.lst ualpha -o /root/pass.txt Windows下对附近无线网络进行扫描 WirelessMon…

MySQL事务/事务与数据库底层数据/多点回滚/隔离级别/悲观锁和乐观锁/锁模式和分类/相关锁总结/JDBC事务实现

文章目录MySQL事务概述事务事务与数据库底层数据事务控制语句事务处理基本测试多点回滚相关日志问题redo logundo log隔离级别常见问题事务隔离性隔离级别的范围总结隔离等级读未提交读已提交可重复读串行化并发写问题幻读问题悲观锁和乐观锁锁模式锁分类按加锁方式分类按照算法…

基于贝叶斯推理估计稳态 (ST) 和非稳态 (NS) LPIII 模型分布拟合到峰值放电(Matlab代码实现)

&#x1f468;‍&#x1f393;个人主页&#xff1a;研学社的博客 &#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜…

ShardingSphere笔记(一): 经验和踩坑总结

ShardingSphere笔记&#xff08;一&#xff09;&#xff1a; 使用经验总结 文章目录ShardingSphere笔记&#xff08;一&#xff09;&#xff1a; 使用经验总结一、背景框架选择二、ShardingSphere-jdbc 只是一个帮助你路由的框架&#xff08;踩坑总结&#xff09;1. 它默认会认…

支持末尾携带标签的多行TextView

项目开发过程中&#xff0c;遇到个UI上的需求&#xff0c;本着不重复造轮子、敏捷开发的原则&#xff0c;于是乎网上找寻了一番&#xff0c;发现还是自己搞吧&#xff0c;搜不到这样的需求&#xff0c;先看下我们的效果。 总结有以下三点需要注意&#xff1a; 末尾vip部分是…

$19服务:DTCStatusMask和statusofDTC bit 定义

诊断协议那些事儿 诊断协议那些事儿专栏系列文章&#xff0c;当ECU产生DTC时&#xff0c;我们只知道有故障发生了&#xff0c;并不清楚该故障什么时候发生&#xff0c;现在是否已经恢复、发生过几次&#xff0c;恢复过几次等信息&#xff0c;基于此ISO发布的14229-1使用DTC状态…

[附源码]SSM计算机毕业设计志愿者管理系统论文2022JAVA

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

【VTK+有限元后处理】可视化结果云图

构建vtkUnstructuredGrid对象 为了读取不同格式的有限元计算结果文件&#xff0c;我们先写一个FEDataModel类来管理有限元的几何拓扑和属性信息。 class FEDataModel:"""有限元数据模型类"""def __init__(self):self.nodes [] # 节点几何坐标…

斐波那契数列和斐波那契数

一、什么是斐波那契数列 斐波那契数列&#xff08;Fibonacci sequence&#xff09;&#xff0c;又称黄金分割数列&#xff0c;因数学家莱昂纳多斐波那契&#xff08;Leonardo Fibonacci&#xff09;以兔子繁殖为例子而引入&#xff0c;故又称为“兔子数列”&#xff0c;指的是这…

【考研复试】计算机专业考研复试英语常见问题三(个人选择/学业规划篇)

相关链接&#xff1a; 【考研复试】计算机专业考研复试英语常见问题一&#xff08;家庭/家乡/学校篇&#xff09;【考研复试】计算机专业考研复试英语常见问题二&#xff08;研究方向/前沿技术/本科毕设篇&#xff09;【考研复试】计算机专业考研复试英语常见问题三&#xff0…

C++---哈希

目录 1. unordered系列关联式容器 1.1 unordered_map 1.1.1 unordered_map的介绍 1.1.2 unordered_map的接口说明 1.2 unordered_set 2. 底层结构 2.1 哈希概念 2.2 哈希冲突 2.3 哈希函数 2.4 哈希冲突解决 2.4.1 闭散列 2.4.2 开散列 3. 封装unorder_map和unord…