ZMQ多种架构:
懒惰海盗模式:
1,确认信号到达,轮询套接字并接收应答;
2,超时没有应答,重新发送请求;
3,多次请求后没有应答,放弃事务.
代码见:lpclient.c
缺点:不能执行到备份或备份服务器的故障切换.
简单海盗模式:
一个工人崩溃,另一个工人接管它,最终工人都崩溃.
需要重启工人和客户端.
代码见spqueue.c和spworker.c
偏执海盗模式:(健壮的可靠队列)
多个worker,客户端依次路由每个workers.
客户 客户 客户
|———|———|
|
ROUTER
|
|———|———|
worker worker worker
其中一个worker崩溃,客户端请求会自动路由到下一个worker,继续完成自己的请求.
可以自动检测有几个worker存活.
int worknum = zlist_size (workers);
worker_t worker = (worker_t ) zlist_first (workers);
while (worker)
{
获取worker->identity发送给worker
worker = (worker_t *) zlist_next (workers);
}
主要参考zguide/examples/C中ppworker.c和ppqueue.c.
在一定条件下,自动路由这一优点保证了客户端请求一定可以得到应答的特点.对于大数据量的数据也可以进行拆分处理,并且不会因为一个死机而导致该次处理失败.