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