V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
laoyutang
V2EX  ›  程序员

新阶段使用 go 开发 web 后台怎么样

  •  
  •   laoyutang ·
    laoyutang · 319 天前 · 4986 次点击
    这是一个创建于 319 天前的主题,其中的信息可能已经有所发展或是发生改变。

    目标是一个工业场景下的上位机软件,采集数据做展示,需要实时采集数据上传到数据库中。设备量挺大,感觉 go 的并发场景更合适。

    39 条回复    2023-06-15 08:04:05 +08:00
    laoyutang
        1
    laoyutang  
    OP
       319 天前
    想问下相比于 java ,招人成本和难度怎样。是否会遇到什么坑点。
    mmdsun
        2
    mmdsun  
       319 天前   ❤️ 1
    ——现在大多数公司 99%的场景都还没到要对比编程语言性能上这一步。
    go 的轮子没 java 多,要自己造轮子。相比下容器化,云原生更方便些,招人看地方,小地方不好招人。一线没什么问题。

    真看性能的话,应该选各种性能测评榜的前几名吧。
    Web Framework Benchmarks:
    https://www.techempower.com/benchmarks/#section=data-r21
    lasuar
        3
    lasuar  
       319 天前
    都 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
    coderxy
        4
    coderxy  
       319 天前
    至少 go 的应聘者不会有那么多培训班出来伪造简历的。
    orchid9210
        5
    orchid9210  
       319 天前
    EdgeX 吗?
    voidmnwzp
        6
    voidmnwzp  
       319 天前   ❤️ 1
    @lasuar orm 是硬伤
    laoyutang
        7
    laoyutang  
    OP
       319 天前
    @coderxy 🤣太真实了
    MeteorCat
        8
    MeteorCat  
       319 天前 via Android
    我觉得后台还是 php 那些最好
    dobelee
        9
    dobelee  
       319 天前
    会怎么样?
    会很舒服。
    kkocdko
        10
    kkocdko  
       319 天前
    gorm 挺好用的,gin 或者 net/http 做业务都很方便。生态我是没有碰到过什么问题,很多人说没有轮子,我只是觉得小马过河,试一下能否满足你的需求就行了。

    等等,楼主的这个描述,看样子我觉得你最好先好好评估一下你的需求,不然无法给出关于语言的建议。
    laoyutang
        11
    laoyutang  
    OP
       319 天前
    @orchid9210 对类似物联网平台
    march1993
        12
    march1993  
       319 天前
    go 要是能出一个 gui 库就无敌了……
    yl20181003
        13
    yl20181003  
       319 天前
    没啥问题,就是不是 java 那味,喜欢就香
    opengps
        14
    opengps  
       319 天前   ❤️ 1
    用啥都行
    上位机软件一般并不是并发大,而是循环频率高,用啥语言最后核心逻辑还是单线程高频刷新的思路。因为对接的设备方往往是只支持单链接或者几个连接
    encro
        15
    encro  
       319 天前
    yazinnnn
        16
    yazinnnn  
       319 天前
    没理解标题和内容的关系

    上位机和 web 后台有啥关系?
    ThreeK
        17
    ThreeK  
       319 天前
    这俩个语言都行,Java 就是直接 spring cloud 一套省很多事。Go 也是一堆人用有问题直接查也有结果。
    ideacco
        18
    ideacco  
       319 天前
    @opengps 单线程高循环,那么是不是需要异步处理才行,那就 nodejs 比较好吧
    opengps
        19
    opengps  
       319 天前
    @ideacco nodejs 可能缺少对接第三方的库(比如西门子 PLC ),如果这个因素不影响的话也可以用.
    另外实际工业中,可能对接多个设备,这个时候往往还是多个线程的(每个线程去操作一个设备)
    BinaryDH
        20
    BinaryDH  
       319 天前
    Java 简历到处都是"精通",看到就真的要吐了。
    有云原生相关的的选择 go 准没错!
    yazinnnn
        21
    yazinnnn  
       319 天前
    差不多得了, 工厂上位机你整云原生是吧😅😅😅😅😅😅

    工业场景云原生有啥好处? 我们一年内销毁了 100 万次容器?😅😅😅😅😅😅
    dw2693734d
        22
    dw2693734d  
       319 天前
    go 非常好用,好用得一匹
    LeegoYih
        23
    LeegoYih  
       319 天前
    不应该是团队擅长什么才用什么吗?
    thinkershare
        24
    thinkershare  
       319 天前
    工业场景下的上位机常用的语言是 C#, 而且是性能很差的老版本。这个场景下 go 没啥优势,要轮子没有,性能也不怎么样。
    di94sh
        25
    di94sh  
       319 天前
    我来,在压缩 server 开支的时候 go 比 java 有优势。spring cloud 一套 每个 pod 不带几个 G 。go 随便给点资源能跑了。

    今年主流不是降本增效吗
    xingjue
        26
    xingjue  
       319 天前
    必须 golang 啊 5 年 go 的忠告
    jmllx1963
        27
    jmllx1963  
       319 天前 via iPhone
    直接上 goframe 省事的呢
    thin0
        28
    thin0  
       319 天前
    弱弱的问一句,云原生为什么选 go 呢,有什么特殊的吗,用 java 、c#这些不是也可以容器化吗
    Nazz
        29
    Nazz  
       319 天前 via Android
    @thin0 Java AOT 不太行,JIT 的话启动慢资源占用高,C#不了解。
    saucerman8
        30
    saucerman8  
       319 天前
    @march1993 wails 了解一下?比什么 qt 简单多了...
    cus
        31
    cus  
       319 天前 via iPhone
    Java 的话可以考虑 Vertx ,vertx-mqtt 还不错
    gejun123456
        32
    gejun123456  
       319 天前
    java 用 springboot underdow 开发效率快多了
    lightjiao
        33
    lightjiao  
       319 天前 via iPhone
    一句话,f@ck golang
    fgwmlhdkkkw
        34
    fgwmlhdkkkw  
       319 天前 via Android
    可以写,但是运行时太简单,语法糖几乎没有。工作的话,那捏着鼻子也可以写。自己选,肯定不用。
    ixiaohei
        35
    ixiaohei  
       318 天前
    不知道你这个上位机软件是放到什么环境运行,如果是放到上位机里面,可以从 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 都有可替代的解决方案。
    jitongxi
        36
    jitongxi  
       318 天前
    我是从 16 年开始用 go 的,当时是要做点跨平台而且是关于网络开发的东西,就用了 go ,当时上海也都没几个岗位
    后来岗位渐渐多了。
    如果是 web 场景,还是首推 jvm 系无论 java 还是 kotlin ,中后期的开发和维护成本还是 jvm 系比较丝滑。
    云原生也不是 go 独有的,其他语言都可以入,只不过 go 编译出来的文件比较小。
    go 现在有很多拍簧片转入的,拍簧片的分水岭比较大,招人自己注意就行。
    laoyutang
        37
    laoyutang  
    OP
       318 天前
    @jitongxi 拍簧片什么鬼😅
    uut8
        38
    uut8  
       318 天前
    @laoyutang PHP 吧 :)
    happy321
        39
    happy321  
       317 天前 via iPhone
    webman 试试 性能已经超过 go java 了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1117 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 18:07 · PVG 02:07 · LAX 11:07 · JFK 14:07
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.