惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园 - Franky
N
Netflix TechBlog - Medium
Google Online Security Blog
Google Online Security Blog
月光博客
月光博客
量子位
酷 壳 – CoolShell
酷 壳 – CoolShell
V
V2EX
腾讯CDC
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园 - 聂微东
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
M
MIT News - Artificial intelligence
Vercel News
Vercel News
The GitHub Blog
The GitHub Blog
Hugging Face - Blog
Hugging Face - Blog
博客园 - 【当耐特】
Apple Machine Learning Research
Apple Machine Learning Research
aimingoo的专栏
aimingoo的专栏
博客园 - 三生石上(FineUI控件)
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
MongoDB | Blog
MongoDB | Blog
H
Help Net Security
The Cloudflare Blog
Blog — PlanetScale
Blog — PlanetScale
F
Full Disclosure
G
Google Developers Blog
罗磊的独立博客
Jina AI
Jina AI
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Y
Y Combinator Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
J
Java Code Geeks
A
About on SuperTechFans
IT之家
IT之家
大猫的无限游戏
大猫的无限游戏
S
SegmentFault 最新的问题
有赞技术团队
有赞技术团队
GbyAI
GbyAI
雷峰网
雷峰网
T
The Blog of Author Tim Ferriss
The Register - Security
The Register - Security
U
Unit 42
D
Docker
Martin Fowler
Martin Fowler
L
LINUX DO - 热门话题
NISL@THU
NISL@THU
阮一峰的网络日志
阮一峰的网络日志
C
Cybersecurity and Infrastructure Security Agency CISA
博客园_首页
Google DeepMind News
Google DeepMind News

博客园 - greatqn

web方式修改svn密码 java程序用pid重启 ant编译android项目 apache ci 的404设置 mysql主从同步操作,及队列设计 花瓣采集js解析 自己写过的一个vba脚本,用于移动copy一点数据。 jquery代码收藏 [php代码]从svn获取指定版本,并同步到ftp上。 jquery表格jqGrid操作笔记。 C#登录https网站并下载文件 js调试工具 ci_sae 监控项目示例 Sina App Engine 初级入门 被baidu拔毛后的恢复之路 linux操作,杂记 - greatqn - 博客园 一个备份dos脚本 jconsole本地连接失败的故障解决 [转]又拍网架构中的分库设计
Gearman安装,测试笔记
greatqn · 2011-11-07 · via 博客园 - greatqn

官网:http://gearman.org/

gearman-0.7.0.tgz php扩展
gearman-mysql-udf-0.5.tar.gz
gearmand-0.14.tar.gz  c版的server[还有java,perl版的]
yugene-Gearman-Monitor-ed34347.zip 监控
https://github.com/yugene/Gearman-Monitor 监控

http://baike.baidu.com/view/2926980.htm
http://www.cnblogs.com/cocowool/archive/2011/08/18/2145144.html

跨多种环境部署 Gearman
http://www.ibm.com/developerworks/cn/opensource/os-gearman/index.html
利用开源的Gearman框架构建分布式图片处理平台-张宴
http://blog.s135.com/dips/

Gearman是一个用来把工作委派给其他机器、分布式的调用更适合做某项工作的机器、并发的做某项工作在多个调用间做负载均衡、或用来在调用其它语言的函数的系统。
Gearman提供了一种通用的程序框架来将你的任务分发到不同的机器或者不同的进程当中。它提供了你进行并行工作的能力、负载均衡处理的能力,以及在不同程序语言之间沟通的能力。Gearman能够应用的领域非常广泛,从高可用的网站到数据库的复制任务。总之,Gearman就是负责分发处理的中枢系统,它的优点包括:
     开源:Gearman免费并且开源而且有一个非常活跃的开源社区,如果你想来做一些贡献,请点击 。
     多语言支持:Gearman支持的语言种类非常丰富。让我们能够用一种语言来编写Worker程序,但是用另外一种语言编写Client程序。
     灵活:不必拘泥于固定的形式。您可以采用你希望的任何形式,例如 Map/Reduce。
     快速:Gearman的协议非常简单,并且有一个用C语言实现的,经过优化的服务器,保证应用的负载在非常低的水平。
     可植入:因为Gearman非常小巧、灵活。因此您可以将他置入到现有的任何系统中。
     没有单点:Gearman不仅可以帮助扩展系统,同样可以避免系统的失败。

目录

    Gearman 简介
    Gearman运行过程
    Gearman新版本介绍
    安装 Gearman
展开

Gearman 简介
  通常,多语言多系统之间的集成是个大问题,一般来说,人们多半会采用 WebService 的方式来处理此类集成问题,但不管采用何种风格的 WebService,如 RPC 风格,或者 REST 风格,其本身都有一定的复杂性。相比之下,Gearman 也能实现类似的作用,而且更简单易用。
Gearman运行过程
  一个Gearman请求的处理过程涉及三个角色:Client -> Job -> Worker。
  Client:请求的发起者,可以是 C,PHP,Perl,MySQL UDF 等等。
  Job:请求的调度者,用来负责协调把 Client 发出的请求转发给合适的 Work。
  Worker:请求的处理者,可以是 C,PHP,Perl 等等。
  因为 Client,Worker 并不限制用一样的语言,所以有利于多语言多系统之间的集成。
  甚至我们通过增加更多的 Worker,可以很方便的实现应用程序的分布式负载均衡架构。
Gearman新版本介绍
  Gearman 1 月 16 日发布了 c 语言的 0.2 版本,gearman 提供了一个 work 传递其他机器,或者调用其他机器功能的框架,通过 gearman 你可以实现并行的工作,负载均衡处理,调用其他语言的函数。它可以应用在多种场合,从高可用性的 web 服务到数据库复制,换句话说,它是分布式处理的中枢神经。gearman 早期是 sixpart 实现的 perl 语言开发的版本,名字来源于“Manager”,这一框架只负责分发要做的工作,本身并不做任何实际的工作。(这点与 spread toolkit 相同 译者注)。
安装 Gearman
安装 Gearman server and library
  tar zxf gearmand-0.8.tar.gz[1]
  cd gearmand-0.8
  ./configure
  make
  make install
安装 Gearman PHP extension
  tar zxf gearman-0.4.0.tgz
  cd gearman-0.4.0
  phpize
  ./configure
  make
  make install
  编辑 php.ini 配置文件加载相应模块并使之生效:
  extension = "gearman.so"

/www/wdlinux/php/bin/phpize
./configure --with-php-config=/www/wdlinux/php/bin/php-config
make && make install

/www/wdlinux/php/bin/php --info | grep gearman
2. In another terminal, change to this source directory and run:

/www/wdlinux/php/bin/php examples/reverse_worker.php

3. In another terminal, change to this source directory and run:

/www/wdlinux/php/bin/php examples/reverse_client.php

  启动Job:
  gearmand -d
  如果当前用户是 root 的话,则需要这样操作:
  gearmand -d -u root
  缺省会使用 4730 端口,下面会用到。
  注意:如果找不到 gearmand 命令的路径,别忘了用 whereis gearmand 确认。gearmand: /usr/local/sbin/gearmand

以守护进程启动:
gearmand -L 192.168.0.1 -p 4730  -u root -d

编写 Worker
  worker.php 文件内容如下:
  <?php
  $worker= new GearmanWorker();
  $worker->addServer('127.0.0.1', 4730);
  $worker->addFunction('reverse', 'my_reverse_function');
  while ($worker->work());
  function my_reverse_function($job) {
  return strrev($job->workload());
  }
  ?>
设置后台运行 work
  php worker.php &
编写 Client
  client.php 文件内容如下:
  <?php
  $client= new GearmanClient();
  $client->addServer('127.0.0.1', 4730);
  echo $client->do('reverse', 'Hello World!'), "\n";
  ?>
运行 client
  php client.php
  输出:!dlroW olleH
  出于方便的考虑,Worker,Client 使用的都是PHP,但这并不影响演示,实际应用中,你完全可以通过 Gearman 集成不同语言实现的 Worker,Client。或许此时你还想了解前面提到的负载均衡功能:很简单,只要增加多个 Worker 即可,你可以按照 worker.php 的样子多写几个类似的文件,并设置不同的返回值用以识别演示效果。然后依次启动这几个 Worker 文件,并多次使用 client.php 去请求,你就会发现 Job 会把 Client 请求转发给不同的 Worker。
命令行工具
  如果你觉得安装 PHP 之类的东西太麻烦的话,你也可以仅仅通过命令行工具来体验 Gearman 的功能:
  启动 Worker:gearman -w -f wc -- wc -l &
  运行 Client:gearman -f wc < /etc/passwd

--一些意外,我没遇到。
1 program_options需要编译或者引用libs/program_options目录的源代码  
2 编绎时要用g++ -o simple simple.cpp -lboost_program_options -L/usr/local/lib
http://www.cnblogs.com/cocowool/archive/2011/08/18/2144142.html
Linux上安装Boost C++ Libraries
Gearman要依赖于 Boost C++ Libraries 中的 program_options 库,并且需要的版本大于 1.39。笔者的CentOS 5.2 系统中自带的 1.33 不能满足需求,在自己安装的过程中会遇到一些问题,建议参考 Boost 官方手册中的 Easy Build and Install 这部分。

安装Gearman之后,第一次启用可能会遇到 error while loading shared libraries: libgearman.so.1 这个问题。可以用下面的方法解决:
当运行 /usr/local/sbin/gearmand -d 时出现 error while loading shared libraries: libgearman.so.1
运行一下 /sbin/ldconfig -v ,然后再去运行gearman就可以了

ldconfig命令的用途,主要是在默认搜寻目录(/lib和/usr/lib)以及动态库配置文件/etc/ld.so.conf内所列的目录 下,搜索出可共享的动态链接库(格式如前介绍,lib*.so*),进而创建出动态装入程序(ld.so)所需的连接和缓存文件.缓存文件默认为/etc /ld.so.cache,此文件保存已排好序的动态链接库名字列表.
ldconfig通常在系统启动时运行,而当用户安装了一个新的动态链接库时,就需要手工运行这个命令.

需要小心的一件事情是数据的共享。Gearman 不进行所交换数据的任何转换或操作。对于这里使用的简单字符串和整数没有问题,但是不能共享 PHP 中的数组值并期望能在 Java 语言中被理解。对于这种类型的交互,可以使用很多结构化数据标准中的一种,比如 JavaScript Object Notation (JSON) 或 XML。另外,如果您在处理来自数据库的信息,只要共享 ID 或者找到需要处理的数据时要用到的信息即可,或者使用 memcached 这样的透明方法(尽管可能仍然需要 JSON 或等价物)。

-------------
test -z "/usr/local/lib/pkgconfig" || /bin/mkdir -p "/usr/local/lib/pkgconfig"
 /usr/bin/install -c -m 644 support/gearmand.pc '/usr/local/lib/pkgconfig'

Installing shared extensions:     /www/wdlinux/php-5.2.17/lib/php/extensions/no-debug-non-zts-20060613/

/www/wdlinux/php/bin/php examples/reverse_worker.php [可运行多个,实现负载]
/www/wdlinux/php/bin/php examples/reverse_client.php

1.传值一个name,一个序列化参数。