zoukankan      html  css  js  c++  java
  • Server-pudh

    server push指的是server端发生某事件后立刻向client端发送消息。

    远程事件:

          和本地事件类似,分为两步:注册和通知,client发送一个代表事件注册的异步RPC至server,处理事件的代码写在对应的RPC回调中,此RPC同时也在等待通知,server收到请求后不直接回复,而是等待对应的本地事件触发时才调用done->Run()通知client发生了事件,可以看到server也是异步的,这个过程中如果连接断开,client端的RPC一般会很快失败,client可选择重试或者结束,server端应通过Controller.NotifyOnFailed()及时获知连接断开的信息,并删除无用的done

    Restful回调:

          REST((resource)Representational State Transfer,表现层状态转移):即Resource资源、Representational某种表现形式,如JSON、XML、JPEG等、State Transfer状态变化,即通过HTTP动词实现。

          cilent希望在事件发生时调用一个给定的URL,并附上必要的参数,,在这个模式中,server在收到client注册请求时可以直接回复,因为事件不由注册用RPC的结束触发,由于,回调只是一个URL,可以存放在数据库或经消息队列流转,这个模式灵活性很高,在业务系统中使用广泛。由于网络抖动、机器重启等因素注册多次,client可能要关注多个事件。回调应处理等幂问题(即参数不变的情况下,任何一次调用结果都相同),server为了确保不漏通知,在网络出现问题时往往会多次重试,如果第一次的通知成功了,后续的通知就不应该产生效果。为了避免重要的通知被漏掉,用户可以灵活组合RPC和消息队列,RPC的时效性和开销都明显好于消息队列,但由于内存有限,在重试一些次数后仍然失败,则server就得把这部分内存空出来去做其他事情了,这时把通知放到消息队列中,利用其持久化能力做较长时间的重试。

  • 相关阅读:
    读书笔记----软件设计原则、设计模式
    程伟杰 | 2021软件代码开发技术作业一 | 自我介绍+课程6问
    团队作业3-需求改进&系统设计
    团队项目作业2-需求规格说明书
    【Android实习】20场面试斩获大厂offer,我学会了什么
    通俗易懂,android是如何管理内存的
    关于Handler同步屏障你可能不知道的问题
    清晰图解深度分析HTTPS原理
    这一篇TCP总结请收下
    深入浅出Java线程池:源码篇
  • 原文地址:https://www.cnblogs.com/Call-C/p/8321739.html
Copyright © 2011-2022 走看看