当前位置: 首页 > news >正文

如何设计短域名系统

输入可能是

一个冗长的域名,过期时间和自定义的别名

输出

自定义别名或者随机生成的短域名,在过期时间到来之前访问都可以被重定向到冗长的域名上

约束条件

1.过期后就失效
2.短域名是唯一的
3.自定义短域名长度在7个字符(不包含域名长度),由[0-9,a-z,A-Z]等字符组成
4,延迟
5.存储

如何增加过期时间处理

	1.延迟惰性删除2,定时删除,维持大量定时器3.轮训删除对延迟要求高,并且存储空间占用少延迟删除在db建的表里加入过期时间的时间戳列,写入时计算读取比较,过期就删除

如何保证短域名的唯一性

写时消重
如何设置唯一id生成算法
1.uuid -》和 murmurhash 哈希以后可能不一样,但是截取的时候不能保证截取的不相同
2.设置自增id,利用数据库自增主键


单机吞吐量扛不住,可以增加负载均衡侧落,分片副本等等

延迟优化,可以在
存储层 
1.存储介质,没必要用关系型,可以用持久形kv,比如rocksdb
2,构建索引,长短域名都要做索引,可以在redis做两份存储,互为kv,类似倒排索引缓存层
1.读多写少,使用缓存可以大大降低延迟,减少网络请求延迟2.对于判断长域名是否存储过,以及短域名是否分配过可以用布隆过滤器3.如果对延迟非常苛刻,可以使用本地缓存,维护一个lru业务层
1.通过尾号分片将id生成器分布式化,基于预处理的思想,给不同的维护不同区间,保证自增,但是不保证连续性
2.分布式id生成算法

可靠性

异地容灾,一主多从

安全性

1.如果自增id可能会人逐个遍历取走
2.使用murmurhash可能有哈希冲突

重定向

301永久重定向会缓存无法统计访问次数,但是会减少服务端压力选用302  因为要统计长域名的访问量
http://www.lryc.cn/news/231981.html

相关文章:

  • web缓存-----squid代理服务
  • nginx-location和proxy_pass的url拼接
  • 从零开始配置离线服务器
  • Spring事务和事务的传播机制
  • 软件开发提效工具——低代码(Low-Code)
  • 菜单栏管理软件 Bartender 3 mac中文版功能介绍
  • ef core code first pgsql
  • 容器化nacos部署并实现服务发现(gradle)
  • 金融行业如何数字化转型?_光点科技
  • 【LeetCode刷题-滑动窗口】--1695.删除子数组的最大得分
  • iOS OpenGL ES3.0入门实践
  • 网络基础(一)
  • SQLServer添加Oracle链接服务器
  • 2017年计网408
  • UE5中APlayerController属性与方法列表(翻译中......)
  • TCP连接保活机制
  • centos安装mysql8.0.20、tar包安装方式
  • k8s yaml文件含义
  • ProEasy机器人:运动+通讯相关说明
  • Visual Studio Code 配置 C/C++ 开发环境的最佳实践(VSCode + Clangd + CMake)
  • 年产200万件的超级工厂投产!巨头「闭环」汽车电子全产业链
  • 智能穿戴AR眼镜主板方案定制_MTK平台AR智能眼镜PCB板开发
  • 【入门Flink】- 11Flink实现动态TopN
  • 现在做跨境电商还需要全球代理IP吗?全球代理IP哪家靠谱?
  • 微服务的常用组件
  • Android问题笔记四十五:解决SeekBar操作thumb周围产生的圆形阴影/灰色阴影/白色圆圈的解决办法
  • AI从入门到精通,什么是LLMs大型语言模型?
  • 优测云测试平台 | 有效的单元测试(下)
  • CUDA安装
  • 【XTDrone Ubuntu18.04】XTDrone + Ubuntu18.04 + PX4 安装过程