Golang Go语言适合开发企业的业务系统么?
Golang Go语言适合开发企业的业务系统么?
我的意思是企业的业务系统,不是底层中间件那种的,业务系统注重的是业务逻辑吧,业务逻辑复杂,增删改查什么的比较多,业务系统用 spring 的比较多吧。
那用 GO 开发 spring 这种的企业系统,痛点在哪呢,工具少,造轮子多?
gorm 没有竞争对手,但 gorm 本身就很多坑
另外业务系统复杂性最终其实都压在了数据库、队列 /缓存、分布式上,而这些解决方案都是跨语言的,所以对 go 来说其实还好。还有一些边角小坑是可能会用到一些不知道有没有人维护的 package,不过这个规避起来相对简单
其它的还都挺香的,尤其是有 cgo 这个后手,实现性能计算的模块没有什么选型负担
感觉 go 还是挺适合写这种业务系统的,泛型是个问题但是问题不大,interface 能凑合着用
这两年 go 的库也逐渐多起来了,常用的基本都能找到
不过也有问题就是要考虑下,后续接手多人用不用 go
当然可以,字节内部系统都是 go 开发的,就是开发起来确实没有 java 系的生态好,gorm 基本是个残废,很多复杂逻辑写起来没有 spring 方便。
适合。
没 java 合适,首先没有 flowable 那种流程引擎,orm 比不上 jpa 的各种框架。而且企业业务系统一般并发不高,难点都在业务上,go 没什么优势。
gorm 快要有 v2 版本了,据说重构了,等正式版发出来看看吧
最后一句话很怪异,spring 就属于“底层中间件”的范畴,用 go 开发个 spring 说起来蛮适合的。
如果是业务系统也还是看具体,go 语言层面的主要短板是为了语法简洁大幅牺牲了语义表达能力。如果你的业务对象数据结构稳定,业务流程不很依赖于对象成员的值,那么 go 还是不错的。反之则不适合。
看什么企业,传统企业的要找后手维护,你能保证别人能招到 go 做二开?
有个问题, 像 <a target="_blank" href="https://github.com/eddycjy/go-gin-example/blob/master/models/article.go" rel="nofollow noopener">https://github.com/eddycjy/go-gin-example/blob/master/models/article.go</a>
这种每个 model 都基本是类似的方法,怎么用 interface 搞成只有一个呢?
没必要
go 写业务要靠 generation orm 的话 ent 是个好的方向( Go2 之前
不合适,人员变动项目都无法维护
java 技术栈人好找啊…你 go 开发完.后面维护…不好招人啊…好的你给不起高价,差的是真不会…
Go 的好处是那种 好的差的 如果写业务逻辑的话 ,差距不会很大,语言限定的死,没有那么多黄花的语法糖,方便维护,但是需要这个人会 Go
放心去用吧,亲自试过了,一点问题没有。就算公司程序员不会 go,一个星期也能直接上项目。除非程序员能力太差
struct 嵌套啊
整体来说没有问题,但是!注意点很多。
比如,如果你用的是 gin 你要注意他不兼容 RESTful API,项目管理的时候要主要循环引入。
还有一些处理 JSON 的小坑,gorm 的一些坑。
这些都搞清楚了之后就会发现,开发效率和服务性能都很舒爽。
用 go 是为了减少可替代性嘛
大佬给个例子,这种用法我不会
我非常不建议用 go,首选 Java 。理由是生态问题。
企业应用开发的特点是,用户数量、并发量、数据总量都很小(相比于互联网常见都千万并发、百万 TPS )。
运维环境一般都是单点部署,服务器硬件也就是一般,没有上百 G 的内存给你用。
在开发过程中的难点,主要是因为复杂的权限关系、数据隔离性带来的复杂度。如果没有完善的业务权限框架,这东西改起来成本就太高了。
PS:工程师做业务系统常见的问题是,从业务流程入手,观察业务数据的流动,而忽略了“角色”的责任边界。做业务系统的时候,一定要先从人下手,分析每个人承担哪些角色,这些角色分别的责任是什么。业务系统里“用户”最小的粒度是“角色”而不是人。人员可以离职可以调岗,角色是不会变化的。
我个人建议也确实是首选 Java,因为一般企业业务系统不同于互联网化业务系统,并发不需要太高但是需要复杂的统计报表模块设计,一般需求变化跟随业务进行,经常会 180 度大转弯,需要大量轮子辅助开发,Go 生态目前对比 Java 肯定是不如的,如果你熟悉 Java,首选 Java 并没什么不对。
企业应用建议用 java,毕竟生态第一,程序员可替代性也高
Golang 在这种场景有解决方案的
写一堆 interface,然后直接断言就行了.Golang 的断言只要有对应方法就行,不管是什么类,也不管抽象
还是不会
cgo 这种一般 go 项目不会用吧,这么在乎性能,一开始也不会选 Go 了~
完全可以,但是成本不一样
这样理解,java 一个普通应届生能写好的逻辑,换做 GO 写,要写好无 bug 可能至少得一年经验以上的人
企业内部应用没什么性能需求吧…
我觉得是非常合适的,曾经在某短视频巨头写过一段时间 java,我对 java 在极限场景可以压榨的性能还有一些生态还是印象非常深刻的,但其实 go 对这些场景也可以不错的覆盖,让我觉得很实用的一些点还是资源占用可以很低,这是 java 比较难做到的,我司的大部分服务的 docker image 打包出来都可以在 40m 一下,运行时的内存占用也在 100m 左右,有状态的服务会略多,这对于业务刚起步的初创公司来说其实可以节省一大笔费用,同时也意味着你在单个节点上可以做的事情更多,如果你的场景是财大气粗的大厂,那这些确实算不上优点。
写增删改查用啥泛型
等 GraalVM 成熟了. Java 也能做到 docker 镜像小了
借楼请问一下 go 比较适合什么样的场景,最近准备学一下 go
肯定可以,不行也得强行可以,万物皆可 go 。Java 这老古董早该入土了:doge
crud 也要泛型的吧,比如分页,没有泛型的话,每个 model 写一次
#29 原文:“zjsxwc 写增删改查用啥泛型”
回复:
写增删改查就没有逻辑复用了吗?要逻辑复用 go 只能复制黏贴,弄得多了,后期要改,还不好维护。
代码生成啊
大兄弟,找到了你说的“有个问题, 像 <a target="_blank" href="https://github.com/eddycjy/go-gin-example/blob/master/models/article.go" rel="nofollow noopener">https://github.com/eddycjy/go-gin-example/blob/master/models/article.go</a>
这种每个 model 都基本是类似的方法,怎么用 interface 搞成只有一个呢?”这种解决方法了吗?
Golang(又称Go语言)非常适合用于开发企业的业务系统,其多方面的特性使其成为企业级应用开发的一个优选。
首先,Go语言具有极高的性能。它编译后的程序运行速度快,且内存占用小,这对于需要处理大量数据和高并发请求的企业系统来说至关重要。这意味着企业可以使用更少的硬件资源来支撑相同规模的业务,从而降低运营成本。
其次,Go语言提供了简洁而强大的标准库和工具链。这些库和工具链涵盖了网络编程、并发控制、文件操作等多个方面,使得开发者能够更高效地构建和部署企业系统。同时,Go语言的并发模型(如goroutines和channels)使得处理并发任务变得简单且直观,这对于提升系统的响应速度和吞吐量非常有帮助。
此外,Go语言还具有良好的可维护性和可扩展性。其清晰的语法和严格的类型检查有助于减少代码中的错误和潜在漏洞,使得系统更加稳定可靠。而Go语言的模块化设计则使得系统易于扩展和升级,以适应不断变化的业务需求。
最后,Go语言社区活跃且支持丰富。大量的开源项目和文档为开发者提供了丰富的资源和参考,使得学习和使用Go语言变得更加容易。同时,许多企业也已经开始采用Go语言来构建其核心业务系统,这进一步证明了Go语言在企业级应用开发中的价值和潜力。
综上所述,Golang非常适合用于开发企业的业务系统。