• ZeroMQ高水位标记(high-water mark,HWM)


    ZMQ使用高水位标记(HWM)的概念来定义其内部管道的容量。每个连接都有其发送或接受数据的管道和对应的HWM。对于管道和HWM,不同的socket有不同的行为:

    • PUB,PUSH只有发送管道(buffer?)
    • SUB,PULL,REP,REQ只有接受管道
    • DEALER, ROUTER, PAIR两者都有

    在ZMQ2.x版本中,HWM默认是没有限制的。在3.x版本中,HWM默认值为1000。在新版本中HWM宏已经被替换:

    #   define ZMQ_SNDHWM ZMQ_HWM
    #   define ZMQ_RCVHWM ZMQ_HWM
    

    可以通过setsocketopt函数来设置HWM的值。

    当数据填满管道,达到HWM时,不同的socket也有不同的表现:

    • PUB 和 ROUTER 会丢弃数据
    • 其他的socket会阻塞
    • 这里的socket作为发送端
    • 如果连接没有建立,在填满本地缓存后,阻塞或丢弃数据
    • 如果建立了连接,在填满本地和对端缓存后,阻塞或丢弃数据

    最后,HWMs并不准确; 默认情况下,最多可以收到1000条消息,实际的缓冲区大小可能要低得多(少至一半),这取决于libzmq实现其队列的方式。

  • 相关阅读:
    解释器
    桥接
    组合
    hbase读性能优化
    Hbase为什么写比读快
    http和https区别
    R apply() 函数和 tapply() 函数
    R 语言 decostand() 函数
    R多行交叉作图
    k-mean 拐点
  • 原文地址:https://www.cnblogs.com/kohlrabi/p/7306587.html
Copyright © 2020-2023  润新知