:::info 💡 lucky-url:从不止于链接缩短,一个专业的营销推广工具 :::
后端 | 前端 | |
---|---|---|
开发语言 | Go | React |
开发框架 | httprouter,RPC,sentinel-go | Ant Design、Umi |
- 支持短链域名、后缀长度、后缀字符集配置化
- lucky-url-go采用原生go rpc,底层存储基于redis,支持单机5W+ QPS
- 支持sentinel服务限流配置化
- id发射器采用snowflake算法,单前缀最多使用69年
随机数生成采用twitter snowflake技术方案,可以使用69年,如果希望短链后缀变短,可以调整ID的长度。通过压缩时间戳,工作机器,以及随机序列号。
时间戳:2 ^ 41 / 1000 / 3600 / 24 / 365 = 69.7306年
工作机器:2 ^ 10 = 1024台机器
随机序列号:2 ^ 12 = 4096 / ms ,相当于TPS 4096 * 1000 = 4,096,000 / s
短链后缀方案,通过随机数hash到对应的字符,整体采取base58的技术方案,去除如“? /” url不支持的等字符,如果短链需要定制字符,可以修改字符集。
- 安装依赖
$ yarn
- 启动服务
$ yarn start
$ sh build.sh
- Nginx 配置
location /api/ { proxy_pass [http://localhost:8801/;](http://localhost:8801/;) } location / { proxy_pass [http://localhost:8801/v1/jump/;](http://localhost:8801/v1/jump/;) }
API /v1/api/create Method POST Request
Key | Name | Sample |
---|---|---|
url | 长链 | http://www.baidu.com |
{
"errno":0,
"errmsg":"SUCCESS",
"data":{
"url":"x-url.cc/3kTMd"
}
}
API /v1/jump/:s Method GET Request
Key | Name | Sample |
---|---|---|
url | 短链 | x-url.cc/3kTMd |