golang 快速开发,应该选择 go-zero,还是 Iris?

2023-02-21 08:58:11 +08:00
 NCE

以前项目都是基于 java 的,本着节约服务器资源(省钱)的思想,新项目想用 golang 开发,这两个框架选择哪个比较好?

考虑点主要有:

  1. 稳定
  2. 技术栈全面,主要是 web api

大家给推荐一下,说一下理由?

10812 次点击
所在节点    程序员
92 条回复
ixixi
2023-02-21 12:02:07 +08:00
长期活跃+稳定的 api 很重要; 我投 gin
xsen
2023-02-21 12:05:18 +08:00
go-zero
liuhan907
2023-02-21 12:23:13 +08:00
创业公司,而且还是用过 Java 那一套的,还是纯 WebAPI 的业务,你就用 .NET 那也比 Go 来的更方便啊。。。
jinzhe
2023-02-21 12:45:19 +08:00
gofiber 路过
Rainshaw
2023-02-21 12:50:47 +08:00
可以看看 hertz 和 kitex ,我最近在研究中,看文档感觉还可以
patrickyoung
2023-02-21 13:09:25 +08:00
Gin 和 echo
czyt
2023-02-21 13:15:32 +08:00
kratos
chendy
2023-02-21 13:19:10 +08:00
java 农路过,表示服务器资源一般没有人力资源贵…
RedisMasterNode
2023-02-21 14:07:00 +08:00
重新看了一眼楼主需求:
本着节约服务器资源(省钱)的思想

觉得这个不应该换 golang...
caotian
2023-02-21 14:26:02 +08:00
个人的一点经历,仅供参考。
身在小公司, 做过不少创业项目, 几年前 php, springboot, .net core 都做过, 并且目前还在维护着, 但近两年的新项目后端全部使用 gin 了。
选择 gin 主要是以下几个因素, 跟其它几个语言 /框架比起来:
一、php 写的早, 当时还是 php5 写的项目, 维护起来有点痛苦, 特别是经历过几拨人接手过的项目, 数组里面到底有什么太费脑子了。
二、springboot 太消耗资源了, webapi 项目基本上>1G 的内存消耗, 有个项目上了 cloud 微服务, 十来个服务,4 核 16G 的阿里云刚好能跑一套部署。我的项目主要是企业用户,CRM, 进销存等, 访问压力并不大,但是客户用起来,很多会要求有定制内容,定制多点了,就需要单独开发独立部署,成本比较高,如果成本转嫁给客户,客户会觉得软件比较贵,一年多 5000 块钱服务器费用,很多客户会犹豫。而现在容器化部署 go 为主的项目, 一套软件部署 3 个容器, 2 个 nginx:alpine, 1 个 gin, 镜像都只有一二十兆, 内存消耗 3 个容器加起来不到 100 兆, 多台服务器共享负载均衡带宽, 共享 RDS 数据库, 独立部署的成本可以压缩的非常低。
三、.net core 我是从 asp 时代就入行做网站, 后来 asp.net 1.1, 2.0 都用过做过很多中小型网站, 后来几年没接触.net, 但是对.net 还是有情怀的, .net core 发布后, 拾起来做了几个小项目, 并没有特别惊艳的地方, 坦白说 spring 那一套内容需要用到的都学会就已经消耗了大量的精力, .net core 一样有太多需要学习的东西, 年龄大了并不想投入太多时间在这种学习上了, 最终还是选择了 go 。选择 go 的原因就是部署成本低, 语言简陋一点并不是大问题, 说 go 不能写业务的就更不知道为什么了, 有什么样复杂的业务 go 不能写的? asp 都开心地写过几年, go 比 asp 强多了, 而且忘掉架构, 忘掉设计模式, 用脚本一样的写法写 webapi, 做个快快乐乐的 curd boy, 早点下班带孩子, 不是很开心滴么。

题外话,由于项目需要,有些服务需要开发各种能运行在不同终端上的程序, 比如 windows 上的读卡、串口服务, 甚至运行在路由器上的采集程序, 通过 wifi, 蓝牙做数据采集, 这些以前都是.net 开发的, 但是部署起来并不快乐, 很多客户或者设备自带的 windows7 非常老, 甚至没有接入互联网, 部署一个应用会缺少各种各样的依赖, 有的要安装 vc++运行库, 有的要安装系统更新, 每次都提心掉胆地安装, 就怕这几十万的设备带的电脑系统要是挂了, 客户找厂家上门可是要大价钱的,关键还经常报错安装不上依赖。但是自从把这些采集程序换成 go 开发成 windows 服务, 兼容性出奇的好, 从来没需要单独安装什么依赖, 各种架构的 arm, misp 路由器上跑 go 开发的程序资源消耗也非常小, 体验非常好。
hopingtop
2023-02-21 14:52:47 +08:00
如果你还在问选择框架的问题,那么我建议你选择 Gin
理由如下几点:
1.你可能写 Go 语言时间还不长,过于复杂的框架会导致你的学习 /解决问题成本上升,Go 也并不是大家说的那么简单。
2.Gin 的生态比较丰富,虽然我们常用的就是用他的 route ,但是他还有一个 gin-plugin 的一个仓库,里面有比较多的开源中间件,可以使用。
3.Gin 这东西本质上比较简单,而且经过大量项目验证,坑极少,觉得不好用的呢,大多数只是不习惯于罢了,因为可能会被其他框架的写法影响。
4.对于 WebAPI 来说,成本最低,不会依赖于任何东西,对于你以后想转 RPC ,这个其实更多的是考量你代码的组织。我们很多时候,一个 server 方法,是既提供 RPC 调用也提供 HTTP 调用,就是 Handler 转换一下。
5.对于一个东西依赖越少,未来越好做改变,Gin 大概率你也只会用到他的,route 、validator 、middleware 、context ,这些东西大多数都是在你业务逻辑之外的,如果哪天 Gin 不爽了,你大可以换成其他的。

关于选语言,如果你提出 Go 了,就选择它吧,对于创业公司来说,性能和成本真的是很友好,唯一缺点就是有些城市不太好招人。
Desdemor
2023-02-21 15:42:05 +08:00
gin 简单,
goframe 轮子组件多
dayeye2006199
2023-02-21 16:13:48 +08:00
推荐 echo ,简单,常用的功能开箱使用
apkapb
2023-02-21 16:17:32 +08:00
自己基于 gin 封装一下,然后写一些 模板代码的生成器

这样写起来非常棒 https://github.com/Xwudao/neter-template
sunshengkai27
2023-02-21 16:30:44 +08:00
@zpfhbyx #28 使用 fiber 极大概率会触发 evictCount panic, 最近生产环境遇到了后改成 gin 就正常. 推测是 fasthttp 的问题. https://github.com/golang/go/issues/43048#event-4080325045
jinsongzhao
2023-02-21 17:50:43 +08:00
@chendy 虽然服务器资源比人便宜,但是重构能力是瓶颈,面对一堆 java 写的屎山,首先得有个能让它脱胎换骨的人,新手可以利用语言优势,缩短于高手的差距。
guanhui07
2023-02-21 19:08:00 +08:00
建议 gin
daiv
2023-02-21 19:43:41 +08:00
我想要一个 纯 API 的, 会自动带 swagger ...
daiv
2023-02-21 19:45:44 +08:00
@liuxu #38 @jinzhe #44 fiber 无法加载 go-swagger
fxjson
2023-02-21 20:13:42 +08:00
go zero 跟牛掰

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/917798

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX