任务分发Gearmand的简介及搭建
Releases · gearman/gearmand · GitHub?
一、Gearmand簡介
Gearmand是一個(gè)任務(wù)分發(fā)系統(tǒng),是用來將工作委派給其他機(jī)器、分布式的調(diào)用,做任務(wù)分發(fā)。常用來并發(fā)的做某項(xiàng)工作,都在多個(gè)調(diào)用間做負(fù)載均衡,或用來調(diào)用其他語言的函數(shù)的系統(tǒng)。
簡而言之,就是客戶端程序會(huì)把請求提交給gearmand,gearmand 會(huì)把請求轉(zhuǎn)發(fā)給合適的 worker 來處理這個(gè)請求,最后還通過 gearmand 返回結(jié)果。
二、實(shí)現(xiàn)原理
運(yùn)行流程圖:
?
Client – > Job --> Worker
Client:任務(wù)發(fā)起者
Job:任務(wù)分配者
Worker:任務(wù)處理者
支持 mysql、pq、sqlit、brizzle、memcachedb做持久化存儲(chǔ)
可開啟多個(gè)進(jìn)程,支持failover(自動(dòng)故障轉(zhuǎn)移)
簡述執(zhí)行流程:
Client 端作為請求發(fā)起者,客戶端程序可以是任何一種語言,C、PHP、Perl、Python 等,
Job 請求調(diào)度者,負(fù)載協(xié)調(diào)把 Client 發(fā)出的請求轉(zhuǎn)發(fā)給合適的 Worker
Worker 請求處理者,處理 Job 分發(fā)來的請求,可以是任何一種語言
三、源碼編譯搭建
gearmand安裝包下載地址:https://github.com/gearman/gearmand/releases
我這里下載的是版本是gearmand-1.1.19.1.tar.gz
- 安裝依賴:
- 編譯,安裝?
啟動(dòng)gearmand程序
[root@test-36 sbin]# mkdir /usr/local/var/log/ -p [root@test-36 sbin]# touch /usr/local/var/log/gearmand.log# 啟動(dòng)gearmand # 啟動(dòng)gearmand,-L 指定只監(jiān)聽 IPV4,-d 以守護(hù)進(jìn)程的方式啟動(dòng),-p port 默認(rèn) 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啟動(dòng)腳本
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" # 執(zhí)行用戶# 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?
總結(jié)
以上是生活随笔為你收集整理的任务分发Gearmand的简介及搭建的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 什么是Silverlight?
- 下一篇: 调音台应该放在哪里,你知道吗?