中国教育网站官网,优秀网页,极简wordpress博客,手机能建网站不通常#xff0c;多语言多系统之间的集成是个大问题#xff0c;一般来说#xff0c;人们多半会采用WebService的方式来处理此类集成问题#xff0c;但不管采用何 种风格的WebService#xff0c;如RPC风格#xff0c;或者REST风格#xff0c;其本身都有一定的复杂性。相比…通常多语言多系统之间的集成是个大问题一般来说人们多半会采用WebService的方式来处理此类集成问题但不管采用何 种风格的WebService如RPC风格或者REST风格其本身都有一定的复杂性。相比之下Gearman也能实现类似的作用而且更简单易 用。一个Gearman请求的处理过程涉及三个角色Client - Job - Worker。Client请求的发起者可以是CPHPPerlMySQL UDF等等。Job请求的调度者用来负责协调把Client发出的请求转发给合适的Work。Worker请求的处理者可以是CPHPPerl等等。因为ClientWorker并不限制用一样的语言所以有利于多语言多系统之间的集成。甚至我们通过增加更多的Worker可以很方便的实现应用程序的分布式负载均衡架构。下面看看如何安装运行一个例子条件所限我们把ClientJobWorker三个角色运行在一台服务器上安装Gearman server and librarywget http://launchpad.net/gearmand/trunk/0.8/download/gearmand-0.8.tar.gztar zxf gearmand-0.8.tar.gzcd gearmand-0.8./configuremakemake install安装Gearman PHP extensionwget http://pecl.php.net/get/gearman-0.4.0.tgztar zxf gearman-0.4.0.tgzcd gearman-0.4.0phpize./configuremakemake install编辑php.ini配置文件加载相应模块并使之生效extension “gearman.so”启动Jobgearmand -d如果当前用户是root的话则需要这样操作gearmand -d -u root缺省会使用4730端口下面会用到。注意如果找不到gearmand命令的路径别忘了用whereis gearmand确认。编写Workerworker.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());}?设置后台运行workphp worker.php 编写Clientclient.php文件内容如下$client new GearmanClient();$client-addServer(’127.0.0.1′, 4730);echo $client-do(‘reverse’, ‘Hello World!’), “\n”;?运行clientphp client.php输出!dlroW olleH出于方便的考虑WorkerClient使用的都是PHP但这并不影响演示实际应用中你完全可以通过Gearman集成不同语言实现的 WorkerClient。或许此时你还想了解前面提到的负载均衡功能很简单只要增加多个Worker即可你可以按照worker.php的样子 多写几个类似的文件并设置不同的返回值用以识别演示效果。然后依次启动这几个Worker文件并多次使用client.php去请求你就会发现 Job会把Client请求转发给不同的Worker。命令行工具如果你觉得安装PHP之类的东西太麻烦的话你也可以仅仅通过命令行工具来体验Gearman的功能启动Workergearman -w -f wc — wc -l 运行Clientgearman -f wc /etc/passwd