用HTTP方式调用gearman任务处理

Python爬虫实战:研究gearman相关技术 传统的单机爬虫系统在处理大规模数据采集任务时往往力不从心,而分布式爬虫系统则能够通过并行处理提高效率,增强系统的可扩展性和容错性。通过将爬虫任务分解为多个子任务,并使用 Gearman 进行协调和分发,实现了任务的并行处理和系统的可扩展性。在未来的工作中,可以进一步优化系统性能,增加更多的功能模块,如数据清洗、分析和挖掘功能,以及系统监控和可视化界面,使系统更加完善和易用。这种设计将爬虫任务分解为多个子任务,通过 Gearman 进行协调和分发,实现了任务的并行处理和系统的可扩展性。 阅读详情

本来以为是个挺美好的东西,结果。。。

这种方式很不安全,尤其是如果暴露在公网地址,很容易被攻击,而且gearman的http服务远没有专业的webserver健壮。

攻击方式很简单:telnet host 8080,连接成功后,随便输入点内容,如:aaa,gearman日志就不停的出现如下错误信息:

bad request line:aaa

简直就是死循环,gearmand就顶不住了,系统内存也一会就被耗尽,说明http这块实现的有BUG。

不过可以通过修改源码来修复这个BUG:

You can open file libgearman-server/plugins/protocol/http/protocol.cc , find 'bad request line:' and 'bad method:', then chang 'GEARMAND_SUCCESS' to 'GEARMAND_INVALID_PACKET' after them. This way is quick for this bug.

也可以下载下面的补丁,对源patch:

https://bugs.launchpad.net/gearmand/+bug/1348865/+attachment/4182968/+files/gearmand-1.1.12.patch

gearmand-1.1.12源码安装目录下执行:patch -p0 < ../gearmand-1.1.12.patch

该补丁解决了上面的错误,同时也增加了对get方法的支持

bug信息参见:https://bugs.launchpad.net/gearmand/+bug/1348865


原文:

This protocol plugin allows you to map HTTP requests to Gearman jobs. It only provides client job submission currently, but it may be extended to support other request types in the future. The plugin can handle both GET and POST data, the latter being used to send a workload to the job server. The URL being requested is translated into the function being called.

For example, the request:

POST /reverse HTTP/1.1
Content-Length: 12

Hello world!

Is translated into a job submission request for the function “reverse” and workload “Hello world!”. This will respond with:

HTTP/1.0 200 OK
X-Gearman-Job-Handle: H:lap:4
Content-Length: 12
Server: Gearman/0.8

!dlrow olleH

The following headers can be passed to change the behavior of the job:

* X-Gearman-Unique: <unique key>
* X-Gearman-Background: true
* X-Gearman-Priority: <high|low>

For example, to run a low priority background job, the following request can be sent:

POST /reverse HTTP/1.1
Content-Length: 12
X-Gearman-Background: true
X-Gearman-Priority: low

Hello world!

The response for this request will not have any data associated with it since it was a background job:

HTTP/1.0 200 OK
X-Gearman-Job-Handle: H:lap:6
Content-Length: 0
Server: Gearman/0.8

The HTTP protocol should be considered experimental.


应用场景:

开启gearman http监听功能,让前端以web api方式调用gearman job


起用方式:

在gearmand的起动参数中加上:

/usr/local/gearman/sbin/gearmand        \
-l /usr/local/gearman/log/trace.log     \
--verbose INFO -p 4730 -u root -d -t 4  \
--http-port 8080                        \
-r http

--http-port=8080 指定监听端口号

-r http 起用http协议模块


调用方式:

目前http协议只支持任务提交类接口,其它类型的暂不支持。

按官方文档上说,http支持GET和POS两种方式调用,但是GET方式我还没弄清楚怎样携带数据,POST方式实验过是可以的

http://172.16.18.116:8080/reverse

reverse就为函数名,假如POST的数据内容为:“Hello world!”,返回结果为:“!dlrow olleH”


在http的header头中可以设置一些任务参数:

* X-Gearman-Unique: <unique key>
* X-Gearman-Background: true
* X-Gearman-Priority: <high|low>


这种使用方式,实际上gearmand监听着两个端,原来的4730端还是可以接收正常的gearman协议客户端的请求,另外的8080端口则监听着http协议的请求,两种方式共同工作,http服务前端如移动端调用,gearman服务内部的其它模块的调用。


kubestack:基于kubernestes集群的动态詹金斯奴隶 Kubestack-使用Kubernetes的Jenkins容器节点 这个项目是一个工具,允许使用依赖Kubernetes集群的基于容器的动态Jenkins从站。 您将在此处看到三个目录: app ::它包含主要的kubestack应用程序 ansible ::示例ansible角色和文档,以在OpenStack上启动kubernetes集群 images :: Dockerfile和用于生成该项目基本图像的脚本 设置 创建kubestack配置文件/etc/kubestack/config.yaml: demand-listeners : - name : gearman-server type : gearman host : xx.xx.xx.xx port : 4730 destroy-listeners : - name 立即下载

相关推荐

Catia二次开发QueryInterface的操蛋问题

探索了很久,尝试录制宏,打开部件属性窗口,然后随意设置一些属性(必须改变一些东西才能录制成功,否则不会录制到任何东西),再看录制的结果,发现原来CATIAAnalyze是从Product那里来的。例如获得一个部件的体积,找到相关接口CATIAAnalyze,但是这个部件的CATIAAnalyze的对象不知道如何获取。总结一下,写Catia二开代码,就像漂亮国那款《莫里秀》 又名《爸爸死哪了》的综艺节目,大部分时间都是在找爸爸!Catia二开很痛苦,明明已经找到接口类,但是却不知道怎么获得这个接口类的对象。

gergul的专栏 746

jenkins高可用方案研究过程

https://www.jianshu.com/p/223bedd1097d (高可用思路) https://www.tinymind.net.cn/articles/9a9fb98ebfbe79 (高可用思路) https://wiki.jenkins.io/display/JENKINS/Gearman+Plugin (jenkins的gearman插件介绍) https://clusterl...

I'm Hexesdesu 1101

CrossOver实战:在Mac上流畅运行《梦幻西游》端游与搬砖指南

在跨平台应用开发与系统兼容性领域,如何让为特定操作系统设计的软件在其他平台上运行,是一个经典的技术挑战。其核心原理在于通过兼容层或转译技术,将程序的系统调用和图形接口指令实时转换为目标系统能理解的格式。这项技术的价值在于极大地扩展了硬件设备的软件生态,让用户无需依赖虚拟机或双系统即可无缝使用关键应用。在游戏、专业工具等场景中,这能显著提升工作效率和用户体验。本文以经典端游《梦幻西游》为例,详细解析如何在搭载Apple Silicon或Intel芯片的Mac上,借助CrossOver这一成熟的兼容层方案,构建

weixin_30129025的博客 557

Jenkins高可用方案汇总

前言 现在的企业很多都在用Jenkins做持续集成,各个业务端都依靠Jenkins,部署Jenkins服务时如何保障服务的高可用变得尤为重要。以下是最近收集的一些方案。 Gearman + Jenkins 这是openstack团队使用的方案,Jenkins本身是单体的,即只能有一个Jenkins Master。虽然你也可以在多台机器上部署多个Jenkins Master,但这些Master之间没...

jsd2root的博客 3855

ubuntu打实时内核补丁教程以及安装后显卡驱动问题解决方法

在ubuntu20.04上安装成功,亲测有效 目录ubuntu打实时内核补丁教程1、下载实时内核2、解压和打补丁(patch)3、安装依赖和编译安装4、修改一些文件,便于之后切换内核5、重启电脑实时内核版本下安装nvidia显卡驱动的问题1、先切换回之前的内核(非实时)版本2、重装之前内核(非实时)版本下的显卡驱动3、切换回实时内核(按照上面的步骤)4、在实时内核下安装显卡驱动 ubuntu打实时内核补丁教程 安装目标系统:ubuntu20.04 电脑配置:i9,2080ti 1、下载实时内核 打开终端,输

weixin_39275295的博客 7995

BERT之提取特征向量 及 bert-as-server的使用

本文内容列表提取句向量1、句向量简介1-1传统句向量1-2、BERT句向量2、 extract_features.py源码分析2-1 main函数 前一篇文章 BERT介绍及中文文本相似度任务实践 简单介绍了使用BERT进行中文文本相似度计算的方法,这篇文章着重对特征提取方法进行讲述。 提取句向量 1、句向量简介 1-1传统句向量 更多采用word embedding的方式取加权平均,该方法的一大...

ling620的专栏 1万+

Openstack CI持续集成测试详解--Gerrit、Zuul、Jenkins

测试的分类及必要性测试的分类测试的过程没太有太严格的分类标准,从使用的角度,我们可以从以下两个角度对测试进行分类。按照测试过程分类软件测试大概分为单元测试、集成测试、系统测试、验收测试。以下为软件测试V型图:一般由单元测试开始,集中对每一个程序单元进行测试,检查各个程序模块是否正确地实现了规定的功能。单元测试的测试对象为独立的模块,需要由开发完成。此外,开发阶段应该还需要通过代码评审等方式,进行静...

Tomstrong_369的专栏 5602

手把手完整实现STM32+LORA组网网关+机智云平台+手机APP应用———第一节- 一主多从的LORA本地组网通信-实现从机采集温湿度与主机显示数据

本教程为《手把手实现STM32+LORA组网网关+机智云平台+手机APP应用》第一节。实现一个主机,两个从机的LORA组网通信。两个从机采集温湿度数据并通过LORA传输数据到主机,然后主机接收到两个从机数据后进行数据显示,本节通过PC串口助手显示两个从机的数据。 下一节将其主机接收的数据通过WIFI网关(ESP8266)传到机智云平台与手机APP。 本文讲解一主多从的LORA本地组网通信,串口助手进行数据展示。使用硬件主要包括:STM32F103C8T6最小系统板(3个)、正点原子LORA模块ATK-L

嵌入式阿齐Archie 1万+

CI/CD技术分享:OpenStack Zuul介绍

编者按:据统计,在上周结束的OpenStack温哥华峰会中,关于CI/CD持续集成和交付的议题超过40个,CI/CD成为了整场峰会最热门的话题之一。而Zuul作为CI/CD模块中耀眼的明星,被大家所熟知,在本次峰会上更是引起了业界高度关注。在这里小编将简单介绍下Zuul,包括Zuul 的CI简单流程图、组件及架构等。什么是Zuul 随着OpenStack持续集成的推广,基于OpenStack开源项...

OpenInfra的博客 2886

vue2 - 详细实现播放AMR格式音频并实现自定义播放器样式,支持amr音频文件在线地址URL播放、调用服务端API接口获取二进制文件流amr形式、用户本地上传amr文件并实现立即播放(详细代码)

vue2,amr,amr文件播放,vue播放amr音频文件以及在线url跨域问题解决,vue使用audio标签播放amr音频,amr跨域解决,amr网页解码播放,文件上传后怎么播放,vue2播放.amr语音文件,api接口形式调用获取的amr如何播放,vue中如何使用audio元素播放AMR格式的文件,进度条,vue前端如何播放AMR格式的音频文件,vue播放语音文件AMR格式,播放amr格式音频AMR录音机,h5原生audio播放amr格式的音频,VUE2使用benz-amr-recorder 实现解码、

✅ 精选推荐文章 7413

基于高斯两步移动搜寻法(2SFCA)的城市绿地可达性分析

第二步,对于每一个街道i,给定空间距离阈值d0,便形成另一个空间作用域,同样对于落在空间作用域内的每块绿地l的供给比率(Rl)利用高斯方程赋以权重,然后对这些加权后的供给比率(Rl)进行加和,便得到每个街道i的绿地可达性Ai。图3与图4是高斯两步移动搜索法的示例。在图3中,以d0为阈值,有1、2、3 三个街道中心点落在了绿地a的空间作用域内。同样在图4中,以d0为阈值,有a、c两个绿地中心点落在了街道2的空间作用域内,根据公式(3),对a、c高斯方程加权后的供需比率进行累加,便得到了街道2 的绿地可达性。

2301_77310370的博客 2404

安装gearman遇到的问题

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33978016的博客 155

运动控制软件:Siemens Sinamics二次开发_(6).通信接口与协议详解

PROFIBUSPROFINETModbus TCPCANopenEtherCAT每种通信接口都有其特定的应用场景和优势。选择合适的通信接口可以显著提高系统的性能和可靠性。在选择通信协议时,需要根据具体的应用场景和需求综合考虑。每种通信协议都有其特定的优势和局限性,因此在设计运动控制系统时,应选择最适合的协议,以确保系统的性能、可靠性、成本和维护性。通过以上对比和分析,希望开发者能够更好地理解和选择适合的通信接口和协议,从而优化运动控制系统的开发和应用。

2401_87715305的博客 898

详解Gearman Job中的Unique

PHP GearmanClient GearmanClient客户端库会自动生成Unique,因此即使完全相同的请求内容,Job Server也会接收处理,比如下面两个客户端的调用,那么test队列中的任务数为2 # 测试时先停止worker中函数test的处理client1->do("test", "test"); client2->do("test", "test"); 如果,完全相同的请求,要

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

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

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

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

weixin_29958569的博客 309

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

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

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

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

Gearman分布式远程过程处理框架

Gearman分布式远程过程处理框架对于绝大多数发展中等的web 2.0网站来说,LAMP结构已经不能满足现在的需要了,新的架构组合是GLAMMP,G=Gearman(分布式远程过程处理),M=Memcached(高性能的分布式的内存对象缓存系统)。简单的说Gearman是PHP实现异步处理利器,当然不仅仅是PHP实现异步处理的手段。Gearman简介 Gearman是 Brad Fitzpatrick 的一个作品,用 Perl 写的任务调度程序,提供一个服务器端和多种语言的客户端接口,包括 C/Perl

.Net/PHP/Java程序设计 1324

gearman使用场景_使用Gearman分配PHP应用程序的工作负载

尽管Web应用程序的大部分可能位于表示中,但其价值和竞争优势可能位于少数专有服务或算法中。 如果这种处理复杂或耗时,则最好以异步方式执行,以免Web服务器对传入的请求不响应。 实际上,最好在一个或多个单独的专用服务器上执行特别是计算密集型或专用功能。 常用缩略语 API :应用程序编程接口 HTTP :超文本传输​​协议 LAMP :Linux,Apache,MySQL和P...

cuxiong8996的博客 377

[转]Gearman分布式远程过程处理框架

对于绝大多数发展中等的web 2.0网站来说,LAMP结构已经不能满足现在的需要了,新的架构组合是GLAMMP,G=Gearman(分布式远程过程处理),M=Memcached(高性能的分布式的内存对象缓存系统)。 简单的说Gearman是PHP实现异步处理利器,当然不仅仅是PHP实现异步处理的手段。 Gearman简介 Gearman是 Brad Fitzpatrick 的一个作品,用 Pe...

weixin_33955681的博客 92

数字音乐DRM机制解析与合规音频格式转换技术实践

数字版权管理是保护数字内容版权的核心技术体系,其核心原理是通过加密、密钥绑定和许可证验证等技术手段,将内容使用权限与用户身份或订阅状态关联。在音频处理领域,FFmpeg作为开源的音视频处理框架,提供了强大的编解码和格式转换能力,是处理音频文件的工程实践利器。对于已通过合法途径获取的本地音频文件,合理使用FFmpeg进行格式转换和元数据管理,能够有效解决多设备播放兼容性问题,并建立规范的个人数字音乐库。本文聚焦于在尊重版权的前提下,探讨如何运用FFmpeg等工具对音频文件进行批量转换、质量优化与元数据整理,为

weixin_34357436的博客 410

php 怎样实现异步处理接口

我有个需求: php在执行过程中需要请求好几次接口文件(使用的函数封装的) 但是我不想等待这个函数的返回值,就接着往下执行。 egg: function requestAPI() { do something ...} mycode ...requestAPI();//这里可能需要10秒甚至更长。因为这里是用户前台触发的,我想类似放后台执行,不需要等待这

climbs的专栏 4008

Gearman分布式任务处理系统(三)libevent介绍

为确保具备对海量任务调度的支持能力,Gearman毫无悬念的选择libevent作为网络操作支撑库。 libevent是一个事件触发的网络库,适用于windows、linux、bsd等多种平台,内部使用select、epoll、kqueue等系统调用管理事件机制。著名分布式缓存软件memcached也是libevent based,而且libevent在使用上可以做到跨平台,而且根据

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

php 不阻塞执行的方式总结,这些是基础的

php 用linux 后台不阻塞执行 脚本文件 nohup cp 大文件 /目录 shell_exec("nohup php /vagrant/html/cli.php /order{$v['id']} {$k} > /dev/null 2>&1 &"); php fastcgi_finish_request 此函数冲刷(flush)所有响...

qq_22640823的博客 1195

varnish mysql_mysql 触发器 Varnish:高速http缓存 varnish cdn 推送平台

数据直接从 kernal的buffer出去)适合小文件Aio(nginx)全异步(与事件驱动io的区别是:数据会到达mem才会通知,其实也不需要通知 可以直接返回给客户端) 支持:mmap event drive(处理大文件)上一回说到,在数据库修改后,redis里面的数据不能做到自动更新,必须手动删除更改过的数据 根据以上问题我们做出如下改进:所以接下来就要通过 mysql 触发器将改变的数据同...

weixin_32018379的博客 111
上一篇: 缓存穿透与缓存雪崩
下一篇: 关于Relay Log无法自动删除的问题(Neither --relay-log nor --relay-log-index were used)
笑天居士
博客等级 码龄24年 292粉丝 136原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值