0%

最近由于工作需要,需要把部分接口迁移到Go语言上,优化部分性能。经过一番考察后,我选择了gin这款轻量级的web框架,用来开发restful api。

首先看一下官方的介绍:

Gin is a web framework written in Go (Golang). It features a martini-> like API with much better performance, up to 40 times faster thanks > to httprouter. If you need performance and good productivity, you > will love Gin.

据说性能是martini的40倍,好吧,martini我也没接触过。

然后看官方给出的一个例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
package main

import "github.com/gin-gonic/gin"

func main() {
r := gin.Default()
r.GET("/ping", func(c *gin.Context) {
c.JSON(200, gin.H{
"message": "pong",
})
})
r.Run() // listen and serve on 0.0.0.0:8080
}

然后运行这个例子, 默认是监听8080端口

1
$ go run example.go

下载和安装

1
$ go get github.com/gin-gonic/gin

这里要提到一个小技巧,国内由于各种原因,导致go get 几乎处于不可用的状态,如果你有ss的话,可以使用cow这个工具,把go get 的http请求转发给ss代理,这样在命令行里使用go get 就会比较顺畅了。

  • import
    1
    import "github.com/gin-gonic/gin"

govendor

也可以使用govendor这样的工具,来构建项目。

1.安装govendor
1
$ go get github.com/kardianos/govendor
2.创建你的项目文件夹
1
$ mkdir -p $GOPATH/src/github.com/myusername/project && cd "$_"
3.初始化项目并安装gin
1
2
$ govendor init
$ govendor fetch github.com/gin-gonic/gin@v1.2
4.复制初始模板到你的项目中
1
$ curl https://raw.githubusercontent.com/gin-gonic/gin/master/examples/basic/main.go > main.go
5.运行你的项目
1
$ go run main.go

OK, 至此呢,一个简单的gin 项目的demo就跑起来了。

一开始,是学着人家在github pages弄了一个主页,但是一直也没去维护,而且国内访问速度也不好。再加上也没有细心去研究hexo,不知道还有hexo admin这样好用的插件(最主要的原因还是懒)。所以博客就一直荒废着,平时都是在简书上更新。
昨天在本地安装了插件以后,发现异乎寻常的好用。于是我就决定把博客迁移到腾讯云上,说干就干,我当场就格式化了我的那台单核1G的一元学生机(这里真的要感谢腾讯云,没有这个优惠,一个月65元的服务器费用我是万万承受不起的),格式化以后还有意外之喜,本来云硬盘只有20G,现在有50G了,悄无声息的增加了30G。
首先是安装node环境,装好hexo,然后从github上把项目下载下来,配置好deploy命令。

1
2
3
4
5
hexo g
hexo d
git add .
git commit -m "auto push"
git push

这样就实现了在部署完毕之后,自动把博客的源代码保存到github上。
然后我又给博客配置了一个blog域名,开启了CDN加速,但是随即出现了一个问题,就是当我更新了博客以后,cdn是不会刷新的。于是我翻阅了腾讯云CDN的文档,发现他们提供了主动刷新cdn的api,于是我用python写了一个调用cdn的脚本,并把调用命令添加到deploy脚本里面。为了保护我的key,我把这个脚本编译成了二进制文件。
这样每次我更新博客的时候,就会触发cdn刷新。
这样就实现了,只要有浏览器,我就能随时更新博客的效果了。

后续:

CDN有点坑,不好使。现在的部署方式改为同时部署在github和coding上,通过DNS解析,使得国内访问就走coding,国外访问就走github,这样国内访问速度的提升还是很大的。