任务分发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
- 安裝依賴:
- 編譯,安裝?
啟動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的简介及搭建的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 什么是Silverlight?
- 下一篇: 基于kreas框架的cv库的人脸识别(调