zoukankan      html  css  js  c++  java
  • 架构笔记[一]:通信技术路线

    请求/应答通信

    第一阶段:同步

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

    第二阶段:完全异步

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

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

    第三阶段:部分异步

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

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

      举例: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

  • 相关阅读:
    Codeforces Round 546 (Div. 2)
    Codeforces Round 545 (Div. 2)
    Codeforces Round 544(Div. 3)
    牛客小白月赛12
    Codeforces Round 261(Div. 2)
    Codeforces Round 260(Div. 2)
    Codeforces Round 259(Div. 2)
    Codeforces Round 258(Div. 2)
    Codeforces Round 257 (Div. 2)
    《A First Course in Probability》-chaper5-连续型随机变量-随机变量函数的分布
  • 原文地址:https://www.cnblogs.com/the-owl/p/5627913.html
Copyright © 2011-2022 走看看