项目积累了大量异步回调的 JVM 代码,层层回调的复杂业务逻辑维护起来有些心累,引入协程能明显改进可读性和易维护性。
首选是 Go 或者 Elixir,但是脱离 JVM 意味着不仅业务要重写,对接的众多第三方服务也要重写,周除了易出错,周期也会拉的很长,风险明显超出我能 handle 的范围。
然后考虑的是挂 agent 改字节码协程化方案,对我们而已,跟魔改 JVM 的方案一样,风险偏高,代码层面仍然要改造不少地方。
Vertx 3.6.x 开始,会给回调方法自动生成用于 Kotlin 协程的 xxxAwait 方法,第一时间拿来试了一下,然后就停不下来了,最近完成了整个项目所有代码的协程改造。总结下来就是真香,举个例子,接入公司自研的微服务体系,之前是几千行代码的 NIO 实现的,再后来基于 netty 重写也有大几百行代码,到现在的 vertx+协程不到 500 行代码了。
首选是 Go 或者 Elixir,但是脱离 JVM 意味着不仅业务要重写,对接的众多第三方服务也要重写,周除了易出错,周期也会拉的很长,风险明显超出我能 handle 的范围。
然后考虑的是挂 agent 改字节码协程化方案,对我们而已,跟魔改 JVM 的方案一样,风险偏高,代码层面仍然要改造不少地方。
Vertx 3.6.x 开始,会给回调方法自动生成用于 Kotlin 协程的 xxxAwait 方法,第一时间拿来试了一下,然后就停不下来了,最近完成了整个项目所有代码的协程改造。总结下来就是真香,举个例子,接入公司自研的微服务体系,之前是几千行代码的 NIO 实现的,再后来基于 netty 重写也有大几百行代码,到现在的 vertx+协程不到 500 行代码了。

