目标是一个工业场景下的上位机软件,采集数据做展示,需要实时采集数据上传到数据库中。设备量挺大,感觉 go 的并发场景更合适。
1
laoyutang OP 想问下相比于 java ,招人成本和难度怎样。是否会遇到什么坑点。
|
2
mmdsun 2023-06-13 14:38:55 +08:00 1
——现在大多数公司 99%的场景都还没到要对比编程语言性能上这一步。
go 的轮子没 java 多,要自己造轮子。相比下容器化,云原生更方便些,招人看地方,小地方不好招人。一线没什么问题。 真看性能的话,应该选各种性能测评榜的前几名吧。 Web Framework Benchmarks: https://www.techempower.com/benchmarks/#section=data-r21 |
3
lasuar 2023-06-13 15:10:37 +08:00
都 2023 了,还有人在怀疑 go 开发 web 后台?
常用的 Go Web 框架: Gin:Gin 是一个快速、简单且具有高性能的 Web 框架。它提供了简洁的 API 设计和丰富的中间件支持,使得构建 Web 应用变得高效和灵活。Gin 是目前在 Go 社区中使用广泛的框架之一。 Echo:Echo 是一个轻量级的 Web 框架,具有简单易用的 API 和快速的路由器。它注重性能,并且提供了丰富的功能和插件支持。 Beego:Beego 是一个全功能的 Web 框架,它包含了路由、ORM 、模板引擎等多种功能。它具有较高的可扩展性和稳定性,并且支持 MVC 架构。 Revel:Revel 是一个全栈的高性能 Web 框架,具有自动化路由、模板热加载、ORM 等特性。它借鉴了 Ruby on Rails 的设计理念,提供了快速开发和可靠性的特点。 Fiber:Fiber 是一个类似于 Express.js 的 Web 框架,专注于性能和路由的简单性。它具有快速的路由器、中间件支持和异步处理能力。 FastHTTP:提供了简洁的 API 和可扩展的中间件支持,以及高性能的路由器。它适用于需要处理大量并发请求的场景,如高流量的 Web 服务、反向代理服务器等。 常用的 Go Orm 框架:gorm 、ent ,上面的部分 web 框架自带 orm Go tcp/udp 框架:Zinx 、Go-Netty 、Gnet 、Kcp-go(udp) Awesome-Go (10w star): https://github.com/avelino/awesome-go |
4
coderxy 2023-06-13 15:15:10 +08:00
至少 go 的应聘者不会有那么多培训班出来伪造简历的。
|
5
orchid9210 2023-06-13 15:20:10 +08:00
EdgeX 吗?
|
8
MeteorCat 2023-06-13 15:24:04 +08:00 via Android
我觉得后台还是 php 那些最好
|
9
dobelee 2023-06-13 15:24:19 +08:00
会怎么样?
会很舒服。 |
10
kkocdko 2023-06-13 15:24:47 +08:00
gorm 挺好用的,gin 或者 net/http 做业务都很方便。生态我是没有碰到过什么问题,很多人说没有轮子,我只是觉得小马过河,试一下能否满足你的需求就行了。
等等,楼主的这个描述,看样子我觉得你最好先好好评估一下你的需求,不然无法给出关于语言的建议。 |
11
laoyutang OP @orchid9210 对类似物联网平台
|
12
march1993 2023-06-13 15:30:16 +08:00
go 要是能出一个 gui 库就无敌了……
|
13
yl20181003 2023-06-13 15:35:17 +08:00
没啥问题,就是不是 java 那味,喜欢就香
|
14
opengps 2023-06-13 15:41:50 +08:00 1
用啥都行
上位机软件一般并不是并发大,而是循环频率高,用啥语言最后核心逻辑还是单线程高频刷新的思路。因为对接的设备方往往是只支持单链接或者几个连接 |
15
encro 2023-06-13 15:48:06 +08:00
|
16
yazinnnn 2023-06-13 15:56:12 +08:00
没理解标题和内容的关系
上位机和 web 后台有啥关系? |
17
ThreeK 2023-06-13 16:03:44 +08:00
这俩个语言都行,Java 就是直接 spring cloud 一套省很多事。Go 也是一堆人用有问题直接查也有结果。
|
19
opengps 2023-06-13 16:25:12 +08:00
@ideacco nodejs 可能缺少对接第三方的库(比如西门子 PLC ),如果这个因素不影响的话也可以用.
另外实际工业中,可能对接多个设备,这个时候往往还是多个线程的(每个线程去操作一个设备) |
20
BinaryDH 2023-06-13 16:48:10 +08:00
Java 简历到处都是"精通",看到就真的要吐了。
有云原生相关的的选择 go 准没错! |
21
yazinnnn 2023-06-13 17:26:21 +08:00
差不多得了, 工厂上位机你整云原生是吧😅😅😅😅😅😅
工业场景云原生有啥好处? 我们一年内销毁了 100 万次容器?😅😅😅😅😅😅 |
22
dw2693734d 2023-06-13 17:31:45 +08:00
go 非常好用,好用得一匹
|
23
LeegoYih 2023-06-13 17:41:11 +08:00
不应该是团队擅长什么才用什么吗?
|
24
thinkershare 2023-06-13 17:44:33 +08:00
工业场景下的上位机常用的语言是 C#, 而且是性能很差的老版本。这个场景下 go 没啥优势,要轮子没有,性能也不怎么样。
|
25
di94sh 2023-06-13 18:59:36 +08:00
我来,在压缩 server 开支的时候 go 比 java 有优势。spring cloud 一套 每个 pod 不带几个 G 。go 随便给点资源能跑了。
今年主流不是降本增效吗 |
26
xingjue 2023-06-13 19:18:53 +08:00
必须 golang 啊 5 年 go 的忠告
|
27
jmllx1963 2023-06-13 19:23:57 +08:00 via iPhone
直接上 goframe 省事的呢
|
28
thin0 2023-06-13 19:29:51 +08:00
弱弱的问一句,云原生为什么选 go 呢,有什么特殊的吗,用 java 、c#这些不是也可以容器化吗
|
30
saucerman8 2023-06-13 19:39:25 +08:00
@march1993 wails 了解一下?比什么 qt 简单多了...
|
31
cus 2023-06-13 19:44:52 +08:00 via iPhone
Java 的话可以考虑 Vertx ,vertx-mqtt 还不错
|
32
gejun123456 2023-06-13 19:53:48 +08:00
java 用 springboot underdow 开发效率快多了
|
33
lightjiao 2023-06-14 01:08:22 +08:00 via iPhone
一句话,f@ck golang
|
34
fgwmlhdkkkw 2023-06-14 01:44:01 +08:00 via Android
可以写,但是运行时太简单,语法糖几乎没有。工作的话,那捏着鼻子也可以写。自己选,肯定不用。
|
35
ixiaohei 2023-06-14 09:57:57 +08:00
不知道你这个上位机软件是放到什么环境运行,如果是放到上位机里面,可以从 cpu 、内存和硬盘资源利用对比一下估计有些意义。以前也有过 php 开发的 web 放到上位机里面的经历,对我来说可能如下几点对比有点意思。
1. 上位机内存一般都比较小,java 因为 jvm 原因内存消耗较大,如果使用 spring 生态源那这个消耗更加恐怖。这个 golang 就比较有优势 2. 另外对于硬盘,或者软件安装需要的体积,完整版的 jvm 不算小、更小的体积需要使用模块化自行裁剪;另外对于 web 开发,看基于 servlet 那套搞,还是用 netty 撸;基于 servlet 那套需要使用 servlet 容器,tomcat 这套就比较重和大、jetty 那套比较小,但是方案不是很多。用 netty 撸又太原始,而且异步编程掌握难度比较高 3. java 的部署也是比 golang 复杂,除非使用 spring boot ,或者类似的单体框架,打成一个包直接 java 命令就可以启动会比较方便。golang 是直接编成 native exec 程序,而且无任何依赖(有些版本依赖 glibc ),丢进上位机就可以运行了。 4. 对于网络这块、golang 和 java 都擅长网络开发。但是对于网络高并发这块,还是 golang 比较有优势,java 可能要使用 netty 这种事件驱动编程吞吐率才好; golang 是天生支持高并发,底层是协程+epoll 实现,对于开发来说还是同步编程,比较易溶理解和掌握。 5. 另外对于生态:java 这块确实是最好的,但是还是要看应用场景、有些场景 golang 都有可替代的解决方案。 |
36
jitongxi 2023-06-14 10:29:53 +08:00
我是从 16 年开始用 go 的,当时是要做点跨平台而且是关于网络开发的东西,就用了 go ,当时上海也都没几个岗位
后来岗位渐渐多了。 如果是 web 场景,还是首推 jvm 系无论 java 还是 kotlin ,中后期的开发和维护成本还是 jvm 系比较丝滑。 云原生也不是 go 独有的,其他语言都可以入,只不过 go 编译出来的文件比较小。 go 现在有很多拍簧片转入的,拍簧片的分水岭比较大,招人自己注意就行。 |
39
happy321 2023-06-15 08:04:05 +08:00 via iPhone
webman 试试 性能已经超过 go java 了
|