
MessageQueue
文章平均质量分 88
致守
这个作者很懒,什么都没留下…
展开
-
pynng 超快速上手,但不保熟
nng相比zeromq的目前发现优势,链接状态全自动维护,自动重连,掉线重连能快速恢复,数据发送不完整时能自动无限重发(默认情况),报头能全定义从而能支持http协议,速度飞快。本机 python 3.9 + pynng 0.7.1 本地环回测试 10000次1G数据,只需要1秒就可以完成。的后辈,nanomsg 的 下一代的消息处理库。主要就是快,上手超快,消息收发也超快。以下4个简单完整例子。转载 2022-08-23 13:47:01 · 678 阅读 · 0 评论 -
Linux C套接字选项SO_RCVTIMEO, SO_SNDTIMEO
套接字选项SO_RCVTIMEO: 用来设置socket接收数据的超时时间;套接字选项SO_SNDTIMEO: 用来设置socket发送数据的超时时间;比如,一般情况下,调用accept/connect/send/recv, 进程会阻塞,但是如果对端异常,进行可能无法正常退出等待。如何让这些调用自动定时退出?可以使用诸如alarm定时器、I/O复用设置定时器,还可以使用socket编程里函数级别的socket套接字选项SO_RCVTIMEO和SO_SNDTIMEO,仅针对与数据接收和发送相关,而无需设置转载 2022-06-24 10:06:35 · 3117 阅读 · 2 评论 -
SGI STL顺序容器 vector
目录在SGI STL中,vector和array都是数组容器,两种操作非常相似。区别在于:array是静态空间,一旦配置就不能改变;vector是动态空间,随着新元素加入,内部机制或自行扩充空间以容纳新元素。vector维护的是一个连续线性空间,不论元素类型是什么,普通指针都可以作为vector的迭代器而满足所有必要条件,因为vector需要的操作:operator*,operator->,operatro++, operator--, operator+, operator-, operator+=, o转载 2022-06-24 09:34:11 · 276 阅读 · 0 评论 -
nng 概述
NNG/nanomsg 是最近项目上使用到的一个通信库,用来实现进程间过程调用和线程间通信,很是方便。NNG 是 nanomsg 的继任版本,而 nanomsg 则是流行的 ZMQ (一个简单好用的传输层,像框架一样的一个 socket library)的 C 重写版。NNG 将通信使用的协议和传输分离,同一个协议可以工作在不同的传输层上,类似与 TCP/IP 的应用层和传输层的分层,同时接口上屏蔽了底层细节,统一用字符串 URL 来描述传输模式。这样当使用场景修改时,可以通过简单修改 URL 来实现适应,转载 2022-06-23 17:37:40 · 4187 阅读 · 0 评论 -
Dissecting Message Queues
概述: 我花了一些时间解剖各种库执行分布式消息。在这个分析中,我看了几个不同的方面,包括API特性,易于部署和维护,以及性能质量.。消息队列已经被分为两组:brokerless和brokered。 brokerless消息队列是对等的,没有中间商参与信息的传递,而brokered队列有一些服务器端点之间。性能分析的一些系统: Brokerless nanomsg ZeroMQ Brokered ActiveMQ NATS Kafka Kestrel转载 2022-06-23 16:55:05 · 137 阅读 · 0 评论 -
自动驾驶通信中间件ecal源码分析—2. Broker vs Brokerless
前面我们提到ecal是没有中间代理商的(brokerless),那么什么是Broker和Brokerless。Message broker是一个应用程序,它的存在可以使得不同的应用程序(APP)/系统/服务互相进行通信(数据交互)。Broker可以实现消息协议之间的自动转换(假设接收端和发送端的通信协议不同),即使应用程序位于不同的系统、采用不同的编程语言编写。如上图所示,Broker充当了消息代理人的身份,它接收消息生产者(producer)的数据,然后对这些消息进行协议转换(如果需要),然后再发送给消息转载 2022-06-23 16:51:56 · 962 阅读 · 0 评论 -
nanomsg笔记--通信协议与传输协议
(507条消息) nanomsg笔记--通信协议与传输协议_Automannnn的博客-优快云博客_nanomsg花了一段时间吧nanomsg的源码给编译了一遍,同时对里面的主要的协议进行了调试。 由于该项目是c写的,发现可读性太差了,调试了很多遍仍然模模糊糊的。再加上该项目中的代码量也不低,所以这个练习是我吸收的最差的一个。 决定不能再在上面耗着了,将目前能够理解的,结合网友的经验帖进行记录一下。 注意,这里的传输协议不是规范的叫法,也并非tcp/ip协议的那个传输层协议,而是属于应用层的一种协转载 2022-06-22 20:10:16 · 2146 阅读 · 0 评论 -
nanomsg框架简介
1、nanomsg概述Ø nanomsg是一个socket library,它提供了几种常见的通信模式,为了能使网络层快速、可扩展并且能易于使用。用C实现,且适用于广泛的操作系统,几乎不需要依赖。这里的通信模式(也称为“可扩展性协议”)是构建分布式系统的基本框架。通过组合它们,可以创建广泛的分布式应用程序。Ø 目前可用的可扩展性协议有: PAIR - 简单的一对一沟通 BUS - 简单的多对多通信 REQREP - 允许构建无状态服务集群来处理用户请求 PUBSUB - 将消息分发给订阅消息的用转载 2022-06-22 20:06:03 · 3141 阅读 · 0 评论 -
关于 nng/nanomsg 库的一点想法
NNG/nanomsg 是最近项目上使用到的一个通信库,用来实现进程间过程调用和线程间通信,很是方便。NNG 是 nanomsg 的继任版本,而 nanomsg 则是流行的 ZMQ 的 C 重写版。NNG 将通信使用的协议和传输分离,同一个协议可以工作在不同的传输层上,类似与 TCP/IP 的应用层和传输层的分层,同时接口上屏蔽了底层细节,统一用字符串 URL 来描述传输模式。这样当使用场景修改时,可以通过简单修改 URL 来实现适应,极具灵活性。同时如 NNG 描述所言 “light-weight bro转载 2022-06-22 20:11:52 · 2713 阅读 · 0 评论 -
ZeroMQ源码分析笔记之架构
ZeroMQ是一种基于消息队列的多线程网络库,其对套接字类型、连接处理、帧、甚至路由的底层细节进行抽象。提供跨越多种传输协议的套接字。引用云风的话来说:ZeroMQ并不是对一个socket的封装,不能用它去实现已有的网络协议。它不同于更底层的点对点通讯模式,它有自己的模式。有比tcp更高一级的协议。ZeroMQ并不一定基于tcp协议,也可以用于进程间和进程内通讯。它改变了通讯都基于一对一的连接的假设。ZeroMQ支持4种通讯模型1)一对一结对通讯用于支持传统的TCP Socket模型,但并不推荐使用转载 2022-06-16 20:11:27 · 579 阅读 · 1 评论 -
消息队列和ZeroMQ原理和应用
消息队列(message queue)本质就是个队列,先进先出FIFO。利用FIFO先进先出的特性,可以保证消息的顺序性。主要用途:不同服务server、进程process、线程thread之间通信。2.1 消息可靠性处理在实际应用中,我们可以通过以下要点的设计来确保消息的可靠性处理:2.2消息吞吐量模式比较:1)REQ-ACK模式(无法提高吞吐量)2)多次send,一次ack模式(可以提高吞吐量)2.3 消息队列—流量控制流量控制也称为削峰。这也在消息队列设计的时候需要考虑的要素。削峰,水位到转载 2022-06-16 20:06:49 · 1656 阅读 · 0 评论 -
Zeromq 源码全解析(4)
\libzmq\src\yqueue.hpp怎么优化内存分配,先了解以下内存分配开销流程,分配内存这个操作,在c++使用new,delete关键字,c中使用malloc, free组合关键组,通过传入大小来申请一段连续的内存,当然这里的连续指的是逻辑连续,在物理上不一定是连续的,但是操作系统会帮我们屏蔽掉这些细节,分配给我们一块内存.所以可以得出内存分配行为是需要一些消耗的.所以,通常的内存分配优化方案为为,先分配一块大内存,再通过自己维护内存使用来进行内存的优化,zmq大致也是这么做的以chun转载 2022-06-16 20:04:57 · 499 阅读 · 0 评论 -
ZeroMQ-0.1.1源码分析
是一个分布式消息处理架构,是由语言实现的,其底层传输协议支持TCP, UDP,多播, POSIX IPC等实现.在后续的开发中,陆续实现了以C, Java, PHP, Python等语言实现的版本,但是非C++的实现版本中,底层传输协议支持的比较有限,但基本上均支持TCP协议.以C++实现的ZeroMQ分布式消息引擎的源码工程请参考:GitHub - zeromq/libzmq: ZeroMQ core engine in C++, implements ZMTP/3.1在大多数消息系统的架构设计中,都存在转载 2022-06-16 20:02:27 · 281 阅读 · 0 评论 -
zeromq 无锁队列源码解析
在我刚学无锁队列的时候,在网上找了很多资料,但基本都是一上来就开始讲无锁队列的实现,这让我很困惑,到底什么是无锁队列呢,设计这玩意的意图是什么?接下来我将给大家好好分析一下无锁队列。无锁队列顾名思义,就是无锁+队列,队列有以下几种操作模型:(1)单生产者单消费者(2)多生产者单消费者(3)单生产者多消费者(4)多生产者多消费者在我们实现生产者消费者模式的时候需要用到锁,来保证线程间的同步以及互斥互斥:访问共享的队列的时候需要加锁同步:(1)队列为空而消费者线程需要读取数据,此时应该阻塞消费者线程(2转载 2022-06-16 20:01:24 · 595 阅读 · 0 评论 -
消息队列ZeroMQ实践
消息队列ZeroMQ实践来自于:服务端框架工具经验 作者:郭忆 2014-08-13 10:54ZeroMQ被称为史上最快消息队列,它处于会话层之上,应用层之下,使用后台异步线程完成消息的接受和发送,完美的封装了Socket API,大大简化了编程人员的复杂度,被称为史上最强大的消息中间件。ZMQ是用C语言编写的,30us内完成消息的传输,能够兼容多个平台,多种语言,可以使用多种方式实现N对N的Socket连接。本文仅以JAVA版本的ZMQ API为例,介绍ZMQZMQ与传统的TCP Socket相转载 2022-06-16 19:59:22 · 984 阅读 · 0 评论 -
ZeroMQZeroMQ研究与应用分析
1 ZeroMQ概述ZeroMQ是一种基于消息队列的多线程网络库,其对套接字类型、连接处理、帧、甚至路由的底层细节进行抽象,提供跨越多种传输协议的套接字。ZeroMQ是网络通信中新的一层,介于应用层和传输层之间(按照TCP/IP划分),其是一个可伸缩层,可并行运行,分散在分布式系统间。2 系统架构2.1总体架构ZeroMQ几乎所有的I/O操作都是异步的,主线程不会被阻塞。ZeroMQ会根据用户调用zmq_init函数时传入的接口参数,创建对应数量的I/O Thread。每个I/O Thread都有与之绑转载 2022-06-16 19:58:24 · 969 阅读 · 0 评论 -
[译]nanomsg和ZeroMQ的区别
原文地址: Differences between nanomsg and ZeroMQ 自这篇文档完成以后,Nanomsg和ZeroMQ都已经发生了很大的变化。尽管如此,本文档从ZeroMQ和Nanomsg原创作者的角度来阐述,仍有助于理解nanomsg的历史变更。 授权 Nanomsg库基于MIT授权,这就意味着Nanomsg不同于ZeroMQ,你可以修改源代码,可以作为专利产品以不同的授权重新发布等。更多关于授权许可的信息可以在这里找到。 PO转载 2022-06-16 19:56:02 · 1366 阅读 · 0 评论 -
为什么 ZeroMQ 不应该成为你的第一选择
Tyler Treat 是一名软件开发人员,他近日发表了一篇博文《为什么ZeroMQ 不应该成为你的第一选择》。文中,Tyler Treat 对 nanomsg 和 ZeroMQ 进行了比较。nanomsg 是一个套接字库,提供了多种常见的通信协议,其目标是使网络层更快、更具扩展性、更容易使用。它用 C 进行了彻底地重写,可以说是对 ZeroMQ 的重建。它构建在 ZeroMQ 的可靠性能之上,同时又提供了若干重要的改进。而且,它还试图消除 ZeroMQ 经常出现一些怪异行为。作者从以下几个方面对二者进行了转载 2022-06-16 19:53:45 · 2571 阅读 · 0 评论 -
ZeroMQ (Martin Sustrik)读后感和笔记
网上的关于ZeroMQ的文章有很多很多,大多分两类,一类是以ZeroMQ官方文档为核心,做了点翻译,教大家怎么去用ZeroMQ,适合初学者,这类文章比较多;还有一类是以ZeroMQ的源代码为核心,这些笔者对源代码作了较为深入的分析,也写过许多实例,会深入浅出的描绘流程,对代码里的“坑”会做些分析,适合中高级的读者,但这类文章比较少。感觉玩ZMQ的兄弟不多啊,O(∩_∩)O~。前几天在网上看到一篇Martin Sustrik对Zmq的论文,感觉不错,不深不浅,从方法论以及高并发软件设计的角度讲解了Zmq,有兴转载 2022-06-16 19:51:59 · 375 阅读 · 0 评论 -
消息队列库——ZeroMQ
ZeroMQ(简称ZMQ)是一个基于消息队列的多线程网络库,其对套接字类型、连接处理、帧、甚至路由的底层细节进行抽象,提供跨越多种传输协议的套接字。ZMQ是网络通信中新的一层,介于应用层和传输层之间(按照TCP/IP划分),其是一个可伸缩层,可并行运行,分散在分布式系统间。ZMQ不是单独的服务,而是一个嵌入式库,它封装了网络通信、消息队列、线程调度等功能,向上层提供简洁的API,应用程序通过加载库文件,调用API函数来实现高性能网络通信。主线程与I/O线程:I/O线程,ZMQ根据用户转载 2022-05-13 10:33:01 · 832 阅读 · 0 评论 -
zeromq源码分析笔记之架构(1)
1、zmq概述ZeroMQ是一种基于消息队列的多线程网络库,其对套接字类型、连接处理、帧、甚至路由的底层细节进行抽象,提供跨越多种传输协议的套接字。引用云风的话来说:ZeroMQ 并不是一个对 socket 的封装,不能用它去实现已有的网络协议。它有自己的模式,不同于更底层的点对点通讯模式。它有比 tcp 协议更高一级的协议。(当然 ZeroMQ 不一定基于 TCP 协议,它也可以用于进程间和...转载 2018-08-07 17:51:31 · 334 阅读 · 0 评论 -
ZeroMQ编译安装使用教程
因为工作需要,对ZeroMQ进行简单的研究使用,为了使大家更好、更快的学习使用ZeroMQ,本文将从下载、安装、编译、几方面来对ZeroMQ做个简明的教程总结。(1)到官网下载最新的ZeroMQ安装包:http://download.zeromq.org/(2)解压:tar -xvf zeromq-4.1.4.tar.gz (3)切换到解压文件夹:cd zeromq-4.1.4(4)....转载 2018-08-14 17:14:04 · 4767 阅读 · 0 评论 -
ZeroMQ
1 ZeroMQ概述ZeroMQ是一种基于消息队列的多线程网络库,其对套接字类型、连接处理、帧、甚至路由的底层细节进行抽象,提供跨越多种传输协议的套接字。ZeroMQ是网络通信中新的一层,介于应用层和传输层之间(按照TCP/IP划分),其是一个可伸缩层,可并行运行,分散在分布式系统间。2 系统架构2.1总体架构ZeroMQ几乎所有的I/O操作都是异步的,主线程不会被阻塞。Zer...转载 2018-08-09 19:58:38 · 2505 阅读 · 0 评论 -
ZMQ 第二章 ZeroMQ进阶
感谢原创作者的分享! # ZMQ 第二章 ZeroMQ进阶 第一章我们简单试用了ZMQ的若干通信模式:请求-应答模式、发布-订阅模式、管道模式。这一章我们将学习更多在实际开发中会使用到的东西: 本章涉及的内容有: * 创建和使用ZMQ套接字* 使用套接字发送和接收消息* 使用ZMQ提供的异步I/O套接字构建你的应用程序* 在单一线程中使用...转载 2018-08-09 19:48:55 · 2441 阅读 · 0 评论 -
ZMQ性能测试
zeromq是啥玩意儿?通俗地说,ZMQ是一个开源的、跨语言的、非常简洁的、非常高性能、非常灵活的网络通讯库。它的官方网址为http://www.zeromq.org/它的性能非常高,下面是网友给出的几款常用消息中间件性能比较:性能测试我一直很好奇zeromq真的能跑出那么高的性能来吗?从上面网友给出的性能图看来,这个性能简直逆天了。俗话说好奇害死猫,我就是怀着这个好奇写了...转载 2018-08-09 19:44:57 · 4565 阅读 · 0 评论 -
ZeroMQ简介
zeroMQ不是TCP,不是socket,也不是消息队列,而是这些的综合体。zeroMQ不是TCP,不是socket,也不是消息队列,而是这些的综合体。ZeroMQZeroMQ是什么ZeroMQ以嵌入式网络编程库的形式实现了一个并行开发框架(concurrency framework),能够提供进程内(inproc)、进程间(IPC)、网络(TCP)和广播方式的消息信道,...转载 2018-08-09 19:43:21 · 23778 阅读 · 0 评论