配置 gearman 实现数据同步
Gearman是一个支持分布式的任务分发框架。
Gearman Job Server:Gearman核心程序,以守护进程形式运行在后台。
Gearman Client:可以理解为任务的收件员,比如我要在后台执行一个发送邮件的任务,可以在程序中调用一个Gearman Client并传入邮件的信息,然后就可以将执行结果立即展示给用户,而任务本身会慢慢在后台运行。
Gearman Worker:任务的真正执行者,一般需要自己编写具体逻辑并通过守护进程方式运行。
Gearman Worker接收到Gearman Client传递的任务内容后,会按顺序处理。
首先利用mysql UDF(通过了lib_mysqludf_json和gearman-mysql-udf的组合实现)在mysql中的数据发生改变时触动触发器将数据传入Gearman中,这时的mysql相当于Gearman的clinet。然后运行自己编写的php程序作为worker,将Gearman中的数据传到Redis中去,这时的Redis相当于是Gearman的consumer。
安装 lib_mysqludf_json
lib_mysqludf_json UDF 库函数将关系数据映射为 JSON 格式。通常,数据库中的数据映
射为 JSON 格式,是通过程序来转换的。
[root@server4 ~]# yum install -y mariadb-devel
[root@westos_student73 Desktop]# scp lib_mysqludf_json-master.zip root@172.25.10.4:/root
[root@server4 ~]# ls
lib_mysqludf_json-master.zip test.sql
[root@server4 ~]# yum install -y unzip[root@server4 ~]# unzip lib_mysqludf_json-master.zip
[root@server4 ~]# cd lib_mysqludf_json-master/
[root@server4 lib_mysqludf_json-master]# ls
lib_mysqludf_json.c lib_mysqludf_json.so README.md
lib_mysqludf_json.html lib_mysqludf_json.sql[root@server4 lib_mysqludf_json-master]# yum install -y gcc
[root@server4 lib_mysqludf_json-master]# ls
[root@server4 lib_mysqludf_json-master]# gcc $(mysql_config --cflags) -shared -fPIC -o lib_mysqludf_json.so lib_mysqludf_json.c