背景(扯淡)
不知道是不是以前(2017-2019)的视野比较窄的缘故,最近发现异步风吹的越来越猛了。像 rxjava
, webflux
, v2ex
一溜烟的全出来了,应用上也逐渐有人开始使用 Spring
的 webflux
。
尽管异步风越来越强烈,但是真正的异步离我们还有一段距离,离广泛应用还有不少的路要走。我觉得主要有以下原因限制了异步的流行
- 项目开发和维护不容易招人。
- 异步带来了更高的复杂度。
- 只做到了部分异步,还有广大一部分还是同步。
以目前的情况来看,大部分业务的流量瓶颈还不至于到需要将同步切换到异步的场景,因而在招人问题上,还是以能解决开发问题为主,所以还是以同步为主,开发难度相比异步更低,对人的要求降低了很多。
使用全异步会有更高的复杂度,同时debug调试以及现有的诊断工具都会面临挑战。
最后一部分是目前仅做到了部分的异步,例如Spring Webflux在API层面的异步,而在其他技术组件方面的突破则进展相对缓慢,例如MySQL的异步。
应用
在Java 网络方面,最为著名的莫过于Netty了,只要是Java开发者,是人是鬼都能来一下子。应用Netty的开源项目实在是太多了,像RPC框架,底层的网络问题基本上全是Netty。
- Dubbo
- GRPC
- Spring Cloud Cateway
- Redisson
- Elastic Search
- 等等