有一个服务, 将要发送给你的长 URL 对应到一个短 URL 上. 例如 www.baidu.com->www.t.cn/1
把短 url 拼接到短信等的内容上发送....服务设计
如果你在往长短 URL 真实的对应关系上想, 那么就走远了.
最理想的情况是: 我们用一种算法, 对每一个长 URL, 唯一的转换成短 URL. 还能保持反向转换的能力....按照上面的发号器策略, 是不能保证长短链接的一一对应的, 你连续用同一个 URL 请求两次, 结果值都是不一样的....这样可以将对数据库持续的操作移到代码中进行, 并且异步进行获取和写入操作, 保证服务的持续高并发.
分布式
上面设计的系统是有单点的, 那就是发号器是个单点, 容易挂掉....类比可得, 我们可以用 1000 个服务, 分别发放 0-999 尾号的数字, 每次发号之后递增 1000. 这样做很简单, 服务互相之间基本都不用通信, 做好自己的事情就好了.