ZMQ是一个比较轻量级的消息通信组件,引用官方的说法: “ZMQ (以下 ZeroMQ 简称 ZMQ)是一个简单好用的传输层,像框架一样的一个 socket library,他使得 Socket 编程更加简单、简洁和性能更高。是一个消息处理队列库,可在多个线程、内核和主机盒之间弹性伸缩。ZMQ 的明确目标是“成为标准网络协议栈的一部分,之后进入 Linux 内核”。现在还未看到它们的成功。但是,它无疑是极具前景的、并且是人们更加需要的“传统”BSD 套接字之上的一层封装。ZMQ 让编写高性能网络应用程序极为简单和有趣。”
ZMQ组件广泛适用于.NET开发领域,其原生版本采用C语言开发,目前已经提供了包括C语言、C++、安卓、IOS、Python、Nodejs等众多语言的版本,而.NET版本实际上是基于C++的移植版本,事实上.NET版本也有多个版本,而目前使用情况较为良好的版本为NETMQ,可以通过Nuget下载并使用,添加到项目中,会新增两个类库,一个为NetMQ.dll,另外一个为SyncIO.dll。暂时未发现.NET Core的移植版本,期待社区或外网的高手能够将其移植成.NET CORE,为社区提供助力。
目前我们公司已使用ZMQ作为核心通信组件,在后端、客户端等众多应用中使用。基于ZMQ的资料目前非常多,包括官方入门指南等,都可以作为大家入门的重要依据,除此之外,外网也有非常广泛的知识体系,不过基本上都是英语版本,因此,特意编写这个系列,其主要目的是将各类资料进行统一汇总,方便自己的同时,也期待能为其他感兴趣的朋友提供助力。
总目录的第一部分主要为官方入门指南的详细说明,而第二部分为外网相关资料、以及ZMQ高级知识的汇编,如有考虑不周,或表述不严谨之处,还望大家指出。
- 基本概念
- 接收和发送
- 接收
- 发送
- 深度阅读
- 消息
- 消息结构
- 创建multipart消息
- 读取multipart消息
- 完整实例
- 传输
- 传输协议
- TCP
- Inproc(进程通信管道)
- PGM(实际通用多播)
- 清除连接状态
- 清除
- 为什么需要清除
- 延迟关闭参数(Linger)
- 如何清除
- 测试
- 常见组件
- Poller轮询
- 轮询对象
- 应用目标1:提高效率
- 应用目标2:数据正确性校验
- 示例代码:接收消息
- 示例代码:发送消息
- 计时器
- 新增和移除socket对象和计时器对象
- 处理轮询
- 复杂示例
- 性能
- 深度阅读
- Actor行动者模型
- NetMQ行动者模型
- 什么是行动者模型
- 多线程数据共享
- 行动者模型
- 行动者模型示例
- Beacon灯塔对象
- 灯塔对象
- 示例:实现总线
- 深度阅读
- Timer计时器
- 计时器
- Queue队列
- 队列
- Proactor前摄器模型
- 前摄器
- 常见的几种模式:
- Request/Response 请求响应模式
- Request/Response说明
- 怎么用?
- 请求响应-一种阻塞的通信方式
- Pub/Sub推送订阅模式
- 推送和订阅
- 订阅的主题Topics
- 订阅顺序
- 示例
- 其他注意事项
- 高缓冲池High water mark
- 慢速订阅者Slow subscribers
- 后进订阅者Late joining subscribers
- Push/Pull 推拉模式
- 推送和拉取
- 进气门对象-Ventilator
- 工作者对象-Worker
- Sink对象
- 示例
- Router-Dealer 路由-点对点模式
- 路由和点对点
- 路由套接字
- 点对点套接字
- 示例
- XSub-XPub 超级订阅分发模式
- 超级订阅者/发布者
- 示例