Java 生态下想搞大流量下的 ws,是不是暂时只能 netty?

214 天前
 5261

最近项目想上直播和拍卖业务,自身流量也是比较大,想问下目前业界 ws 方案下是不是更推荐 netty 或者有没有其他可以参考的方案呢?

直播推流这快准备用阿里云的,直播上会用到 ws 的也就是评论,拍卖可能就是出价和评论

5158 次点击
所在节点    Java
40 条回复
sagaxu
214 天前
不要直接用 netty ,用 vertx 或者 quarkus
wxw752
214 天前
我们公司是做会议的,直播推流用阿里云再找个云服务商做备份,单一服务商遇到问题的时候哭都来不及。

ws 是用的 netty
cheng6563
214 天前
用 Java 21 虚拟线程同步处理一把梭,别想着那些啥响应式啥的异步啥的提高性能了。
me1onsoda
214 天前
vertx 更好用
Goooooos
214 天前
vertx 底层就是 netty
ychost
214 天前
虚拟线程吧,响应式编程复杂度太高了,甚至比切换 kotlin 的成本都高
ZZ74
214 天前
老老实实用 netty
大流量+响应式编程到时都不知道死哪里...
Karte
214 天前
虚拟线程不推荐使用.
1: 虚拟线程的出现是减少 IO 的产生, 如果是非 IO 操作使用虚拟线程只会增加应用负担.
2: 虚拟线程是通过用户态上进行上下文切换减少内核态切换. 虚拟线程使用 Continuation 实现的, 这个是个对象, 也就是会占用内存. 当你操作越多, 内存占用也会疯涨. 原有平台线程 (Thread) 则是由物理资源 (系统资源) 限制, 而虚拟线程则没有这层限制, 操作不好容易导致 OOM.
Karte
214 天前
就目前的 JDK-21-LTS 的虚拟线程还存在致命问题:

- 在使用 synchronized 场景下会将虚拟线程 PIN 到平台线程 (锁在了某一个线程上)
这是由于当前对 synchronized 的实现需要直到锁当前持有的线程对象. 而虚拟线程是上层包装出来的, 所以必须强绑到某一个平台线程 (Thread) 上才能实现. 如果在 IO 操作下会基本和平台线程无异.

- 在 Medium 中, Netflix 团队遇到使用虚拟线程死锁的情况.
这个问题和 synchronized 关联. 具体可以参考 [Medium Netflix Tech]( https://netflixtechblog.com/java-21-virtual-threads-dude-wheres-my-lock-3052540e231d)
5261
214 天前
@sagaxu 收到
5261
214 天前
@me1onsoda 收到
5261
214 天前
@Goooooos 收到
5261
214 天前
@Karte 还是哥专业啊~ 理论上我们新项目不会上新的 jdk 版本,还是继续用 Java8
5261
214 天前
有的时候我觉得 Java 对于中小企业真是一种负担,明明可以用 Go 来做业务开发,能减少不少服务器成本!
ZeroDu
214 天前
别搞 java8 了,起码 17 起步,现在各个生态配台早都跟上了。netty 是稳健的选择多少年市场验证过了
halov
214 天前
https://github.com/tywo45/t-io 要不看看 tio 不过好像这个框架用的人不多 评价不高
ychost
214 天前
@Karte #9 JDK24 修了 synchronized 问题
5261
214 天前
@ychost 那 JDK21 的人不就是小白鼠了!
5261
214 天前
@ZeroDu 升级 JDK 不是说我想升就能升,企业用 Java 要的是稳定!
5261
214 天前
reactor netty 这玩意和上面提到的 vertx 有啥区别呢?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1119504

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX