最近在研究 ZeroMQ 库的使用,所以在这里总结一下各种模式,以便日后拿来使用。
关于 ZeroMQ 库,我就不多介绍了,大家可以参考下面一些文章,以及他的官网、使用指南、API 参考、项目仓库等内容。
ZeroMQ 的目标是成为 OSI 模型的传输层(Transport Layer)的标准协议,所以他支持各种操作系统,支持多达30种以上的语言,是跨平台、跨语言的传输层库,而且性能是其绝对优势。所以对于进程间通信、节点间通信均可以使用他,可以用他直接替代 socket 的操作。而且用过之后就知道,他用起来非常的简单,学习成本很低,我只用了 1 天时间就把他的 3 种常用模式用 Python 实现了,代码在这里,大家可以参考一下,接下来准备用 C++ 再实现一遍。
ZeroMQ 总结的通信模式如下:
- PUB and SUB
- REQ and REP
- REQ and ROUTER
- DEALER and REP
- DEALER and ROUTER
- DEALER and DEALER
- ROUTER and ROUTER
- PUSH and PULL
- PAIR and PAIR
ZeroMQ 总结的应用模式如下:
- Request-reply, which connects a set of clients to a set of services. This is a remote procedure call and task distribution pattern.
- Publish-subscribe, which connects a set of publishers to a set of subscribers. This is a data distribution pattern.
- Pipeline, which connects nodes in a fan-out / fan-in pattern that can have multiple steps, and loops. This is a parallel task distribution and collection pattern.
当然,实际使用中还得了解一些解决具体问题的模式,所以下面把使用指南中的一些模式整理如下,方便自己日后拿来使用。
最常用的三种模式:
1. Request-Reply
2. Publish-Subscribe
3. Parallel Pipeline
其他模式:
A. Request-Reply Patterns
1. The Load-balancing Pattern
2. The Asynchronous Client-Server Pattern
3. Client-side Reliability (Lazy Pirate Pattern)
4. Basic Reliable Queuing (Simple Pirate Pattern)
5. Robust Reliable Queuing (Paranoid Pirate Pattern)
6. Service-Oriented Reliable Queuing (Majordomo Pattern)
7. Disconnected Reliability (Titanic Pattern)
8. High-availability Pair (Binary Star Pattern)
9. Brokerless Reliability (Freelance Pattern)
B. Publish-Subscribe Patterns
1. Pub-sub Tracing (Espresso Pattern)
2. Slow Subscriber Detection (Suicidal Snail Pattern)
3. High-speed Subscribers (Black Box Pattern)
4. Reliable Publish-Subscribe (Clone Pattern)