为什么使用ZeroMQ作为消息队列

1 基本优点

1.1 简单

  1. 仅仅提供24个API接口,风格类似于BSD Socket。
  2. 处理了网络异常,包括连接异常中断、重连等。
  3. 改变TCP基于字节流收发数据的方式,处理了粘包、半包等问题,以msg为单位收发数据,结合Protocol Buffers,可以对应用层彻底屏蔽网络通信层。
  4. 对大数据通过SENDMORE/RECVMORE提供分包收发机制。
  5. 通过线程间数据流动来保证同一时刻任何数据都只会被一个线程持有,以此实现多线程的“去锁化”。
  6. 通过高水位HWM来控制流量,用交换SWAP来转储内存数据,弥补HWM丢失数据的缺陷。
  7. 服务器端和客户端的启动没有先后顺序。

1.2 灵活

  1. 支持多种通信协议,可以灵活地适应多种通信环境,包括进程内、进程间、机器间、广播。
  2. 支持多种消息模型,消息模型之间可以相互组合,形成特定的解决方案。

1.3 跨平台

支持Linux、Windows、OS X等。

1.4 多语言

可以绑定C、C++、Java、.NET、Python等30多种开发语言。

1.5 高性能

相对同类产品,性能卓越。

2 业务考虑

  1. 支持多种消息模型,交叉式收发,可以在程序中使用zmq给消息做标识,仅在匹配的机器上运行
  2. 性能卓越,可能有机器收不到信息,但对于分布式集群来说不算什么
  3. 轻量级,不会给程序带来巨大的负担
  4. 支持多种通信协议(进程内,进程间,机器间,广播)

你可能感兴趣的:(其他)