Gearman安装与使用,分布式消息队列
1 介绍:
Gearman是一个用来把工作委派给其他机器、分布式的调用更适合做某项工作的机器、并发的做某项工作在多个调用间做负载均衡、或用来在调用其它语言的函数的系统。
2 组成:
- Gearman client:提供gearman client API给应用程序调用,它是请求的发起者。
- Gearman job server:将客户端的请求分发到各个gearman worker的调度者,相当于中央控制器,但它不处理具体业务逻辑。
- Gearman worker:提供gearman worker API给应用程序调用,具体负责客户端的请求,并将处理结果返回给客户端。
3运行过程
- 一个Gearman请求的处理过程涉及三个角色:Client -> Job -> Worker。
- Client:请求的发起者
- Job:请求的调度者,用来负责协调把 Client 发出的请求转发给合适的 Work
- Worker:请求的处理者
4 gearmand安装
5 gearmand使用
5.1创建worker
<?php
$worker= new GearmanWorker();
$worker->addServer('192.168.142.130 ','4730 ');
$worker->addFunction("sendMail","my_sendmail_function");
while($worker->work());function my_sendmail_function($job){//接受数据$tmp=$job->workload();$receiverArr=unserialize($tmp); // 反序列化为数组$from=$receiveArr['from']; //1$to=$receiveArr['to']; //2$subject=$receiveArr['subject']; //3$content=$recriver['content']; //4//
//发送邮件
return $subject.' sendmail OK';}
5.2 创建一个client
创建一个client.php。do()方法是阻塞模式,必须等待worker端返回结果,程序才能停止。
<?php
$client=new GearmanClient();//初始化一个client
$client->addServer('192.168.142.130', '4730');$job=array(); //定义初始化一个job数组,来存放数据,把client的请求发送出去
$job['from']='CleverCode'; //1 把存放的数据存放到数组中
$job['to']='Gearman'; //2
$job['subject']='hello Gearman'; //3
$job['content']='hello Gearman:this is from GearmanClient'; //4
$job=serialize($job); // 序列化成字符串//等到worker端返回结果,才会结束。
$ret=$clent->do("sendMail",$job);
?>
使用PHP提供的序列化函数serialize()
jobserialize=serialize(job_serialize = serialize(jobserialize=serialize(job); // 序列化成字符串
接下来就是将这个字符串存入数据库即可,当我们将数据读取出来时,再将这个字符串进行反序列为数组即可
jobrestore=unserialize(job_restore = unserialize(jobrestore=unserialize(job_serialize); // 反序列化为数组
Gearman安装与使用,分布式消息队列相关推荐
- 分布式消息队列RocketMQ(一)安装与启动
分布式消息队列RocketMQ 一.RocketMQ简介 RocketMQ(火箭MQ) 出自于阿里,后开源给apache成为apache的顶级开源项目之一,顶住了淘宝10年的 双11压力 是电商产品的 ...
- 分布式消息队列 — RabbitMQ(3)
目录 文章目录 目录 前文列表 前言 通道 Channel 一个基本的生产者/消费者实现 消费者 生产者 运行结果 应用预取计数 应用 ACK 机制 最后 前文列表 快速入门分布式消息队列之 Rabb ...
- OSSIM中分布式消息队列应用
OSSIM中分布式消息队列应用 1. 消息队列处理 企业日志数量正在以指数级形式高速增长,日志数据的具有海量.多样.异构等特点,基于传统的单一节点混合式安装的OSSIM平台(指OSSIM 4.4及以 ...
- 分布式消息队列RocketMQ 快速入门
分布式消息队列RocketMQ 一 RocketMQ概述 概述 1.MQ简介 MQ,Message Queue,是一种提供消息队列服务的中间件,是一套提供了消息生产.存储.消费全过程API的软件系统. ...
- 分布式服务(RPC)+分布式消息队列(MQ)面试题精选
分布式系统(distributed system)是建立在网络之上的软件系统.正是因为软件的特性,所以分布式系统具有高度的内聚性和透明性.因此,网络和分布式系统之间的区别更多的在于高层软件(特别是操作 ...
- [.NET领域驱动设计实战系列]专题八:DDD案例:网上书店分布式消息队列和分布式缓存的实现...
原文:[.NET领域驱动设计实战系列]专题八:DDD案例:网上书店分布式消息队列和分布式缓存的实现 一.引言 在上一专题中,商家发货和用户确认收货功能引入了消息队列来实现的,引入消息队列的好处可以保证 ...
- 深入理解分布式消息队列
一.消息队列的演进 分布式消息队列中间件是是大型分布式系统中常见的中间件.消息队列主要解决应用耦合.异步消息.流量削锋等问题,具有高性能.高可用.可伸缩和最终一致性等特点.消息队列已经逐渐成为企业应用 ...
- 分布式消息队列 Kafka
分布式消息队列 Kafka 2016-02-25 杜亦舒 Kafka是一个高吞吐量的.分布式的消息系统,由Linkedin开发,开发语言为scala 具有高吞吐.可扩展.分布式等特点 适用场景 活动数 ...
- Kafka 分布式消息队列介绍
Kafka 分布式消息队列 类似产品有JBoss.MQ 一.由Linkedln 开源,使用scala开发,有如下几个特点: (1)高吞吐 (2)分布式 (3)支持多语言客户端 (C++.Java) 二 ...
- rockemq 发送延迟消息_58分布式消息队列WMB设计与实践
背景 为了能够承载58业务的快速扩展及海量的用户访问,分布式系统已经成为公司一种主流架构设计.而消息队列是大型分布式系统中不可或缺的通信桥梁,在分布式系统解耦.异步通信.事件通知.流量削峰等业务场景中 ...
最新文章
- Windows Tensorflow GPU安装
- 模型可解释性-贝叶斯方法
- 操作云数据库出现Access denied for user ‘common_1‘@‘%‘ to database ‘seata_storage‘
- opencsv : 解析CSV
- 13 | 线性排序:如何根据年龄给100万用户数据排序?
- docker 容器安装conposer_docker和php:将依赖项(composer)放入容器中
- Mac下安装caffe(cpu-only)
- hdu 2883 kebab 网络流
- java.lang.IllegalStateException: UT010019: Response already commited
- “心脏出血”后,OpenSSL 起死回生靠什么?
- 设置谷歌浏览器黑色主题
- 新网域名转出及阿里云域名转入
- jquery省市县三级导航栏
- python求15 17 23 65 97的因数_Python练习题
- jUI项目最初的名字为DWZ,这个名字是怎么来的?后来为什么又改为jUI?
- R语言入门(第一篇)--R软件基本操作
- 团队协作工具,如何加强团队协作能力
- AM中使用PML语言标注船体结构
- 我的河海大学计算机考研经验之谈
- ADP的人力资源外包方法论