转眼 5 年,两个当初写着玩的 go 项目不知不觉加了很多功能,合计也有 3000 多 star 了,开心又疲惫,当作是职业生涯的纪念 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
lesismal
V2EX    程序员

转眼 5 年,两个当初写着玩的 go 项目不知不觉加了很多功能,合计也有 3000 多 star 了,开心又疲惫,当作是职业生涯的纪念

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

    两个项目分别是: https://github.com/lesismal/arpc

    https://github.com/lesismal/nbio

    2024 年到现在的主要变化:

    arpc

    1. 一点缝缝补补
    2. 顺便支持了 stream 。我个人觉得 stream 比较鸡肋,因为原本已经支持双向 Call/Notify 在绝大多数场景都比 stream 还方便,需要 stream 的场景并不多。

    nbio

    1. 优化 http/websocket 解析相关的逻辑和对象,降低了内存使用和 gc 压力,配合 SetMemoryLimit 让,在 4c 的 ubuntu 虚拟机上,百万连接 websocket 1k payload 压力测试,内存占用能控制在 1G 以内、tps 10w 。
    2. 优化了 bufferpool ,[]byte 变为 *[]byte ,减少小对象频繁分配,降低 gc 压力,这是首次 sub package interface 定义变更、与之前版本不兼容,但 nbio 主 package 仍然保持兼容性,除非自定义了 mempool 否则用户因该也不需要对代码做改变。
    3. 改掉了一些 buffer 相关的低概率脏内存 bug

    当初这两个项目都是写着玩的

    两年多前,把 arpc 也拿去 rpc benchmark 仓库去跟其他知名项目对比了下,也算是跑出了个不错的成绩,比较公平的三方测试可以请看鸟窝老师这里: https://colobu.com/2021/08/01/benchmark-of-rpc-frameworks/ https://colobu.com/2022/07/31/2022-rpc-frameworks-benchmarks/

    nbio 是为了解决 golang 海量连接场景的内存与 GC 压力、以及对应的 OOM 和 STW 问题,暂时算是 golang 社区里功能比较齐全的独一份。

    arpc 实现很简单、没费太多精力,但 nbio 花费了太多精力,这几年身体都有点垮了。还想给 nbio 支持 HTTP2.0/QUIC ,但业余时间用爱发电,目前是没精力了,因为实在是太耗精力了。

    5 年,40+的年纪,也算是程序员职业生涯末期,秋后的蚂蚱了,给自己留个纪念。

    感谢所有我仓库的用户的支持, 感谢所有 issue pr 以及经常交流讨论的朋友们, 我个人精力有限, 大家的关注支持和交流让我的仓库完善了很多!

    提前祝大家新年快乐,身体健康,诸事顺遂!

    17 条回复    2025-02-17 20:57:47 +08:00
    mysunshinedreams
        1
    mysunshinedreams  
       264 天前   1
    很棒,加油,蛇年快乐,万事如意!
    gongquanlin
        2
    gongquanlin  
       263 天前   1
    大佬大佬,很久之前就 star 了 nbio ,拜读
    lesismal
        3
    lesismal  
    OP
       263 天前
    @gongquanlin #2 感谢支持! 欢迎多来交流!
    prosgtsr
        4
    prosgtsr  
       263 天前 via iPhone   1
    nbio ,确实 nb
    arphone
        5
    arphone  
       263 天前   1
    很棒,加油!
    spritecn
        6
    spritecn  
       263 天前   1
    afk 帖啊...同快 4 张,读的心酸
    wkong
        7
    wkong  
       263 天前   1
    大佬加油!
    pangzipp
        8
    pangzipp  
       263 天前   1
    大佬加油!
    abcde123456789
        9
    abcde123456789  
       263 天前 via Android   1
    这是大佬
    kingcanfish
        10
    kingcanfish  
       263 天前   1
    新年快乐 每次都能在大佬和 v 友的“激情探讨” 中学到很多新知识~
    huig
        11
    huig  
       263 天前   1
    后续干嘛去 我不想打工了
    icode1688
        12
    icode1688  
       263 天前   1
    牛逼
    ziyue002
        13
    ziyue002  
       263 天前   1
    很棒,加油!
    lesismal
        14
    lesismal  
    OP
       262 天前
    @prosgtsr 这算是我职业生涯里的最佳命名了

    @spritecn 末期末期, 还没全退, 但是准备中...

    @kingcanfish "激情探讨", 做清醒的自己~

    @huig 来来来, 兄弟一起干 BA
    stabc
        15
    stabc  
       262 天前
    为什么两个加起来一个 issue 都没有?
    lesismal
        16
    lesismal  
    OP
       259 天前
    > 为什么两个加起来一个 issue 都没有?

    @stabc
    不是一个 issue 都没有, 而是一个 Open 状态的都没有. 兄弟你查 Closed 状态的, 到目前 arpc 有 47 个, nbio 有 242 个.
    一个 Open 状态的都没有有两个原因:
    1. 作者个人形单影只, 宣传力度不够, 吹个牛说, 虽然功能性能个方面都算是同领域 Top 级的, 但知名度太低, 知道的人少, 来 issue 的人也就少. 看看其他一些同领域的, 功能比这个少, 性能不比这个强, 但是 star 比这多的多, issue 不解决比这多的多
    2. 每次有 issue, 作者都尽量迅速答复和解决, 所以除了极个别迷案无果而终, 绝大多数都已经解决了后就关闭了
    cooooing
        17
    cooooing  
       234 天前 via Android   1
    nbio 好用,确实 nb
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3152 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 39ms UTC 10:55 PVG 18:55 LAX 03:55 JFK 06:55
    Do have faith in what you're doing.
    ubao 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