背景(扯淡)

不知道是不是以前(2017-2019)的视野比较窄的缘故,最近发现异步风吹的越来越猛了。像 rxjava , webflux , v2ex 一溜烟的全出来了,应用上也逐渐有人开始使用 Springwebflux

尽管异步风越来越强烈,但是真正的异步离我们还有一段距离,离广泛应用还有不少的路要走。我觉得主要有以下原因限制了异步的流行

  • 项目开发和维护不容易招人。
  • 异步带来了更高的复杂度。
  • 只做到了部分异步,还有广大一部分还是同步。

以目前的情况来看,大部分业务的流量瓶颈还不至于到需要将同步切换到异步的场景,因而在招人问题上,还是以能解决开发问题为主,所以还是以同步为主,开发难度相比异步更低,对人的要求降低了很多。

使用全异步会有更高的复杂度,同时debug调试以及现有的诊断工具都会面临挑战。

最后一部分是目前仅做到了部分的异步,例如Spring Webflux在API层面的异步,而在其他技术组件方面的突破则进展相对缓慢,例如MySQL的异步。

我个人还是比较喜欢异步风格的,但是对人的要求会更高。

应用

在Java 网络方面,最为著名的莫过于Netty了,只要是Java开发者,是人是鬼都能来一下子。应用Netty的开源项目实在是太多了,像RPC框架,底层的网络问题基本上全是Netty。