一、ZeroMQ介绍
ZeroMQ(也写作 ØMQ、0MQ 或 zmq)是一个高性能的异步消息库,用于构建分布式或网络应用。
它提供了一组简单易用的 API,用于发送消息到不同的进程或不同的设备之间,而无需手动管理底层网络或进程间通信。ZeroMQ 处理底层的 I/O 操作、重连、重试等,让开发者可以集中精力于应用逻辑。
二、ZeroMQ 的一些特点包括:
异步 I/O:ZeroMQ 使用非阻塞 I/O,这使得它可以处理大量的连接而不会阻塞。
消息传递:ZeroMQ 使用消息作为数据交换的基本单元。这可以简化应用程序的设计。
模式:ZeroMQ 提供了几种常见的消息传递模式,例如请求-回应(REQ/REP)、发布-订阅(PUB/SUB)、推-拉(PUSH/PULL)等。这可以简化应用程序的设计。
高性能:ZeroMQ 设计为高性能的,可以用于构建高吞吐量、低延迟的系统。
语言绑定:ZeroMQ 有多种语言的绑定,可以用于多种编程语言,例如 C、C++、Python、Go、Node.js 等。
无中心化:ZeroMQ 不需要中心服务器或代理,可以构建无中心的系统。
ZeroMQ 常用于构建分布式系统、微服务、实时系统等。例如,它被用于构建交易系统、物联网设备、游戏服务器等。
三、saltstack master如何使用ZeroMQ
saltstack master节点 需要开放端口 4505 和 端口 4506
Salt Master 4505端口是 ZeroMQ PUB协议监听端口。 这个是Salt 的消息发布系统,所有的minion都会连接该端口,订阅消息。 例如 master 发布一个任务消息,所有的minion都会收该任务消息,然后判断是否由自己执行。
Salt Master 4506端口是 ZeroMQ REP协议监听端口,这个是 Salt 客户端与服务端通信的端口。例如 Minion 执行任务后把结果发送给 Master 的 4506 这个 REP 端口。
四、minion支持并行多个任务
minion 可以支持配置并行执行任务数(queue队列),开启多线程模式执行任务。
saltstack 为什么比ansible 高效
ansible使用ssh服务连接节点执行任务
saltstack 使用订阅发布模式