架构笔记[一]:同步与异步

Posted the_owl

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了架构笔记[一]:同步与异步相关的知识,希望对你有一定的参考价值。

请求/应答通信

第一阶段:同步

  所有操作顺序执行,阻塞调用,函数执行完后再进行下一步操作。

第二阶段:完全异步

  问题:同步操作中,有些函数执行比较耗时,导致程序整体可用性的降低,用户体验差。

  解决:通过异步方式,不阻塞,不等待函数返回即执行下一步。等到函数执行完成后通过某些机制触发,使相应的结果的到继续处理。

第三阶段:部分异步

  问题:在完全异步中,会存在有些操作可能耗费时间过长,或异步函数在执行中出现错误导致不能正常返回等情况。使得调用者白白耗费某些异步触发机制的资源,尤其是在大型软件中,会导致服务器性能浪费,性能降低。

  解决:通过部分异步方式,阻塞一定时间,设定异步操作等待的时间,如果超时则返回错误,释放异步触发机制的资源。

  举例:WCF

======================================

异步机制

思想:

  另启动一个线程,使主线程(通常是UI线程不受阻塞),通过线程间通信通知结果。

.NET中:

  分类:

    APM模式(Asynchronous Programing Model)     其他         

    EAP模式(Event-based Asynchronous Pattern)  事件驱动  

    对比  http://www.cnblogs.com/dctit/archive/2013/01/13/2853853.html 

  举例:

    APM:  beginXXX / endXXX

    EAP:  XXXAsync / XXXComplete 以及EventArgs / EventHandler 

Java中:

  AsyncTask;以及其他通过线程方式实现异步 

  MessageQueue + Looper  + Handler

  NIO(New IO) Selector+SocketChannel

实时通信

  TCP/IP协议中,通信链接均有超时关闭机制

  为了实现双方的实时通信,采用长链接+心跳包+断开重连等思路,实现链接保持

  协议举例如下

TCP层:

  MQTT

  XMPP

  AMQP

HTTP层:

  Websocket

 

以上是关于架构笔记[一]:同步与异步的主要内容,如果未能解决你的问题,请参考以下文章

软件架构:同步与异步问题

20230515学习笔记——js中的同步任务与异步任务,宏任务与微任务

普通B/S架构模式同步请求与AJAX异步请求区别(个人理解)

机器学习笔记:并行计算(同步与异步)

互联网业务场景下消息队列架构

互联网业务场景下消息队列架构