gearman mysql_Gearman Server 使用 MySQL UDFs 来管理和保持队列

我们知道 Gearman 的任务是一个数组结构,只存在内存中,一断电怎么样这个信息就会不存在。所以新的 gearman 开发了一个功能,就是通过 mysql 来存储任务信息。这样可以持久的保持任务的状态。也可以直接对数据库的操作,然后就直接下发任务。下面的内容,基本照着英文译过来的。。。

支持持久任务保持的 gearman 是 c 重写的,所以我们要先安装这个 c 重写的 gearman 的程序。

安装 gearman 的程序

#yum install libevent-devel

#./configure

#make

#make install

测试 Gearman 的功能是否正常

先使用 earmand -u root 来启动服务,来接任务分发管理,在启动源码包中的 examples 内的 reverse_worker 和 reverse_client 来测试.

[root@35B examples]#gearmand -u root

[1] 11921

[root@35B examples]# ./reverse_worker &

[2] 11981

[root@35B examples]# ./reverse_client "Hello, Gearman"

Job=H:35B:1 Workload=Hello, Gearman Result=namraeG ,olleH

Result=namraeG ,olleH

这样有正常的输出就行了。说明客户端,服务器,Worker 都运行正常。“Job=…”这行输出的信息是 reverse_worker 的。“Result=…” 这行输出的信息是 reverse_client 的.

安装 Gearman-mysql-udf 的 MySQL 插件

#./configure

#make

#make install

# vim /etc/ld.so.conf.d/gearman.conf

/usr/local/lib

# ldconfig

注册这些功能到 mysql 中,如果出错,就是 MySQL 不能找到 lib ,需要运行上面的步骤。

mysql -uroot -p

CREATE FUNCTION gman_do RETURNS STRING

SONAME "libgearman_mysql_udf.so";

CREATE FUNCTION gman_do_high RETURNS STRING

SONAME "libgearman_mysql_udf.so";

CREATE FUNCTION gman_do_low RETURNS STRING

SONAME "libgearman_mysql_udf.so";

CREATE FUNCTION gman_do_background RETURNS STRING

SONAME "libgearman_mysql_udf.so";

CREATE FUNCTION gman_do_high_background RETURNS STRING

SONAME "libgearman_mysql_udf.so";

CREATE FUNCTION gman_do_low_background RETURNS STRING

SONAME "libgearman_mysql_udf.so";

CREATE AGGREGATE FUNCTION gman_sum RETURNS INTEGER

SONAME "libgearman_mysql_udf.so";

CREATE FUNCTION gman_servers_set RETURNS STRING

SONAME "libgearman_mysql_udf.so";

加载这些 so 文件后,我们先设置 gearman 的服务器

mysql> SELECT gman_servers_set("123.125.12.72");

+------------------------------------+

| gman_servers_set("123.125.12.72") |

+------------------------------------+

| 123.125.12.72 |

+------------------------------------+

1 row IN SET (0.00 sec)

使用 Gearman-mysql-udf

设置完服务器,接下来我们可以直接对这个服务来进行任务的查询,运行操作之类,我们只要给上面加入的那几个功能,当能 MySQL 的内部函数来使用就行了。

SELECT gman_do("reverse", input) AS test FROM mysql.user;

SELECT gman_do_high("reverse", input) AS test FROM mysql.user;

SELECT gman_do_background("reverse", input) AS test FROM mysql.user;

SELECT gman_sum("wc", input) AS test FROM mysql.user;

这时 MySQL UDF 相当于标准的 Gearman 的客户端。可以直接使用 MySQL 命令进行管理,也可以用别的程序连接 MySQL 来进行操作.

我们来测试一下

SELECT gman_do("reverse",'fukai') AS test FROM mysql.user;

+-------+

| test |

+-------+

| iakuf |

| iakuf |

| iakuf |

| iakuf |

| iakuf |

| iakuf |

+-------+

6 rows IN SET (0.00 sec)

以后使用程序来操作这个就行了。

参考:

http://oddments.org/?p=30 New Gearman Server & Library in C, MySQL UDFs

http://oddments.org/?p=31 Gearman MySQL UDFs: URL Processing

觉得文章有用?立即:

和朋友一起 共学习 共进步!

猜想失败,您看看下面的文章有用吗?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值