好奇一问,对于工作 2 年以上的人去学 reactor-core 那套异步框架,难学吗?

2021-05-08 11:01:02 +08:00
 JamesChen
由于我个人平日在服务端几乎只写异步的 workflow (就是一个 request 进来,各种处理,然后一个 response 回去。用 reactor-core 那套),写异步代码就跟其他人写同步代码一样,没什么特别感觉。

只是偶尔会在网上看人讨论 reactor 或 Java 其他异步框架的时候,总有一些人会吐槽“巨难写,没人接手”。
但更诡异的是:总所周知,Java 面试很擅长问造火箭问题,各种 GC 日志分析、JVM 性能调优,不准备个高并发面试必备套餐都不好意思去面试(滑稽的是大多数项目还用着 BIO 模型)。这表明大伙至少心里还是渴望追求高性能的(不然面个锤子)。
而实际上,各种调优带来的效果微乎其微(通常就保持默认配置,改一些常规参数),升级个版本号比很多“专家”瞎折腾好多了。反倒是 reactor-netty 那套异步模型,配合 R2DBC/MongoDB 或诸如此类的以 reactor-netty 为客户端驱动的整个应用架构,能带来吞吐量质的飞跃。

造成了一个滑稽局面就是:每个人都在研究如何在 shi 上雕花更美,却不肯直接展示花。

而且相比网上的一些言论,聊起 c++默认模式就是:各种高级+复杂+刁钻特性,如数家珍。但是看 Java 一说异步框架,一堆人“巨难写,没人接手”劝退的。虽然知道 c++/java 圈子不一样,但我不相信大家对“难”的理解,有这么大的差距。

如果在大家真心追求高性能的前提下,reactor-core/netty 那套东西真得难学吗?

PS:
1. 异步框架的 debug 确实麻烦
2. Spring WebFlux 包的就是 reactor-netty
1373 次点击
所在节点    随想
7 条回复
GopherDaily
2021-05-08 12:29:03 +08:00
吞吐和耗时不一样。
单次请求的耗时短,和服务整体的吞吐高没有关联。
JamesChen
2021-05-08 12:42:50 +08:00
@GopherDaily 老哥,我就提醒一下,不要在自己不熟悉的领域给老司机“纠错”,尤其看你这名称好像还是做技术公众号的
emSaVya
2021-05-08 12:53:16 +08:00
手里拿个锤子 以为全世界都是钉子 让你的 cpu 拉满 能申请到机器就行 选什么模型重要吗?
gotonull
2021-05-08 13:35:16 +08:00
之前公司有个项目就是用的这一套,我感觉学起来资料好少 而且那个响应式编程 我一直 get 不到他的精髓
GopherDaily
2021-05-08 13:40:42 +08:00
@JamesChen 不做,有错可以指出,阴阳怪气也不是不行
ch2
2021-05-09 10:46:08 +08:00
可能他们的业务没有多少 qps,cpu 就已经被拉满了,这种情况异步不异步没啥区别
ccde8259
2021-05-09 12:57:39 +08:00
面向工资编程的情况下,谁都不愿意拿一个出了问题毫无头绪的东西,把自己的 KPI 丢进抽奖箱。
上线性能不行就是机器不够,再申请就是了。这种手段比起你上 Reactor 榨性能来说,没有任何风险。
假如性能成为瓶颈又申请不到机器,是不是考虑一下你的业务压根不赚钱了。这种时候无论你用再优雅的 Reactor 抬了多少性能都没有意义。这种情况都是穷途末路,早晚要死。

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

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

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

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

© 2021 V2EX