首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

急如闪电快如风,彩虹女神跃长空,Go语言进阶之Go语言高性能Web框架Iris项目实战-初始化项目EP00

在Golang Web编程的世界里,君不言高性能则已,言高性能必称Iris。彩虹女神的名号响彻寰宇、名动江湖,单论一个快字,无人能出其右,就连以简洁轻量著称于世的Gin也难以望其项背,只见彩虹女神Iris回眸一笑撩人心扉:“虽然你们也不是那么慢,但我还是快那么一点点......”,本次就让我们来一睹彩虹女神Iris的芳颜,感受宇宙最快Web框架的神乎其神。

女神本神(Iris)

选择一款框架有诸多的参考层面,比如灵活性、扩展性、API友好程度、文档详细程度、项目活跃度、社区贡献等等,但是性能和内存占用绝对是优先参考的一个重要层面,原因无他,天下武功,唯快不破,正所谓一快遮百丑,经济下行,降本增效的大背景之下,高性能框架无疑占据极大的优势,说白了,成本相仿的前提下,我单位时间内网络请求吞吐量是你的一倍,还没用力,你就倒下了,你怎么跟我打?游戏还没开始,就已经结束了。

空口白牙,不足为据,参见2022年最新请求吞吐量对比图:

事实上,Iris本质上也是社区驱动的Go语言Web框架,支持http2/3,完备的MVC支持,奉行极简主义风格,轻量化与简明风格比起Gin来说,也不遑多让,与此同时,社区活跃度和文档支持都非常到位,但其拥有的极其恐怖的高性能特性,其他框架则是望尘莫及。在Iris身上,我们可以看到她对性能的近乎于偏执的完美追求,Iris为了优化性能,不惜自己开发和集成最快的组件,比如日志记录内置了golog模块,比如json序列化就选择了第三方库jsoniter,从框架设计的态度上,极尽完美之能事。

建立项目IrisBlog

参照Iris官网文档:https://github.com/kataras/iris/blob/master/README\_ZH.md,我们借助彩虹女神Iris的垂爱,打造一款史上最快的在线博客系统,首先建立文件夹IrisBlog:

随后通过go mod命令初始化项目:

对于go mod不熟的朋友,请移玉步至层次分明井然有条,Go lang1.18入门精炼教程,由白丁入鸿儒,Go lang包管理机制(package)EP10[1],关于go mod的使用,这里不再赘述。

接着,由于诸位可以理解的原因,请确保使用国内的安装源:

随后安装彩虹女神Iris:

系统返回:

安装完毕之后,可以打开项目中go.mod文件查看Iris的依赖列表:

接着在项目的根目录建立main入口文件:

随后在终端启动Iris服务:

系统返回:

还等什么?访问http://localhost:5000

万唤千呼始出来。

使用快捷键control+C可以终止服务,随后可以再次运行go run main.go来重新编译启动服务。

Iris项目热重启机制:fresh

众所周知,由于Go lang是编译型语言,每次修改代码之后都需要重新编译,Iris目前没有内置代码热更新的工具,这里我们可以使用三方包:fresh,如此,可以大幅提高我们的Iris开发效率,在非项目目录执行命令:

注意,这里一定不能在项目的目录中执行安装命令,因为go mod模式会认为是项目依赖包,而不会在当前系统的bin目录下生成可执行命令fresh。

随后进入项目目录:

使用fresh命令启动Iris服务:

此时,项目内所有包文件都会被监控,当代码被修改后,会自动触发编译动作,原理大概相当于Python中Tornado框架的事件循环机制。

当我们修改代码之后,fresh会监控到修改动作,然后立刻build:

如此,就不需要手动触发代码的编译了,简单方便。

如果有定制化需求,可以为当前项目添加配置文件runner.conf:

可以定制化诸如监听的文件、编译日志、忽略文件和目录,编译延迟等等操作。

修改定制化配置文件后,针对配置文件启动fresh服务:

如此,fresh服务会根据配置文件来进行监听编译动作。

结语

最低的系统资源开销,最高的单位时间网络请求吞吐量,这是彩虹女神Iris对开发者们最好的馈赠,当我们安装好Iris并且配置好热重启机制时,我们也就走下了Go语言web开发万里长征的第一步,山高路远,城高池深,虽然前路艰险,但就算是莽撞地开始,拙劣地完成,也好过眼高手低而不去做,你同意吗?

引用链接

层次分明井然有条,Go lang1.18入门精炼教程,由白丁入鸿儒,Go lang包管理机制(package)EP10:https://v3u.cn/a_id_233

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20221224A00R7Y00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券