MySQL-fifo-Plugin 进程间通信解决方案开源项目

我要开发同款
匿名用户2013年12月16日
83阅读

技术信息

开源地址
https://github.com/netkiller/mysql-image-plugin
授权协议
BSD

作品详情

MySQLfifoPlugi是数据库与其他第三方应用程序进程间通信解决方案。

1. 背景

你是否有这样的需求:

你需要监控访问网站的IP,当同一个IP地址访问次数过多需要做出处理,例如拉黑,直接丢进iptables防火墙规则连中。你的做法只能每个一段时间查询一次数据库,并且判断是否满足拉黑需求?

你是否需要监控某些数据发生变化,并通知其他程序作出处理。例如新闻内容修改后,需要立即做新页面静态化处理,生成新的静态页面

你使用数据库做队列,例如发送邮件,短信等等。你要通知发送程序对那些手机或者短线发送数据

2. 解决思路

需要让数据库与其他进程通信,传递信号

例如,发送短信这个需求,你只要告诉发短信的机器人发送的手机号码即可,机器人永远守候那哪里,只要命令一下立即工作。

监控数据库变化的需求原理类似,我们需要有一个守护进程等待命令,一旦接到下达命令便立即生成需要的静态页面

这里所提的方案是采用fifo(FirstIFirstOut)方案,通过管道相互传递信号,使两个进程协同工作,这样的效率远比定时任务高许多。fifo是用于操作系统内部进程间通信,如果跨越操作系统需要使用Socket,还有一个新名词MQ(Messagequeue).

这里只做fifo演示,将本程序改为Socket方案,或者直接集成成熟的MQ也是分分钟可以实现。

3. Mysqlplugi

我开发了几个UDF,共4个fuctio

UDF

fifo_create(pipeame)

创建管道.成功返回true,失败返回flase.

fifo_remove(pipeame)

删除管道.成功返回true,失败返回flase.

fifo_read(pipeame)

读操作.

fifo_write(pipeame,message)

写操作pipeame管道名,message消息正文.

有了上面的fuctio后你就可以在begi,commit,rollback直接穿插使用,实现在事物处理期间做你爱做的事。也可以用在触发器与EVENT定时任务中。

4. plugi的开发与使用

编译UDF你需要安装下面的软件包

sudoapt-getistallpkg-cofigsudoapt-getistalllibmysqlcliet-devsudoapt-getistallgccgcc-c++makeautomakeautocof

https://github.com/etkiller/mysql-fifo-plugi

编译udf,最后将so文件复制到/usr/lib/mysql/plugi/

gitcloehttps://github.com/etkiller/mysql-image-plugi.gitcdmysql-image-plugigcc-O3-g-I/usr/iclude/mysql-I/usr/iclude-fPIC-lm-lz-shared-ofifo.sofifo.csudomvfifo.so/usr/lib/mysql/plugi/

装载

createfuctiofifo_createretursstrigsoame'fifo.so';createfuctiofifo_removeretursstrigsoame'fifo.so';createfuctiofifo_readretursstrigsoame'fifo.so';createfuctiofifo_writeretursstrigsoame'fifo.so';

卸载

dropfuctiofifo_create;dropfuctiofifo_remove;dropfuctiofifo_read;dropfuctiofifo_write;

https://etkiller.github.io/joural/mysql.plugi.fifo.html

功能介绍

MySQL fifo Plugin 是数据库与其他第三方应用程序进程间通信解决方案。 1. 背景 你是否有这样的需求: 你需要监控访问网站的IP,当同一个IP地址访问次数过多需要做出处理,例如拉...

声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论