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

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

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

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

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

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

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

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

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

    但更重要的是了解操作系统级的 socket 编程以及 TCP/IP 协议细节
    KevinBlandy
        7
    KevinBlandy  
       149 天前   ❤️ 1
    我个人觉得 netty 是集并发编程,设计模式,socket 编程,响应式的各种优秀实践于一身的大成。可以好好读一读。
    DeepRedApple
        8
    DeepRedApple  
       149 天前
    yazinnnn
        9
    yazinnnn  
       149 天前
    netty

    vertx

    kotlin

    quarkus
    ⬇ ⬇ ⬇ ⬇ ⬇
    (接受各种 Monad) (拒绝各种 monad) 注重性能 注重云原生 缝合怪
    ⬇ ⬇ ⬇ ⬇ ⬇
    haskell clojure rust go .net/F#
    ⬇ ⬇
    范畴论 scheme/racket
    yazinnnn
        10
    yazinnnn  
       149 天前   ❤️ 6
    netty

    vertx

    kotlin-

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


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

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

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

    当然可以面试提升 B 逼格
    xuanbg
        28
    xuanbg  
       146 天前
    不想自己造个 nio 的轮子替代 netty ,或者基于 netty 进行二次开发,就没必要系统深入地学习 netty 。
    学习任何知识,都要问自己这几个问题,而不是人学亦学。
    1 、你学它有什么用没有?
    2 、投入的时间和精力能给你带来什么好处?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   实用小工具   ·   1394 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 44ms · UTC 06:47 · PVG 14:47 · LAX 22:47 · JFK 01:47
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.