• [编织消息框架][消息处理模式]请求响应模式


    消息处理常有以下几种方式 来源ZeroMq

    1.请求响应模式 Request-reply

    2.发布订阅模式 Publisher-Subscriber

    3.推拉模式 Push-Pull

    4.管道/异步模式 Pipeline

    如果单单只用一种模式是无法满足业务上的千变万化,答案是采用混合方式

    请求响应模式

    发送端一请求 收接端一回答,一问一答的方式处理,一问一答的难点在于消息重发,消息丢失处理策略

    而消息重发,消息丢失只能定制解决

    发送消息失败几种常用处理策略

    1.忽略消息

    2.重发消息

    3.持久化消息

    消息去重策略 缓存队列记录处理结果

    有个幂等的概念:一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同

    去重变成维护管理队列,而队列控制策略又分为

    1.LRU(最近最少使用) 先进先出(FIFO) 或后进后出(LILO)

    2.Expires time 有效时间

    3.永久有效

     

    上图是没有任何容错处理

    下图

    1.每次请求时往监控队列注册

    2.接收端首先去缓存队列查询结果

    3.有结果就直接返回,否则正常处理逻辑再保存结果

    4.当返回结果中途时可能出现发送端网络断开等因素导致响应失败

    5.当请求超时,会发重试请求

    6.正常返回结果,删除监控

    可以看出发送端跟接收端都多了缓存队列,由于数据是无限增长的,至于采取控制策略跟业务有关

    什么场景需要即时处理?又需要去重请求?

    按数据操作划分

    按数据类型划分,具体根据公司业务

    可根据安全等级来决定是否加容错处理

    如涉及金额交易或跨应用/跨平台处理的话就要加了

  • 相关阅读:
    JS—图片压缩上传(单张)
    vue 使用jssdk分享
    微信JS-SDK选择图片遇到的坑
    手把手教你实现一个微信自动回复机器人
    SSH实现远程控制
    使用Apache服务部署静态网站
    Rhel7安装及网卡、yum、vmtools配置和修改主机名
    基础工具之消息队列、线程池、缓冲区抽象、事件循环和日志实现
    I/O多路复用方案
    Java按字节截取字符串(GBK编码、UTF-8编码实现)
  • 原文地址:https://www.cnblogs.com/solq111/p/6560944.html
Copyright © 2020-2023  润新知