异步编程的本质:怎么处理异步请求(事件)与响应的关系
异步编程
Ebay技术架构倡导到处异步,异步能够提高系统的可伸缩性,有一种误解:认为异步就会慢于同步,其实异步后才能并行并发,利用多CPU的并行并发处理要比同步串联处理无疑性能要提升多。 异步的目的是从设计上解耦,从执行顺序上进行切分,将串行变成并行。
传统的同步编程是一种请求响应模型,调用一个方法,等待其响应返回,异步编程就是要重新考虑是否需要响应的问题,也就是缩小需要响应的地方。因为越快获得响应,就是越同步化,顺序化,事务化,性能差化。
异步编程通常是通过fire and forget方式实现,发射事件后即忘记,做别的事情了,无需立即等待刚才发射的响应结果了。(发射事件的地方称为生产者,而将在另外一个地方响应事件的处理者称为消费者)
关键问题是我们为什么要等待响应呢?因为希望基于响应再继续执行一些逻辑,换一个思路,将这些逻辑移植到事件的消费者那里去做,而不是在当前生产者实现,这其实也是reactive编程的一个特点。
https://www.jdon.com/asynchronous.html
jdon
我思故我在