首页 > 其他分享 >短链接URL设计

短链接URL设计

时间:2023-06-17 17:13:50浏览次数:39  
标签:1W URL 生成 详细 服务器 设计 链接

目录

前言

长URL分享冗长用户体验很差,期望一个更短的URL,点击短URL映射跳转到实际地址。

产品命名:”Fuxi(伏羲)“

一、需求分析

基本流程

功能分析

性能分析
  1. 总存储量

    预计每月生成5亿条,有效期2年,因此总URL数量120亿

    短URL存储空间:按照每个URL1KB则一共12TB=1KB*120亿

  2. 吞吐量

    1. QPS

      每个短URL平均读100次

      5亿 * 100 / (30 * 24 * 60 * 60) ≈ 2万

      一般系统高峰期访问量是平均的2倍,因此需要支持4万

    2. TPS

      写相比读来说预计量级很小,按照10:1来算,TPS 2千

  3. 网络带宽

    1. 根据返回长URL的平均长度来估算

      平均每个长度URL500B,HTTP响应头500B,所以每个响应1KB。

      因此需要的带宽为320Mb=4万 * 1KB * 8bit = 40MB * 8bit

非功能需求
  1. 高可用。不能因为某台服务器、数据库宕机导致的服务不可用
  2. 高性能。TP80请求小于5ms,TP99小于20ms
  3. 短URL生成是随机的,用户不可猜测

二、概要设计

短URL如何生成
1. MD5后base64编码后,截取前6位。(前6位可能冲突,还得需要反查,性能不符合要求)
1. 自增URL。(不满足用户不可猜测的需求)
1. 预生成。(离线预生成,每次读取到内存1W,性能满足要求,且离线生成是随机的,满足用户不可猜测的需求)
整体架构图

调用流程图

未命中

三、详细设计

重定向响应码详细设计

301:重定向一次后浏览器缓存,下次浏览器直接访问原URL

302:每次都访问短链URL服务器

因为QPS服务器能承受住,且301则后续的访问服务器完全无感知、无记录,为了统计因此选择302

短URL预生成文件加载及读取详细设计

预加载服务器集群,每次读1W存与内存中,短链服务器访问则直接返回,当个数小于2000时,单机加锁再去取1W个

过期则将过期的随机编码追加进HDFS中以供后续使用

用户自定义短URL详细设计

不能用6位长度的,防止与后续要使用的冲突

标签:1W,URL,生成,详细,服务器,设计,链接
From: https://www.cnblogs.com/ningxinjie/p/17487712.html

相关文章

  • 设计模式:适配器模式(论如何把鼠头适配成鸭脖)
    适配器模式(AdapterPattern)有时候也称包装样式或者包装,是一种结构型设计模式,它可以将一个类的接口转换成客户端所期望的另一个接口。适配器模式可以让原本由于接口不兼容而不能一起工作的那些类可以一起工作。适配器模式有三种类型:类适配器模式、对象适配器模式和接口适配器模式......
  • Go设计模式实战--用状态模式实现系统工作流和状态机
    大家好,这里是每周都在陪你进步的网管~!本节我们讲一个行为型的设计模式--状态模式,并通过Golang示例进行实战演示。状态模式(StatePattern)也叫作状态机模式(StateMachinePattern)状态模式允许对象的内部状态发生改变时,改变它的行为,就好像对象看起来修改了它实例化的类,状态模式是一种......
  • 14-控制单元的设计
    14-控制单元的设计一、组合逻辑设计1.组合逻辑控制单元框图1)CU外特性2.微操作的节拍安排采用同步控制方式一个机器周期内有3个节拍(时钟周期)1)安排微操作时序的原则原则1微操作的先后顺序不得随意更改原则2被控对象不同的微操作尽量安排在一个节拍内完成原则3占用时......
  • 系统架构设计师笔记第17期: 关系数据库
    数据库的分类可以根据不同的标准进行划分:根据数据结构分类:1.1关系数据库(RelationalDatabase):关系数据库是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据,以表格形式存储数据,并支持事务处理、多用户访问、数据安全性和完整性控制等功能。1.2非关系型数据......
  • 痞子衡嵌入式:主流QuadSPI NOR Flash厂商关于QE位与IO功能复用关联设计
    大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家讲的是几家主流QuadSPINORFlash厂商关于QE位与IO功能复用关联设计。痞子衡之前写过一篇文章《串行NORFlash下载/启动常见影响因素之QEbit》,这篇文章介绍了几家主流厂商关于QEbit在Flash内部寄存器位置以......
  • 【滤波器设计】基于汉明窗,汉宁窗,布莱克曼窗 矩形窗设计低通FIR滤波器附matlab代码
    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。......
  • 安科瑞远程预付费管理系统设计的意义与具体功能介绍
    安科瑞虞佳豪《安科瑞远程预付费管理系统》是安科瑞公司新研制的与DDSY-1352单相电子式预付费电能表及DTSY-1352三相电子书预付费电能表配套的售电管理系统。它是以电能管理软件和集中抄表软件为主,包括计算机,通讯管理机,打印机等设置在内的集成系统。另外可以选配远传阀......
  • 基于STM32的铁路自动围栏系统设计
    一、项目背景随着城市规模的不断扩大和交通运输方式的日益发展,铁路与公路的交叉口已经成为常见的场景。然而,这些交叉口往往存在一定的安全隐患,因为有时不易发现列车行进的情况,导致公路上的车辆或行人可能会无意中闯入铁路区域,从而引发重大交通事故。为了解决这个问题,当前开发了一款......
  • 设计模式:适配器模式(论如何把鼠头适配加工成鸭脖)
    定义适配器模式(AdapterPattern)有时候也称包装样式或者包装,是一种结构型设计模式,它可以将一个类的接口转换成客户端所期望的另一个接口。适配器模式可以让原本由于接口不兼容而不能一起工作的那些类可以一起工作。适配器模式有三种类型:类适配器模式、对象适配器模式和接口适配器......
  • 任务调度系统架构设计:基于缓存的改进
    目录1.引言2.技术原理及概念2.2.技术原理介绍3.实现步骤与流程4.示例与应用5.优化与改进随着互联网和信息技术的不断发展,任务调度系统已经成为了企业和个人使用的重要工具。一个高效的任务调度系统可以提高生产效率,降低人工成本,优化工作流程,提高企业竞争力。然而,传统的任务......