Releases · gearman/gearmand · GitHub

一、Gearmand简介
Gearmand是一个任务分发系统,是用来将工作委派给其他机器、分布式的调用,做任务分发。常用来并发的做某项工作,都在多个调用间做负载均衡,或用来调用其他语言的函数的系统。

简而言之,就是客户端程序会把请求提交给gearmand,gearmand 会把请求转发给合适的 worker 来处理这个请求,最后还通过 gearmand 返回结果。

二、实现原理
运行流程图:

Client – > Job --> Worker
Client:任务发起者
Job:任务分配者
Worker:任务处理者
支持 mysql、pq、sqlit、brizzle、memcachedb做持久化存储
可开启多个进程,支持failover(自动故障转移)

简述执行流程:
Client 端作为请求发起者,客户端程序可以是任何一种语言,C、PHP、Perl、Python 等,
Job 请求调度者,负载协调把 Client 发出的请求转发给合适的 Worker
Worker 请求处理者,处理 Job 分发来的请求,可以是任何一种语言

三、源码编译搭建
gearmand安装包下载地址:https://github.com/gearman/gearmand/releases
我这里下载的是版本是gearmand-1.1.19.1.tar.gz

  • 安装依赖:
configure: error: could not find boost,==> yum -y install gcc-c++.x86_64 gperf[root@test-36 gearmand-1.1.19.1]# yum -y install boost-devel gperf libevent-devel libuuid-devel gcc boost boost-devel gcc-c++.x86_64 gperf
  • 编译,安装
[root@test-36 gearmand-1.1.19.1]# ./configure
[root@test-36 gearmand-1.1.19.1]# make
[root@test-36 gearmand-1.1.19.1]# make install/usr/bin/mkdir -p '/usr/local/bin'/bin/sh ./libtool   --mode=install /usr/bin/install -c bin/gearman bin/gearadmin '/usr/local/bin'
libtool: install: /usr/bin/install -c bin/.libs/gearman /usr/local/bin/gearman
libtool: install: /usr/bin/install -c bin/gearadmin /usr/local/bin/gearadmin[root@test-36 gearmand-1.1.19.1]# ls /usr/local/bin/
gearadmin  gearman[root@test-36 gearmand-1.1.19.1]# gearmand -Vgearmand 1.1.19.1 - https://github.com/gearman/gearmand/issues

启动gearmand程序

[root@test-36 sbin]# mkdir /usr/local/var/log/ -p
[root@test-36 sbin]# touch /usr/local/var/log/gearmand.log# 启动gearmand
# 启动gearmand,-L 指定只监听 IPV4,-d 以守护进程的方式启动,-p port 默认 4730
[root@test-36 sbin]# ./gearmand -L 0.0.0.0 -d[root@test-36 sbin]# ps -ef | grep gearmand
root     13205     1  0 23:43 ?        00:00:00 gearmand -L 0.0.0.0 -dport:
[root@test-36 sbin]# netstat -atunpl | grep gearmand
tcp        0      0 0.0.0.0:4730            0.0.0.0:*               LISTEN      13205/gearmand

编写gearmand启动脚本

cat gearman_ctl #!/bin/bash
#gearmand        Startup script for the Gearman server
#
# chkconfig: - 85 15
# description: Gearman is a distributed job system.
# processname: gearmand
# config: /etc/sysconfig/gearmand
# pidfile: /var/run/gearmand/gearmand.pid
#
### BEGIN INIT INFO
# Provides: gearmand
# Required-Start: $local_fs $network
# Required-Stop: $local_fs $network
# Default-Start:
# Default-Stop:
# Short-Description: start and stop the Gearman server
# Description: Gearman is a distributed job system.
### END INIT INFO o# Configurations
PREFIX="/usr/local"   #gearmand 目录
USER="root"   # 执行用户# Source function library.
. /etc/rc.d/init.d/functionsif [ -f /etc/sysconfig/gearmand ]; then/etc/sysconfig/gearmand
fiif [ ! -d "/var/run/gearmand" ]; thenmkdir /var/run/gearmandchown $USER /var/run/gearmandchmod 700 /var/run/gearmand
fi[ -z "${PIDFILE}" ] && pidfile="/var/run/gearmand/gearmand.pid"
[ -z "${LOCKFILE}" ] && lockfile="/var/lock/subsys/gearmand"gearmand=$PREFIX/sbin/gearmand
prog=gearmandRETVAL=0start() {echo -n $"Starting $prog: "#daemon --pidfile=$pidfile --user=$USER $gearmand -d $OPTIONSdaemon --pidfile=$pidfile --user=$USER $gearmand -d -p 4730RETVAL=$?echo[ $RETVAL = 0 ] && (touch $lockfile; pgrep -f $gearmand > $pidfile)return $RETVAL}stop() {echo -n $"Stopping $prog: "killproc -p $pidfile $gearmandRETVAL=$?echo[ $RETVAL = 0 ] && rm -f $lockfile $pidfile
}# See how we were called.
case "$1" instart)start;;stop)stop;;status)status -p $pidfile $gearmandRETVAL=$?;;restart|reload)stopstart;;condrestart|try-restart)if status -p $pidfile $gearmand >&/dev/null; thenstopstartfi;;*)echo $"Usage: $prog {start|stop|restart|reload|condrestart|status|help}"RETVAL=3
esacexit $RETVAL

任务分发Gearmand的简介及搭建相关推荐

  1. 【Android 事件分发】ItemTouchHelper 简介 ( 拖动/滑动事件 | ItemTouchHelper.Callback 回调 )

    Android 事件分发 系列文章目录 [Android 事件分发]事件分发源码分析 ( 驱动层通过中断传递事件 | WindowManagerService 向 View 层传递事件 ) [Andr ...

  2. Nexus私服简介及搭建

    nexus私服简介及搭建 一 私服是什么? 1.1 私服的作用 1.2 Nexus下载 1.3 使用Nexus搭建私服 1.3.1可以修改默认端口 1.4 登陆私服时密码不对的问题解决方案 二私服的使 ...

  3. 【存储】GPFS简介及搭建

    [存储]GPFS简介及搭建 第一章 GPFS简介 1.1  GPFS 文件系统介绍 IBM的GPFS(General Parallel File System,通用并行文件系统)可以让用户共享文件系统 ...

  4. NFS(网络文件系统)简介及搭建

    NFS简介及搭建 网络文件系统 定义 演化 特点 工作原理 网络文件系统架构 网络文件系统协议 网络文件系统中的创新 网络文件系统的替代物 部署NFS 实验环境 安装nfs.rpcbind服务 在no ...

  5. 树莓派4b入门之开发RFID系统—简介、搭建MFRC522-SPI环境

    树莓派4b入门之开发RFID系统-简介.搭建MFRC522-SPI环境 一.系统简介 二.模块连接 1.引脚定义 2.接口对应关系 三.搭建接口环境 1.开启SPI 2.模块功能设计 3.安装SPI ...

  6. ad hoc模式的wifi网简介及其搭建

    Ad hoc模式的wifi网简介及搭建 1.wireless-fidelity(wifi)定义及组成:使用IEEE802.11标准协议的局域网,通常称为wifi.它的基础组成是:无线网卡及一台AP(网 ...

  7. 二级域名分发美化版源码+搭建教程

    简介: 今天给大家搭建一个二级域名分发系统美化版(代码改了下,勿喷)  这个程序是快乐域名的,拿去用就可以了! 测试环境:EP主机  PHP7.1以上  现在我们来打开面板 1.创建网站,上传源码至网 ...

  8. Beego框架简介准备搭建分布式爬虫

    一.Beego简介 用scaffold脚手架工具搭建框架 每个方法都有@Router注解 Beego是MVC框架:降低耦合,提供复用性 部署 灰度上线:按产品需求优先级,抽出核心需求,在满足用户基本要 ...

  9. RabbitMQ入门(简介、搭建环境、五种工作模式)介绍

    1. RabbitMQ介绍 RabbitMQ是一个由erlang开发的AMQP(Advanced Message Queue )的开源实现.AMQP 的出现其实也是应了广大人民群众的需求,虽然在同步消 ...

最新文章

  1. 如何正确的学习Blender-入门到精通课程
  2. ShakeDrop:深度残差学习中的 ShakeDrop 正则化
  3. oracle 删除旧数据,Oracle 删除海量数据下避免Ora-01555快照过旧错误的执行脚本
  4. jupyter notebook即原来的Ipython notebook的使用方法
  5. 轻量级开源内容管理系统-YzmCMS v6.0源码
  6. 云应用性能管理哪家强?性能魔方mmTrix自动测评、检测与加速
  7. 方正伪GBK(字体名称中有GBK且字数不足21003)字体列表及使用注意事项
  8. Python爬取——国家统计局省份加城市 并写入数据库
  9. python:对数log 零的处理
  10. 英文科技论文写作与学术报告Lecture 4习题答案
  11. android 农历工具类,公历农历互相转换的Java日历工具类
  12. C++实现客户机(CLIENT)类
  13. 红警3命令与征服注册激活启动cdkey联机问题
  14. CentOS 基础命令 III
  15. 用uniapp开发打包多端应用完整指南
  16. Arduino Uno 火焰传感器实验
  17. 【Matlab】多元线性回归(Excel可直接替换数据)
  18. gram矩阵的性质_矩阵分析(九)Gram矩阵
  19. Halcon 字体设置
  20. gstreamer element创建

热门文章

  1. N054_根据模板将excel内容转ppt
  2. [NAKED-ART] 05-01comp NO.00151 淑女の情景 [209P474.97M]
  3. 牛客每日练习----德玛西亚万岁,求最值,小牛再战
  4. 上市公司财务分析的主要方法
  5. 【路径规划】邮政运输网络中的邮路规划和邮车调度【含Matlab源码 648期】
  6. TIOBE 202106 编程语言排行榜(查询网址)
  7. Leetcode——安卓系统手势解锁(九宫格)
  8. 教育部:不得将研究生当作廉价劳动力!
  9. CSS进阶(5)—— 深入理解margin
  10. 最全的OLT设备介绍