作为 Java 开发有必要系统深入学习下 netty 吗 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
rqxiao
V2EX    Java

作为 Java 开发有必要系统深入学习下 netty 吗

  •  
  •   rqxiao 2022-09-09 09:47:52 +08:00 6817 次点击
    这是一个创建于 1160 天前的主题,其中的信息可能已经有所发展或是发生改变。

    工作几年来没用过。但 rocketmq ,dubbo 等 都用了 netty 。netty 是 java 网络编程的王者。

    目前 nio 和 netty 入门都了解了。netty 是高级 java 迈不去的坎?

    30 条回复    2024-08-15 10:23:36 +08:00
    bootvue
        1
    bootvue  
       2022-09-09 09:50:49 +08:00
    frank1256
        2
    frank1256  
       2022-09-09 09:53:06 +08:00
    需要,但不用需要的这么彻底,比“了解”多一点就行,java 生态里,像我这样的低 level 码农没有机会造轮子。深入学习只是为了能看懂源码,以及面试装逼。
    RedBeanIce
        3
    RedBeanIce  
       2022-09-09 09:56:50 +08:00 via iPhone   1
    楼主的目标是提升自己嘛?

    经过一段时间思考,我认为很多时间学这些东西都没有用,我们更应该活在当下的去学习经常会用到的东西,然后去学习自己感兴趣的 or 未来可能会用到的

    例如我活在当下,可能 mybatis 是最需要研究的,还有 spring ,mysql ,es ,kafka 等等,,,当然每个人所处的岗位是不一样的,楼主和我不一样,请因地制宜。

    最后回复楼主的问题,需要了解 netty ,但是似乎楼主可能处于高段位?我也好像觉得我们公司高工不会 netty
    rockddd
        4
    rockddd  
       2022-09-09 10:02:59 +08:00
    公司的 ws 服务器就是我用 netty 写的,可以去学一下,真的没多难。
    leeyuzhe
        5
    leeyuzhe  
       2022-09-09 10:08:32 +08:00
    用法有必要学习,原理或者源码看个人需求
    assiadamo
        6
    assiadamo  
       2022-09-09 10:33:21 +08:00
    只用 java ,聚焦网络层和性能的需要重点了解,其他的就是学习他的编码风格、设计模式、数据结构啥的

    但更重要的是了解操作系统级的 socket 编程以及 TCP/IP 协议细节
    KevinBlandy
        7
    KevinBlandy  
       2022-09-09 11:15:55 +08:00   1
    我个人觉得 netty 是集并发编程,设计模式,socket 编程,响应式的各种优秀实践于一身的大成。可以好好读一读。
    DeepRedApple
        8
    DeepRedApple  
       2022-09-09 11:22:54 +08:00
    yazinnnn
        9
    yazinnnn  
       2022-09-09 11:30:11 +08:00
    netty

    vertx

    kotlin

    quarkus

    (接受各种 Monad) (拒绝各种 monad) 注重性能 注重云原生 缝合怪

    haskell clojure rust go .net/F#

    范畴论 scheme/racket
    yazinnnn
        10
    yazinnnn  
       2022-09-09 11:32:58 +08:00   6
    netty

    vertx

    kotlin-

    quarkus
    ------------------------------------------------------------------------------------
    (接受各种 Monad)------(拒绝各种 monad)-----------注重性能---------------注重云原生--------------缝合怪
    ------------------------------------------------------------------------------------
    haskell--------------clojure----------------rust--------------------go----------------.net/F#
    -----------------------
    范畴论---------------scheme/racket


    这缩进...
    securityCoding
        11
    securityCoding  
       2022-09-09 13:14:21 +08:00 via Android
    网络框架,学学也可以
    Jooooooooo
        12
    Jooooooooo  
       2022-09-09 13:26:00 +08:00
    重点要学的其实是 nio 那一套.
    awalkingman
        13
    awalkingman  
       2022-09-09 13:38:12 +08:00
    写 java 的程序员有两种,一种是用过 netty 的,一种是没用过 netty 的。
    xianyv
        14
    xianyv  
       2022-09-09 13:40:49 +08:00
    学了学 netty 的皮毛,只是会用,到现在也没研究源码. 混迹在中小公司中,几乎没有用武之地
    zoharSoul
        15
    zoharSoul  
       2022-09-09 14:01:12 +08:00
    没有必要
    keppelfei
        16
    keppelfei  
       2022-09-09 14:11:24 +08:00
    有段时间弄了一个即时通讯的项目,学习了不少,netty 真的很不错。
    iyaozhen
        17
    iyaozhen  
       2022-09-09 14:27:28 +08:00
    有必要,你要是高级 JAVA ,不懂这个说不过去
    adimn
        18
    adimn  
       2022-09-09 15:21:44 +08:00
    netty in action. 学学手动撸一个出来
    huang119412
        19
    huang119412  
       2022-09-09 15:30:07 +08:00
    netty 源码其实挺简单的,比 J.U.C 简单。可以研究一下
    zr8657
        20
    zr8657  
       2022-09-09 15:32:12 +08:00
    有,学 netty 的过程会复习计算机网络和 IOS 知识,我学完以后对网络有了新的认知
    carytseng
        21
    carytseng  
       2022-09-09 16:16:08 +08:00
    我熟悉 netty 是从对接一个 tcp 的设备开始的,在工作中学习是最深刻的。
    wxlwsy
        22
    wxlwsy  
       2022-09-09 20:21:15 +08:00
    如果你想研究 netty 底层可以先写点 nio 和 aio 原生代码的非常有用.
    brust
        23
    brust  
       2022-09-09 20:29:47 +08:00
    @yazinnnn 10

    能介绍下吗
    只用过 netty 和 vertx
    JohnZorn
        24
    JohnZorn  
       2022-09-09 22:04:00 +08:00 via iPhone
    @wxw752 有集群实现方案吗
    urnoob
        25
    urnoob  
       2022-09-09 23:17:26 +08:00 via Android   1
    我是一个用过并且看过源码的人,我是这么认为的
    netty 要看源码就看下从接受链接到 handler 这一条线就可以了。你只要理解数据是怎么过来的就行,不需要细节。这样有助于你使用它。
    这个过程中会涉及到 nio 操作,你可以忽略,转而看下 linux 用 epoll 三函数怎么用会清晰很多。也能学到底层一些东西。
    内存分配那块没必要看。
    rockddd
        26
    rockddd  
       2022-09-10 15:23:06 +08:00
    @choice4 集群实现也简单,业务逻辑上稍微改改就行,根据 channelId 判断长连接是不是连在当前服务实例中。

    如果在当前服务实例就正常处理,否则搞个发布订阅的中间件通知给其他实例,redis,zk,mq 都行。
    mmdsun
        27
    mmdsun  
       2022-09-11 00:18:39 +08:00
    不做研发、不造轮子用不上,看你在公司干的活是什么。

    当然可以面试提升 B 逼格
    xuanbg
        28
    xuanbg  
       2022-09-12 10:09:29 +08:00
    不想自己造个 nio 的轮子替代 netty ,或者基于 netty 进行二次开发,就没必要系统深入地学习 netty 。
    学习任何知识,都要问自己这几个问题,而不是人学亦学。
    1 、你学它有什么用没有?
    2 、投入的时间和精力能给你带来什么好处?
    diagnostics
        29
    diagnostics  
       2024-08-15 10:16:32 +08:00
    @wxw752 #4 netty 本来就是简化网络编程的,怎么简化网络编程这个比较难,要学 IO 模型,网络编程,线程模型,零拷贝等等
    rockddd
        30
    rockddd  
       2024-08-15 10:23:36 +08:00
    @diagnostics #29 哥们你这个坟一铲子挖哪年去了
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1026 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 22:53 PVG 06:53 LAX 14:53 JFK 17:53
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86