-
Notifications
You must be signed in to change notification settings - Fork 21
Home
宋昂 edited this page Aug 30, 2021
·
11 revisions
体验地址 ->>> durl.fun
durl 是一个分布式的高性能短链服务,逻辑简单,部署方便.
发现在github中已有的短链服务中,非分布式服务无法做到快速扩容,并且有些项目是用的redis作为数据缓存,性能上不够优秀.
短链接,通俗来说,就是将长的URL网址,通过程序计算等方式,转换为简短的网址字符串。
微博和Twitter都有140字数的限制,如果分享一个长网址,很容易就超出限制。
营销短信,字数的限制,当字数过长: 1.不美观 2.超出字符额外收费。
生成二维码的原始链接,当原始链接过长时,生成的二维码过于复杂,导致一些像素较低的手机无法扫描.
- beego 为项目web框架.
- 使用了 xorm 来实现持久数据存储, 项目已测试 mysql 与 mongo.
- 使用了 mcache 来实现内存缓存.
- 因使用内存缓存作为缓存池,实际使用中,项目本身的性能瓶颈更多体现在数据库自身.(单机qps轻松上w)
- 项目内存消耗大多为缓存内存所用容量,可通过配置文件进行内存大小限制.
portal: 首页可以通过页面进行短链生成.公司内部或者公司外部可以通过页面生成短链接.
openApi: 对内开放api,增删改查.
jump: 只服务短链跳转.作为专门的跳转服务.
这样分为三个模块的原因,是因为根据需要进行部署,需要那个就部署那个.
因为这个项目的结构原因,整个项目三个模块之间没有耦合,可以随意增加pod数量,来提高系统性能. 一般来说openApi可以部署为只内网访问,jump作为专门的跳转服务,如果有需要页面服务就部署portal.
进入各个项目, 修改完数据库, 直接run就可以
在 durl/build 目录下提供有dockerfile demo. 可以根据需要进行修改后部署.
durl 是根据JetBrains sro授予的免费JetBrains开源许可证与GoLand一起开发的,因此在此我要表示感谢。