异步请求和异步调用有区别?
异步请求和异步调用》,以及许多它的衍生文章。文章的确不错,但文章中提到的“异步请求和异步调用”这两个概念,一直百思不得其解,衍生文章中也是在混着用。 终于忍不住想探究一番,发现除了那篇文章和衍生的文章之外,并没有其他证据来区别这两个概念。直到在Stack Overflow上搜到了一篇七年前的文章,这个疑惑才解开。 今天就带大家一起探究一下“异步请求和异步调用”这两个概念。 异步请求和异步调用的区别 上面提到的文章中有这样两段话来讲异步请求和异步调用的区别: 区别一:异步请求用来解决并发请求对服务器造成的压力,从而提高对请求的吞吐量;而异步调用是用来做一些非主线流程且不需要实时计算和响应的任务,比如同步日志到kafka中做日志分析等。 区别二:异步请求是会一直等待response相应的,需要返回结果给客户端的;而异步调用往往会马上返回给客户端响应,完成这次整个的请求,至于异步调用的任务后台运行就可以了,客户端不会关心。 仔细阅读和分析之后,文章中提到的异步请求应该指的是通过Servlet的AsyncContext对象或Spring中的Callable、DeferredResult、WebAsyncTask等方式进行业务的异步处理。而文中异步调用指的是类似在Spring中调用@Async注解的异步方法。 你看了上面的两个概念的区别,是否觉得很有道理?感觉已经成功区分了异步请求和异步调用了吗? 那么,是否想过一个问题,我们通常说请求一个接口和调用一个接口时难道不是一个意思吗?怎么在这里就变成两个截然不同的概念了? 疑问探究 带着上面的疑问,开始用搜索引擎进行搜索。发现当搜索“异步请求和异步调用的区别”时,搜出来的内容基本上都来自上述文章及衍生文章,或者是讲异步和同步的区别。这并不能说明什么,但也说明了这两个概念的区别并没有得到普遍的认可。
于是开始尝试通过英文搜索引擎进行搜索。先搜了“the difference between asynchronous call and asynchronous request”,没 (编辑:济南站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |