(1)对比:阻塞与非阻塞、同步与异步

发布时间:2019-08-06 06:00:05发布者:Mr.Zhang阅读(428)

阻塞与非阻塞

阻塞:A程序调用B程序,A等待返回结果,等待中A程序线程被占用,不进行其它操作。

非阻塞:A程序调用B程序,A程序线程不被占用。

阻塞--》非阻塞 的最常用解决方案:缓存,A将请求依次装入缓存中,A不管与B是否执行完成,由B随后依次处理,返回给A。

 

同步与异步

同步:一个线程依次执行所有任务

异步:多个线程并行执行任务

同步--》异步 的最常用解决方案:多线程,依次启动多个线程执行任务,同时可以引入线程池,减少线程不断分配和销毁造成的开销。

 

 

很多人都听说过消息队列、消息中间件MQ,企业服务总线ESB等。

简单来说就是企业服务总线ESB就是搭了一条管道,所有的指令请求都可以扔进去,顺着管道流向目的地。用到的技术就是消息队列MQ,如RabbitMQ,ActiveMQ,Kafka等。

我之前在软考架构设计师的时候,案例分析中就有一个问题谈ESB的优点,与SOA做比较。在论文中我也一直阐述用到了ESB,技术框架就是RabbitMQ。

我清楚记得,我的答案说的是“异步调用”,后来过了几个月我才明白这是错的,应该是“非阻塞”,因为这里与多线程并没有关系,而是调用端的“不等待,非阻塞”,只需要将消息扔到总线里面就不用管了,实现了高可用和最终一致性,CAP中的AP。

考试结果就是案例分析查了5分,没有通过考试。

 

上文中的消息队列、分布式、CAP等后续再谈。

 





本文转自博客园,原文地址:https://www.cnblogs.com/hongwei918/p/11305669.html