任务分发Gearmand的简介及搭建
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的简介及搭建相关推荐
- 【Android 事件分发】ItemTouchHelper 简介 ( 拖动/滑动事件 | ItemTouchHelper.Callback 回调 )
Android 事件分发 系列文章目录 [Android 事件分发]事件分发源码分析 ( 驱动层通过中断传递事件 | WindowManagerService 向 View 层传递事件 ) [Andr ...
- Nexus私服简介及搭建
nexus私服简介及搭建 一 私服是什么? 1.1 私服的作用 1.2 Nexus下载 1.3 使用Nexus搭建私服 1.3.1可以修改默认端口 1.4 登陆私服时密码不对的问题解决方案 二私服的使 ...
- 【存储】GPFS简介及搭建
[存储]GPFS简介及搭建 第一章 GPFS简介 1.1 GPFS 文件系统介绍 IBM的GPFS(General Parallel File System,通用并行文件系统)可以让用户共享文件系统 ...
- NFS(网络文件系统)简介及搭建
NFS简介及搭建 网络文件系统 定义 演化 特点 工作原理 网络文件系统架构 网络文件系统协议 网络文件系统中的创新 网络文件系统的替代物 部署NFS 实验环境 安装nfs.rpcbind服务 在no ...
- 树莓派4b入门之开发RFID系统—简介、搭建MFRC522-SPI环境
树莓派4b入门之开发RFID系统-简介.搭建MFRC522-SPI环境 一.系统简介 二.模块连接 1.引脚定义 2.接口对应关系 三.搭建接口环境 1.开启SPI 2.模块功能设计 3.安装SPI ...
- ad hoc模式的wifi网简介及其搭建
Ad hoc模式的wifi网简介及搭建 1.wireless-fidelity(wifi)定义及组成:使用IEEE802.11标准协议的局域网,通常称为wifi.它的基础组成是:无线网卡及一台AP(网 ...
- 二级域名分发美化版源码+搭建教程
简介: 今天给大家搭建一个二级域名分发系统美化版(代码改了下,勿喷) 这个程序是快乐域名的,拿去用就可以了! 测试环境:EP主机 PHP7.1以上 现在我们来打开面板 1.创建网站,上传源码至网 ...
- Beego框架简介准备搭建分布式爬虫
一.Beego简介 用scaffold脚手架工具搭建框架 每个方法都有@Router注解 Beego是MVC框架:降低耦合,提供复用性 部署 灰度上线:按产品需求优先级,抽出核心需求,在满足用户基本要 ...
- RabbitMQ入门(简介、搭建环境、五种工作模式)介绍
1. RabbitMQ介绍 RabbitMQ是一个由erlang开发的AMQP(Advanced Message Queue )的开源实现.AMQP 的出现其实也是应了广大人民群众的需求,虽然在同步消 ...
最新文章
- 如何正确的学习Blender-入门到精通课程
- ShakeDrop:深度残差学习中的 ShakeDrop 正则化
- oracle 删除旧数据,Oracle 删除海量数据下避免Ora-01555快照过旧错误的执行脚本
- jupyter notebook即原来的Ipython notebook的使用方法
- 轻量级开源内容管理系统-YzmCMS v6.0源码
- 云应用性能管理哪家强?性能魔方mmTrix自动测评、检测与加速
- 方正伪GBK(字体名称中有GBK且字数不足21003)字体列表及使用注意事项
- Python爬取——国家统计局省份加城市 并写入数据库
- python:对数log 零的处理
- 英文科技论文写作与学术报告Lecture 4习题答案
- android 农历工具类,公历农历互相转换的Java日历工具类
- C++实现客户机(CLIENT)类
- 红警3命令与征服注册激活启动cdkey联机问题
- CentOS 基础命令 III
- 用uniapp开发打包多端应用完整指南
- Arduino Uno 火焰传感器实验
- 【Matlab】多元线性回归(Excel可直接替换数据)
- gram矩阵的性质_矩阵分析(九)Gram矩阵
- Halcon 字体设置
- gstreamer element创建
热门文章
- N054_根据模板将excel内容转ppt
- [NAKED-ART] 05-01comp NO.00151 淑女の情景 [209P474.97M]
- 牛客每日练习----德玛西亚万岁,求最值,小牛再战
- 上市公司财务分析的主要方法
- 【路径规划】邮政运输网络中的邮路规划和邮车调度【含Matlab源码 648期】
- TIOBE 202106 编程语言排行榜(查询网址)
- Leetcode——安卓系统手势解锁(九宫格)
- 教育部:不得将研究生当作廉价劳动力!
- CSS进阶(5)—— 深入理解margin
- 最全的OLT设备介绍