如何提供一個短鏈(URL shorter)生成服務

定義
短鏈服務:將一個long link URL轉化爲更短的link, 通過short link 可以重定向到原始的link URL。

如何設計
生成算法需要保證long url生成的short url是唯一的,如何保證生成唯一?例如,可以使用mysql來存儲短鏈對應的種子生成器,假設使用mysql來存儲短鏈種子的生成器id,生成算法如下:
從mysql中拿到唯一id,可以取一批id放到內存中,從內存中取id,等到內存中的id用完之後,再從mysql中取;
對取到的id進行編碼,編碼成short link,需要設計能夠編碼和解碼的算法,使id生成的編碼儘可能的短,參考:http://www.geeksforgeeks.org/how-to-design-a-tiny-url-or-url-shortener/

如何保證可靠性和生成性能
使用redis、hbase
Redis:緩存最近生成的短鏈以及最近訪問的短鏈(比如最近一個月)
Hbase:在redis可用時,充當異步的持久化短鏈的職責;redis不可用時,從hbase查詢
Mysql:提供唯一種子生成,並對生成的短鏈進行備份

生成流程
從mysql中獲取短鏈種子id,生成短鏈;
將[短鏈,長鏈]和[長鏈,短鏈]的映射關係放入到redis中;
異步將短鏈存入hbase;
查詢時,從redis獲取短鏈,不存在從hbase獲取短鏈。

短鏈其它使用
將短鏈內容放入二維碼中(利用google開源的zxing等生成二維碼圖片)


更多內容關注微信公衆號:qunzi-eros
這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章