数据库进程间通信解决方案(二)
在《数据库进程间通信解决方案(一)》中我介绍了使用 fifo 管道实现数据与进程通信。
作者:Mr. Neo Chen (陈景峯), netkiller, BG7NYT
下面我们介绍使用 ZeroMQ 实现数据库与进程通信
1. 背景
之前我发表过一篇文章 http://netkiller.github.io/journal/mysql.plugin.fifo.html
该文章中提出了通过fifo 管道,实现数据库与其他进程的通信。属于 IPC 机制(同一个OS/服务器内),后我有采用ZeroMQ重新实现了一个 RPC 机制的方案,同时兼容IPC(跨越OS/服务器)
各种缩写的全称 IPC(IPC :Inter-Process Communication 进程间通信),ITC(ITC : Inter Thread Communication 线程间通信)与RPC(RPC: Remote Procedure Calls远程过程调用)。
支持协议
inproc://my_publisher
tcp://server001:5555
ipc:///tmp/feeds/0
2. 应用场景
如果你想处理数据,由于各种原因你不能在程序中实现,你可以使用这个插件。当数据库中的数据发生变化的时候出发某种操作,你可以使用这个插件。
有时候你的项目可能是外包的,项目结束后外包方不会在管你,你有无法改动现有代码,或者根本不敢改。你可以使用这个插件
采用MQ技术对数据库无任何压力,与采用程序处理并无不同,省却了写代码
处理方法,可以采用同步或者异步方式
例 1. 发送短信
发送短信、邮件,只需要查询出相应手机号码,发送到MQ的服务端,服务端接收到手机号码后,放入队列中,多线程程序从队列中领取任务,发送短信。
select zmq_client('tcp://localhost:5555',mobile) from demo where subscribed='Y' ...;
传递多个参数,可以使用符号分隔
select zmq_client('tcp://localhost:5555',co