0mq】的更多相关文章

官方网址:http://api.zeromq.org/4-0:zmq zmq(7) 0MQ Manual - 0MQ/3.2.5 Name zmq – ØMQ 轻量级消息传输内核 Synopsis #include <znq.h> cc [flags] files –lzmq [libraries] Description ØMQ轻量级消息传输内核是一个从标准socket接口的扩展而来的链接库,这些接口通常是由一些专门的传送中间设备来提供.ØMQ提供了一个步消息传送.多模式消息传送.消息过滤(…
最近做后台发现很多地方需要队列,我用东西一般有两个要求:     1) 够傻够简单.    2) 有源码,能看又能改.    最后相中了0mq,下面介绍如何安装和写个简单的例子.一. linux平台:ubuntu&python. 安装软件下载页面:http://www.zeromq.org/intro:get-the-software1. prerequisites安装:sudo apt-get install libtool autoconf automake uuid-dev build-e…
最近头脑里面一直在想怎么样让能让大家基于DIOCP上写出稳定的服务端程序.很多朋友问我,你DIOCP稳定吗,我可以用他来做三层服务器吗? 当时我是这样回答的,我只能保证DIOCP底层通信的稳定. 说实话,服务端要稳定,并不容易,写过服务端的程序员都清楚.特别是这种可以直接操作指针,自己分配内存和释放内存的语言(想C++, C, Delphi),一不小心就一个坑,一个坑可能就会引发,内存的释放越界,访问非法地址.导致整个进程的直接奔溃. 经过一些研究和咨询,我可以利用多进程来实现通信层和逻辑层的彻…
如果你是希望通过0MQ来做缓冲队列,非阻塞的效果,那你就必须清楚 0MQ Socket是会阻塞,你要搞清楚0MQ Socket与队列的关系. 官方协议文档规定了,一部分类型的 0MQ Socket为不阻塞发送,而另一部分类型则是阻塞发送的.不阻塞发送同时往往也意味着丢弃消息,相反不能丢弃消息的则要求阻塞发送.这里的阻塞发送,不是说像tcp那样确保送到目的地,而是必须有目的地可以发送.而队列的作用就是架在发送端和目的地之间作缓冲.如果连目的地也没有,那么队列也就失去存在的意义了,所以只好将发送阻塞…
先来看<Implementing distributed applications with 0MQ and some other bad guys...>.用0MQ去实现分布应用,或者用其它坏东西. 我们希望应用的伸缩性以及复杂度的关系,分布应用从单线程到多线程到多节点,复杂度是平滑收敛的.得实际上是指数增长,多节点下极复杂. 0MQ意味 0中间人(Message broker),0迟延(尽可能),0管理(服务),0成本,0浪费. 网上尤其是百度搜出一堆国内的贴,欢喜将0MQ和其它Messa…
底层IO事件,以及借用socket poller的上层0MQ socket事件. 先来看用于底层和上层的两种poller. 这是用于底层io事件的poller_t,每个socket_base_t都关联到一个poller_t,这个poller_t运行在io_thread_t线程上. 这是运行在0MQ socket层的事件poller.运行在你的控制线程,也就是你编程的线程. 每次你使用zmq_poller_poll都会创建一个sokcet_poller_t去进行poll. 我们要去轮询一个0MQ…
ypipe_t has a yqueue_t. pipe_t relates two ypipe(s).pipe_t就是0MQ框架内使用的底层队列. yqueue_t的设计目的. yqueue_t 的结构成员 这个队列的设计与std::deque有的相似,都用chunk双向链表实现,同样避免FIFO队列对内存过度频繁的分配和释放.yqueue_t不支持随机访问,以及遍历迭代.yqueue_t采用了一个spare_chunk,保存最近一次访问过后释放或分配出来的chunk,提高空闲chunk的ca…
1. 先结合RabbitMQ Tutorials,弄清0MQ socket的各种类型. 1.1. 0MQ PAIR 对应 RabbitMQ Tutorials的 "Hello world" 例子 1.2. 0MQ PUSH - PULL 对应 RabbitMQ Tutorials 的 Work queues 例子 1.3. 0MQ PUB - SUB 对应  RabbitMQ Tutorials 的 “Publish/Subscribe" 以及 ”Topic" 例子…

0mq

为什么你想过的所有你所知道关于并发的事情,不是完全神经病的(Insane),就是假的(Bogus). 并发的定律,e=mc*c.这里并不是爱因斯坦的质能方程.而是 努力 = 代码规模 * (线程冲突碰撞的平方). 随线程冲突升级,我们要为些付出指数增长的努力去解决. 工业标准的并发模型基于大型计算的模型. 并发意味着数据在线程间共享,随之需要锁,信号量,临界区:代码通常会失败:复杂,bugs,竞态.这些都令c系数变大.简直是完全神经病的模型. 我们需要一个理想的世界,我们不必为些付出额外的努力.…