讨论/系统设计/请实现一个「短域名」的系统设计/
请实现一个「短域名」的系统设计

设计一个类似于 TinyURL 的服务,它是一个短域名服务,一个提供可重定向到长域名的短域名移动服务。
如果你还不了解短域名,你可以前往 TinyURL 查看其功能。

image.png

简单来说,我们需要一个一对一映射的原域名和短域名的对应,这会涉及到把数据放入数据库中。
我们应该要检查下面这些:

  • 短域名的传输开销是多少?
  • 映射函数是什么?
  • 单机器还是多机器?
展开讨论
如果做映射,比较有效且简单的方法就是把原域名与一个数做映射关系(64位足够),这样可以将问题转换为如何做一个id的生成器。
数据库和redis都有全局生成id的能力,但是这种性能都有上限,每秒最多在万量级。如果是分布式要求很高的情况下,可以用每次申请分段的方式,也就是每次让数据库自增1万,然后在id生成服务上每次吐出增1(全部用完在去数据库中要求自增),这样可以使得性能突破瓶颈,而且保证全局唯一。
1
展开全部 8 讨论