跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 现在有既能处理 http 服务又能处理 tcp 服务的成熟框架么?
未分類
15 5 月 2020

现在有既能处理 http 服务又能处理 tcp 服务的成熟框架么?

现在有既能处理 http 服务又能处理 tcp 服务的成熟框架么?

資深大佬 : tctc4869 5

一个项目有 http 服务和底层的 tcp 服务,想过用 spring boot 启动后异步启动 netty,但是有人建议一个进程最好不要挂两个服务端程序。如果技术菜,netty 内存管理处理不好,就容易死掉。

那有没有一个封装好的网络服务框架,既能处理 http 服务,又能处理 tcp 服务处理,处理策略像 netty 可以设置两个 handler,一个无法处理,可以交给下一个处理。如果侦测到是 http 请求就交给 http 处理,如果不是,就交给底层的 tcp 处理器处理

当然解决方式,除了把 http 和 tcp 处理挂在一个程序,还有一个方式,把一个进程服务拆分两个进程服务。但这种要面临进程服务管理上的问题

netty 自带 HttpObjectAggregator,我没用过,有用过的么,加了这个,如果还得要添加自定义 tcp 处理的话,会有什么问题么,除了 netty,还有其他的方式么?比如 vert.x 那个?那个有谁用过么?

大佬有話說 (26)

  • 資深大佬 : wysnylc

    socket 吧

  • 資深大佬 : diggzhang

    akka-http?

  • 資深大佬 : est

    没有。

  • 資深大佬 : catror

    用 websocket 不就好了?

  • 主 資深大佬 : tctc4869

    @catror websocket,websocket 能处理非电脑平板手机的客户端交互么呢?比如客户端是单片机,这种情况呢?

  • 資深大佬 : heiybb

    试试这个?
    https://smartboot.gitee.io/book/

  • 資深大佬 : donyee

    你这是同一个端口处理请求的吗? vertx 封装了 http tcp 模块的,http 部分比较好用,tcp 部分未使用过

  • 資深大佬 : sagaxu

    vertx 了解一下,常见协议都支持了,还能用 kotlin 协程

  • 資深大佬 : Kakajing

    Netty——One framework master all Framework

  • 資深大佬 : guixiexiezou

    我猜主估计是想同时监听 tcp,同时又想要的 http 回调吧。一般 java 游戏服务端的操作是:用 netty 处理普通 tcp,嵌入一个 tomcat 或者 jetty ( sparkjava 是最简单了的方式了)处理 http…既简单又高效

  • 資深大佬 : catror

    @tctc4869 可以,websocket 哪都能用。看你项目原始需求是啥,如果只是需要一条长链接数据通道,我觉得用 websocket 是最简单的。

  • 資深大佬 : horsea

    我也有这个疑问,有请游戏开发行业的人解答下,游戏 websocket 用 netty,http 用什么框架集成呢?

  • 資深大佬 : luozic

    vertx 底层就是 netty,不少 Java 框架都是用 netty 做底层,按你的需求,找个支持得框架去抄代码。

  • 資深大佬 : Malthael

    我用的就是 spring boot + netty 处理 http 、tcp 、websocket 啥的,挺好的啊。

  • 資深大佬 : ffLoveJava

    @Malthael 请问只用 netty 一个端口就能都相应 http 、tcp 、websocket 吗? 不用再用 tomcat 吗

  • 資深大佬 : Malthael

    @ffLoveJava #15 不能,我都是分端口处理的

  • 主 資深大佬 : tctc4869

    @Malthael 我害怕的是我 netty 内存管理技术菜,导致内存管理处理不好,致使 http 或 tcp 服务死掉,因为我遇到过,不过不是 tomcat+netty,而是 undertow+netty 做一个服务端信息中转站,有几次出现进程服务不能正常使用,只能关闭重启再来,后来把 undertow 的 http 服务和 netty 服务拆成两个进程服务,挂了很多天这个问题就没有了。

  • 資深大佬 : zyxcompany

    frp

  • 資深大佬 : enrio

    @tctc4869 websocket 也是可以的。不要把它想得就一定要在浏览器上跑,它归根到底也只是一个应用层协议。我就用过 Java 的 websocket 客户端。

  • 資深大佬 : javapythongo

    sprongboot + netty

  • 資深大佬 : zoharSoul

    netty vertx

  • 資深大佬 : dogfeet

    akka-stream,前面 gateway 将 tcp,http,websocket 消息统一转换成内部消息。
    剩下的就是一致的消息进入到流中统一处理。后期换可以方便的扩展成集群模式。

  • 資深大佬 : fkdog

    @tctc4869 因为菜就不去实践了。。。?

  • 資深大佬 : horsea

    @Malthael spring boot + netty 是写到 1 个项目里,还是说 2 个项目。

  • 資深大佬 : Malthael

    @tctc4869 #17 没碰到过内存的问题,不知道你是怎么部署的。
    @horsea #24 一个项目,netty 管理的 tcp 和 websocket 在 springboot 里是定义成服务启动的。

  • 資深大佬 : cs419

    如果你写多线程 别人提醒你可能有死锁的问题
    你想着要不我用多进程吧
    那担心是多余的 这说明你都没用上锁 那也就不会出现死锁

    用 netty 怕遇上内存泄漏的话
    多虑了 你应该还没用上 内存直接访问的 api
    你担心内存管理的不好 程序挂掉 那你换个框架 该挂还是挂

    服务拆成两个 java 进程就不挂掉 并不能说明就是 netty 的内存处理不当
    或许 你一个 java 进程 但 http tcp 各用一个端口 也不会挂掉

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具