理论背景:
MQ:消息队列是分布式系统中很重要的中间件。主要用于解决模块解耦,异步消息,流量销峰等问题。
类型:消息队列种类业界比较多,常用的有ZeroMQ、RabbitMQ、RocketMQ等等。
这里不逐一列举了,直奔今天的主题ZeroMQ。本系列将从纯代码的角度先讲ZeroMQ基本使用,再到最终使用ZeroMQ完成一个简单分布式计算系统,最后再理论总结。
具体实现:
ZeroMQ的三种基本模式:请求-应答模式;发布-订阅模式;管道模式。(ZeroMQ第三方库文件可以网上下载或者需要的留言)
1、请求应答模式。
不管是啥网络库,网络的通信的本质,无非就是下面两点:
服务端a、创建socket;b、监听指定端口;d、接收/发送数据
客户端a、创建socket;b、绑定(IP地址、端口) c、连接; d、接收/发送数据
服务端核心程序:
首先要创建上下文:
创建socket,第二个参数设置模式ZMQ_REP(应答模式)、绑定指定端口、接收/发送数据:
void *context = zmq_ctx_new ();
void *responder = zmq_socket (context, ZMQ_REP);
int rc = zmq_bind (responder, "tcp://*:5555");
char buffer [10];
zmq_recv (responder, buffer, 10, 0);
zmq_send (responder, "ZeroMQ!", 100, 0);
客户端核心程序类似:
创建上下文、创建socket(设置请求模式)、连接服务器、接收/发送数据
void *context = zmq_ctx_new ();
void *requester = zmq_socket (context, ZMQ_REQ);
zmq_connect (requester, "tcp://127.0.0.1:5555");
char buffer [10];
zmq_recv (responder, buffer, 10, 0);
zmq_send (responder, "lujiang", sizeof(buffer), 0);
(未完待续,下一篇见!)