Gearman分布式任务处理系统(五)版本介绍、安装方法和使用说明

把 ABAP 接到外部世界的几条路, 从 Web Service 到 RFC、BAPI 与 IDoc 的完整理解 摘要: ABAP 的连接能力是其长期成为企业核心的关键,不仅支持通用协议(HTTP、SOAP、XML),还保留了 SAP 特有的技术(RFC、BAPI、IDoc)。Web Service 是跨系统通信的主轴,依赖 SOAP/WSDL 实现契约化协作,而 Enterprise Service 更强调业务语义的复用与治理。经典技术如 RFC 和 BAPI 因高效稳定仍广泛使用,尤其适合紧耦合场景。ABAP 通过分层工具箱(如代理生成、服务注册)实现灵活集成,平衡新旧技术,满足多样化的企业连接需求。 (字数:15 阅读详情

Gearman版本

Gearman网址:gearman.org

0.14是标准C的版本,适合研究源码

0.33是C++版本,增加了gearadmin工具

1.1.11是最新版本


对于任务高度功能来说,各版本变化不大,主要的变化 是持久化功能与开发库的变化


安装Gearman

一、安装gearman服务

1.安装libevent
tar zxvf libevent-1.4.14b-stable.tar.gz
cd libevent-1.4.14b-stable
./configure & make & make install

2.安装gearmand
tar xzvf gearmand-0.14.tar.gz
cd gearmand-0.14

./configure --prefix=/usr/local/gearman & make & make install

安装中的错误及解决:

configure: error: could not find boost 错误解决
#yum install boost-devel*
configure: error: could not find gperf 错误解决
#yum install gperf*
configure: error: Unable to find libuuid 错误解决
#yum install libuuid-devel
上面错误的原因是编译器找不到 头文件

mkdir /usr/local/gearman/log
/usr/local/gearman/sbin/gearmand -l /usr/local/gearman/log/trace.log -vvvvv -p 4730 -u root -d

3.安装gearman php扩展

版本依赖关系:gearm C lib为0.14版本的,PHP为5.3.6,其它版本不能保证安装成功

tar xzvf gearman-0.7.0.tgz
cd gearman-0.7.0
/usr/local/php/bin/phpize
./configure --with-gearman=/usr/local/gearman --with-php-config=/usr/local/php/bin/php-config & make & make install
cp /usr/local/gearman/lib/lib* /usr/lib64(32位机为/usr/lib)
vi /usr/local/php/lib/php.ini,增加extension=gearman.so

cd examples
php ./reverse_worker.php
--Starting
--Waiting for job...

php ./reverse_client.php
--Starting
--Sending job
--Success: !olleH

gearman安装成功

4.编译C程序jfy_client.c,jfy_worker.c
/*
  gearman worker 测试程序
  gcc -I/usr/local/mysql/include -I/usr/local/gearman/include -c jfy_worker.c _pub.c
  gcc -o jfy_worker jfy_worker.o _pub.o -L/usr/local/mysql/lib -lmysqlclient -L/usr/local/gearman/lib -lgearman
  ./jfy_worker ./jfy_worker.tr
*/

/*
  gearman client 测试程序
  gcc -I/usr/local/gearman/include -c jfy_client.c
  gcc -o jfy_client jfy_client.o -L/usr/local/gearman/lib -lgearman
  ./jfy_client "this is a test"
*/

二、安装网页监控工具
1.安装Net_Gearman包
方法一:
http://download.pear.php.net/package/Net_Gearman-0.2.3.tgz
tar xzvf Net_Gearman-0.2.3.tgz
拷贝Net_Gearman-0.2.3下的Net目录到/usr/local/php/lib/php下

方法二:
/usr/local/php/bin/pear list
Installed packages, channel pear.php.net:
=========================================
Package          Version State
Archive_Tar      1.3.7   stable
Console_Getopt   1.3.0   stable
PEAR             1.9.2   stable
Structures_Graph 1.0.4   stable
XML_Util         1.2.1   stable

/usr/local/php/bin/pear install Net_Gearman-0.2.3

2.安装Gearman-Monitor
https://github.com/yugene/Gearman-Monitor/zipball/master
解压yugene-Gearman-Monitor-ed34347.zip
将所有内容放到网站能访问php的路径下
修改其下的_config.php文件
$cfgServers[$i]['address'] = 'localhost:4730';   //IP端口
$cfgServers[$i]['name'] = 'Gearman server 1';    //服务名(自定义)

通过网页访问:http://localhost:8084/phptest/Gearman-Monitor/index.php


Gearman使用

gearmand

这个是Job Server的执行主进程,提供了以下参数

General options:
  -b [ --backlog ] arg (=32)            Number of backlog connections for 
                                        listen.
  -d [ --daemon ]                       Daemon, detach and run in the 
                                        background.
  -f [ --file-descriptors ] arg         Number of file descriptors to allow for
                                        the process (total connections will be 
                                        slightly less). Default is max allowed 
                                        for user.
  -h [ --help ]                         Print this help menu.
  -j [ --job-retries ] arg (=0)         Number of attempts to run the job 
                                        before the job server removes it. This 
                                        is helpful to ensure a bad job does not
                                        crash all available workers. Default is
                                        no limit.
  -l [ --log-file ] arg (=/usr/local/var/log/gearmand.log)
                                        Log file to write errors and 
                                        information to. If the log-file 
                                        paramater is specified as 'stderr', 
                                        then output will go to stderr
  -L [ --listen ] arg                   Address the server should listen on. 
                                        Default is INADDR_ANY.
  -p [ --port ] arg (=4730)             Port the server should listen on.
  -P [ --pid-file ] arg (=/usr/local/var/gearmand.pid)
                                        File to write process ID out to.
  -r [ --protocol ] arg                 Load protocol module.
  -R [ --round-robin ]                  Assign work in round-robin order per 
                                        worker connection. The default is to 
                                        assign work in the order of functions 
                                        added by the worker.
  -q [ --queue-type ] arg               Persistent queue type to use.

  #队列持久化类型,libdrizzle=mysql,libmemcached=memcached,libsqlite3=sqlite,libpq=postgresql,libtokyocabinet=tokyocabinet


  --config-file arg (=/usr/local/etc/gearmand.conf)
                                        Can be specified with '@name', too
  --syslog                              Use syslog.
  -t [ --threads ] arg (=4)             Number of I/O threads to use. 
                                        Default=4.
  -u [ --user ] arg                     Switch to given user after startup.
  --verbose arg (=ERROR)                Set verbose level (FATAL, ALERT, 
                                        CRITICAL, ERROR, WARNING, NOTICE, INFO,
                                        DEBUG).
  -V [ --version ]                      Display the version of gearmand and 
                                        exit.
  -w [ --worker-wakeup ] arg (=0)       Number of workers to wakeup for each 
                                        job received. The default is to wakeup 
                                        all available workers.


-b, --backlog= 储备的监听连接数量
-d, --daemon 后台运行
-f, --file-descriptors= 文件描述符的数量
-h, --help 帮助
-j, --job-retries= 在job server移除不可用job之前运行的次数,防止不断运行导致其他可用worker崩溃。默认没有限制
-l, -log-file= 日志文件存放位置(默认记录最简单日志)
-L, --listen= 监听的IP,默认全部接受
-p, --port= 指定监听端口
-P, --pid-file= 指定进程ID写入位置
-r, --protocol= 加载协议模块
-q, --queue-type= 指定持久化队列
-t, --threads= 使用的I/O线程数量。默认为0
-u, --user= 启动后,切换到指定用户
-v, --verbose 增加一级详细程度
-V, --version 显示版本信息


HTTP:
  --http-port arg (=8080) Port to listen on.

#下面是针对--queue-type不同类型时的不同参数
libsqlite3:
  --libsqlite3-db arg                   Database file to use.
  --libsqlite3-table arg (=gearman_queue)
                                        Table to use.


gearmand还有一些其它参数选项,取决于编译时带的参数,如--with-libdrizzle和--with-libmemcached,可以将队列放到MySQL或Memcached中


一般正常使用如下:

/usr/local/sbin/gearmand -l /usr/local/gearman/log/trace.log --verbose INFO -p 4730 -d


gearman

这个模拟client和server的gearman程序

Client mode: gearman [options] [<data>]
Worker mode: gearman -w [options] [<command> [<args> ...]]

Common options to both client and worker modes.
        -f <function> - Function name to use for jobs (can give many)
        -h <host>     - Job server host
        -H            - Print this help menu
        -p <port>     - Job server port
        -t <timeout>  - Timeout in milliseconds
        -i <pidfile>  - Create a pidfile for the process

Client options:
        -b            - Run jobs in the background
        -I            - Run jobs as high priority
        -L            - Run jobs as low priority
        -n            - Run one job per line
        -N            - Same as -n, but strip off the newline
        -P            - Prefix all output lines with functions names
        -s            - Send job without reading from standard input
        -u <unique>   - Unique key to use for job

Worker options:
        -c <count>    - Number of jobs for worker to run before exiting
        -n            - Send data packet for each line
        -N            - Same as -n, but strip off the newline
        -w            - Run in worker mode

如:

#session1

gearman -w -f func1 &

#这实际上就启动了一个worker,并注册一个函数func1在Job Server上

#session2

gearman -I -f func1 test

#这时session1那边就会显示一个"test"


gearadmin

该工具是在0.33版本以后增加的功能

Options:
  --help                         Options related to the program.
  -h [ --host ] arg (=localhost) Connect to the host
  -p [ --port ] arg (=4730)      Port number or service to use for connection
  --server-version               Fetch the version number for the server.
  --server-verbose               Fetch the verbose setting for the server.
  --create-function arg          Create the function from the server.
  --drop-function arg            Drop the function from the server.
  --getpid                       Get Process ID for the server.
  --status                       Status for the server.
  --workers                      Workers for the server.
  --shutdown                     Shutdown server.


command line

用telnet直接连接gearmand,可以以命令行的方式查看Job Server状态

telnet localhost 4830
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.

workers

30 127.0.0.1 - : jfytest jfytest2    #显示连接的worker及注册的函数

status
jfytest          0       0       1       #某个函数的客户端队列请求
jfytest2        0       0       1       #Function Name,Jobs in queue,Jobs running,Workers registered

maxqueue jfytest 10000        #设置某个函数最大队列数,如果只有两个参数则不限制
OK

version
OK 0.33

shutdown graceful                #graceful代表优雅关闭,否则强制关闭,不管队列状态
OK

verbose                                #当前log级别
OK INFO



信创服务器(麒麟 V10 SP3)安装 NVIDIA GeForce RTX 5070 驱动 本文介绍了在麒麟V10 SP3系统上安装NVIDIA RTX 5070显卡驱动的详细步骤。首先需要关闭nouveau驱动,安装必要的编译环境和工具,确保内核版本与kernel-devel完全一致。最后运行NVIDIA驱动安装程序,关键选择包括启用DKMS支持、编译模块、禁用32位兼容和nouveau驱动。整个流程适用于海光CPU和Blackwell架构GPU的国产操作系统环境。 阅读详情

相关推荐

YooAsset可寻址模式避坑指南:从路径加载到Addressable的完整迁移方案

本文详细介绍了将Unity项目从传统路径加载迁移到YooAsset可寻址模式的完整方案。针对中大型项目在迁移过程中遇到的路径耦合、依赖管理、热更新等痛点,提供了从架构设计、环境配置、代码迁移到性能优化的实战指南,并分享了实际项目的改造案例与避坑经验,帮助团队高效完成资源管理系统的重构。

weixin_28304023的博客 497

如何在基于 Docker 的 PHP 环境安装 Gearman 扩展

为什么80%的码农都做不了架构师?>>> ...

weixin_33989780的博客 502

转义序列字符(\0,\n,\r,\t,\v,\a,\f,\b,\\,\‘,\“,\?)详解,转义字符对应的全称,输出结果和对应的ASCII码值详解;

转义序列字符(\0,\n,\r,\t,\v,\a,\f,\b,\\,\',\",\?)详解,转义字符对应的全称,输出结果和对应的ASCII码值详解;

南城花开过的博客 3万+

gearman入门简介

一、Gearman介绍 gearman,从名字上看叫做“齿轮工”,就是通过齿轮把不同的组件组合在一起。 通常,多语言多系统之间的集成是项目开发中一个比较头疼的问题。 一般会采用RPC风格或者是REST风格的WebService。但是总感觉比较麻烦。 gearman就应运而生了,作为一个任务分发架构, 它能够轻松的将前端的任务通过Job Server分发给后端的Worker处理。 G

北雨南萍 1349

【RTOS】 Vxworks 653 第一章 —— 初识 vx653 3.x

。。不是很重要,自己搜吧鲁棒分区是一种确保共享计算资源中独立运行功能实现​​时空隔离​​的机制,其目标是为集成模块中的混合临界性应用提供与联邦式部署(federated implementation)同等级别的功能隔离保障。具体表现为:​​多关键性共存​​:支持不同安全等级应用(如飞控系统A级与娱乐系统D级)在同一模块中协同运行。​​抗干扰能力​​:防止未授权或意外的时空干扰(如内存越界、时间窗口冲突),确保应用间互不影响。​​。

qq_38183694的博客 1280

块坐标下降法实战:如何用Python一步步优化无人机通信网络?

本文通过Python实战案例,详细介绍了块坐标下降法在优化无人机通信网络中的应用。文章以最大化网络吞吐量为目标,将复杂的非凸问题拆解为功率分配和轨迹规划两个子问题,并提供了完整的算法实现、代码示例及调参指南,为机器学习工程师解决类似优化问题提供了实用参考。

sat99的博客 975

gearman使用心得

本质上,gearman可以认为是一个分布式任务队列,client是生产者,worker则是消费者。gearman并不主动分发任务,而是由worker到它那里去取任务执行,所以它采用的是类似kafka的pull消费模式。

tlxamulet的博客 587

YOLOv8交通管理 详细解释及代码完整示例

YOLOv8在交通管理中的应用及代码实现 摘要:本文详细介绍了YOLOv8在交通管理领域的应用场景,包括车辆检测、违规行为识别和行人安全预警等。文章提供了完整的Python代码示例,展示了如何使用YOLOv8进行交通对象检测和车辆计数统计。代码包含模型加载、对象检测、结果可视化等功能模块,并给出了性能优化和功能扩展建议。该实现基于Ultralytics框架,支持多种YOLOv8模型选择,可根据实际需求调整模型大小和检测参数。

u010117029的博客 152

gearman总结

1、安装gearman-job-server apt-get install gearman-job-server 2、加入扩展 locate php.ini /etc/php5/apache2/php.ini /etc/php5/cli/php.ini extension=gearman.so 3、gearman的命令 【查看所有任务】 gearadmin --status 【重启gearman】 1、sudo service gearman-job-server restart 2、sudo gearm

luxiaobo_1的博客 422

OCS2 入门教程(一)

OCS2 是专为切换系统优化控制(ptimalontrol forwitchedystems,OCS2)定制的 C++ 工具箱。该工具箱提供以下算法的高效实现:SLQ:连续时间域约束 DDPiLQR:离散时域约束 DDPSQP:基于 HPIPM 的多重打靶算法IPM: 基于非线性内点法的多重搜索算法SLP:基于 PIPG 的顺序线性规划算法OCS2 通过增强拉格朗日法(Augmented Lagrangian)或松弛障碍法(relaxed barrier methods)处理一般路径约束。

机器人控制与仿真应用 7836

仿真学习系列(四十二):Sigrity仿真之走线阻抗和耦合检查

在高速电路设计中,走线的阻抗和信号线之间的耦合是影响信号完整性的重要因素。设计中可能会出现多种情况,导致阻抗变化或不匹配,例如线宽的变化、跨层分割等。传统的人工检查方法常常不够高效且易忽视细节。借助仿真软件,可以快速定位问题区域,并进行精确分析,从而有效避免或减少信号反射和串扰带来的影响。

案例文章,高速信号 424

分布式框架-Gearman

特点Gearman是一个分布式应用程序框架,支持同步、异步任务处理,负载均衡以及跨语言调用。通过Gearman,在WEB应用中可以将复杂的业务逻辑交给其它更适合的机器或进程,甚至不同的语言处理。Gearman是分布式计算的神经中枢,它具有以下特性:1.开源免费。Gearman有一个很活跃的开源社区,提供了比较丰富的资源。2.多语言支持。Gearman提供了多语言接口支持,可以...

weixin_33979203的博客 162

CAPL学习之路-关键字

在capl中,关键字具有特殊的含义和用途,因此,不得将关键字用作变量或函数的名称 声明数据类型的关键字 可以用不同的关键字,声明或引用不同类型的数据 byte 声明一个字节的变量 word 声明两个字节的变量 dword 声明四个字节的变量 int 声明两个字节的整数 long 声明四个字节的变量 qword 声明八个字节的变量 char 声明一个字符串 float 声明一个浮点数,8个字节 double 声明一个浮点数,8个字节 定义一个结构体或枚举类型 struct struct Data { .

jasonj333 6107

gearman分布式处理系统

为什么80%的码农都做不了架构师?>>> ...

weixin_34235105的博客 206

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

gearman c语言,Gearman分布式任务处理系统(一)基本介绍

Gearman介绍Gearman是一个用来把工作委派给其他机器、分布式的调用更适合做某项工作的机器、并发的做某项工作在多个调用间做负载均衡、或用来在调用其它语言的函数的系统。通常,多语言多系统之间的集成是个大问题,一般来说,人们多半会采用WebService 的方式来处理此类集成问题,但不管采用何种风格的WebService,如 RPC 风格,或者 REST 风格,其本身都有一定的复杂性。相比之下...

weixin_32371243的博客 403

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

gearman php 分布式,gearman分布式处理系统

gearman分布式处理系统一.Gearman介绍Gearman架构图如下:Gearman是一个分发任务的程序架构,由三部分组成:Gearman client:提供gearman client API给应用程序调用。API可以使用C,PHP,PERL,MYSQL UDF等待呢个语言,它是请求的发起者。Gearman job server:将客户端的请求分发到各个gearman worker的调度者...

weixin_35720618的博客 184

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

gearman mysql 扩展_Gearman分布式任务处理系统(二)扩展应用

对于绝大多数发展中等的web 2.0网站来说,LAMP结构已经不能满足现在的需要了,新的架构组合是GLAMMP,G=Gearman(分布式远程过程处理),M=Memcached(高性能的分布式的内存对象缓存系统)。Gearman的高级特性在一个 Web 应用程序内可能有许多地方都会用到 Gearman。可以导入大量数据、发送许多电子邮件、编码视频文件、挖据数据并构建一个中央日志设施 — 所有这些均...

weixin_29958569的博客 309

Gearman分布式任务处理系统(一)基本介绍

Gearman介绍 Gearman是一个用来把工作委派给其他机器、分布式的调用更适合做某项工作的机器、并发的做某项工作在多个调用间做负载均衡、或用来在调用其它语言的函数的系统。 通常,多语言多系统之间的集成是个大问题,一般来说,人们多半会采用 WebService 的方式来处理此类集成问题,但不管采用何种风格的WebService,如 RPC 风格,或者 REST 风格,其本身都有一定的复

很多时候,你缺少的不是知识而是热情 1万+

Gearman分布式任务处理系统(二)扩展应用

对于绝大多数发展中等的web 2.0网站来说,LAMP结构已经不能满足现在的需要了,新的架构组合是GLAMMP,G=Gearman(分布式远程过程处理),M=Memcached(高性能的分布式的内存对象缓存系统)。 Gearman的高级特性 在一个 Web 应用程序内可能有许多地方都会用到 Gearman。可以导入大量数据、发送许多电子邮件、编码视频文件、挖据数据并构建一个中央日志设施 — 所

很多时候,你缺少的不是知识而是热情 7233

分布式处理系统服务器配置,Gearman分布式任务处理系统(三)分布式负载均衡架构...

PS:对于分布式网络环境或者有大量任务的应用,Gearman(Client -> Job Server -> Worker)的通信方式,为开发者搭建分布式负载均衡架构,实现高效稳定的负载均衡处理能力提供了有利的保障。。简单部署结构-单一Job Server模式Gearman不但可以做为任务分发,还可以为应用提供负载均衡。开发者既可以在一台多核心单cpu服务器上启动与核心数量相同的wor...

weixin_30675619的博客 413

Gearman分布式任务处理系统(八)开发讲解

这篇重点介绍C-Lib库及client和worker的开发,以0.14版libgearman for C来讲解 Client API client初始化&析构 gearman_client_st *gearman_client_create(gearman_client_st *client) void gearman_client_free(gearman_client_st

很多时候,你缺少的不是知识而是热情 6328

Gearman分布式任务处理系统(十)后记(持续更新)

整理中。。。

很多时候,你缺少的不是知识而是热情 3411

php分布式gearman,大规模web架构gearman分布式处理应用案例

一. 场景分析 业务服务压力比较大,想把一些占用资源的功能异步到远程处理,比如记录业务日志,文件加密,文件分发到其他文件服务器节点上,检查文件服务器是否已同步,对用户上传的图片进行剪裁生成多份缩略图,视频转换,静态内容生成,清除缓存等等,这些请求耗时长,占用系统资源大,影响业务正常访问。这些问题会经常遇到的,如果这些任务都在用户请求过程中完成,服务器撑不撑得住暂不考虑,单凭用户体验角度考虑来说,那...

weixin_36000045的博客 249

大规模web架构gearman分布式处理应用案例

为什么80%的码农都做不了架构师?>>> ...

weixin_34290352的博客 221

Gearman分布式任务处理系统

1,http://blog.csdn.net/jiao_fuyou/article/details/16330195 Gearman介绍 Gearman是一个用来把工作委派给其他机器、分布式的调用更适合做某项工作的机器、并发的做某项工作在多个调用间做负载均衡、或用来在调用其它语言的函数的系统。 通常,多语言多系统之间的集成是个大问题,一般来说,人们多半会采用 WebService ...

weixin_30861459的博客 161

Gearman分布式任务处理系统(四)Gearman协议

Gearman协议工作于TCP之上,默认使用4730端口。它之前使用端口7003,但与AFS的端口范围冲突,4730端口是由IANA分配的。client和jobserver间,以及worker与jobserver间存在通信交互,这两种情况下的通信协议都是由请求包和响应包组成。所有发送到jobserver的包都认为是请求,所有由jobserver发送的包都认为是响应。一种简单的配置例子是这样的:

很多时候,你缺少的不是知识而是热情 4314
上一篇: Gearman分布式任务处理系统(四)Gearman协议
下一篇: Gearman分布式任务处理系统(六)跨多种环境部署
笑天居士
博客等级 码龄24年 292粉丝 136原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值