• 架构笔记[一]:通信技术路线


    请求/应答通信

    第一阶段:同步

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

    第二阶段:完全异步

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

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

    第三阶段:部分异步

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

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

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

  • 相关阅读:
    oracle启动的三步
    Solaris下vi的简单使用帮助
    Solaris下ftp配置(初稿待补充)
    soap笔记1
    Solaris 10 查看机器的网卡mac地址
    查看表空间名称与对应文件
    [转]Ubuntu10.04的网络配置
    [转]红帽企业版RHEL6使用Fedora13的yum源
    [转]linux忘记密码怎么办法
    [转]个人管理 - IT人士书籍推荐(已读)
  • 原文地址:https://www.cnblogs.com/the-owl/p/5627913.html
Copyright © 2020-2023  润新知