实验环境
主机名 | 功能 |
---|---|
server1 | worker端 |
server3 | client端 |
一.Gearman运行过程
一个Gearman请求的处理过程涉及三个角色:Client -> Job -> Worker。
- Client:请求的发起者,可以是 C,PHP,Perl,MySQL UDF 等等。
- Job:请求的调度者,用来负责协调把 Client 发出的请求转发给合适的 Worker。
- Worker:请求的处理者,可以是 C,PHP,Perl 等等。
因为 Client,Worker 并不限制用一样的语言,所以有利于多语言多系统之间的集成。
甚至我们通过增加更多的 Worker,可以很方便的实现应用程序的分布式负载均衡架构。
二.Gearman实现redis和MySQL同步
lnmp网站服务器架构实现redis做MySQL的缓存
详细步骤参见博客:https://blog.csdn.net/chaos_oper/article/details/90183482
但是当更新MySQL数据库中数据时,redis缓存内容并未同步更新!
如何解决这个问题?
mysql 端更改数据后通过触发器 (插件) 提交, 最后提交给geramand(server端) 提交给worker端口(php-gearman/php-redis) 最后提交给redsi 同步成功。
client 端:
1.下载解压工具
2.下载udf-json函数并解压
3.安装mariadb-devel
4.安装编译软件gcc
5.进入解压后的 lib_mysqludf_json-master目录进行编译
6.将lib_mysqludf_json.so复制到/usr/lib64/mysql/plugin/下
7.进入数据库查看
8.下载并安装相关软件
9.下载并解压gearman-mysql-udf-0.6.tar.gz
10.进入到解压后的目录 gearman-mysql-udf-0.6后,编译
11.make && make install
12.进入数据库注册udf函数
13.创建函数
14.查看是否创建成功
15.指定gearmand的服务信息
16.修改test.sql并导入到数据库中
17.进入数据库后查看触发器
work端:
1.安装gearman并开启
2.查看gearman端口
3.在/usr/local/目录下编辑测试页面:
4.后台运行
测试:
1.在client端更新mysql数据库的数据:
2.浏览器访问172.25.13.1.数据同步成功!