zoukankan      html  css  js  c++  java
  • gearman简介及安装使用

    一.Gearman是什么?
    Gearman是一个分发任务的程序框架。它由三部分组成,如下图:

    Gearman Client:它提供Gearman Client API给我们的应用程序调用API可以使用是 CPHPPerlMySQL UDF 等等语言,它是请求的发起者   Gearman Job Server:将客户端的请求分发到各个Gearman Worker的调度者,相当于中央控制器,它不负责处理具体业务逻辑。
    Gearman Worker:它提供Gearman Worker API给应用程序调用,具体负责客户端的请求,并将处理结果返回给客户端。

     

    二.Gearman能干什么?
    通过上面可以看出,在Gearman ClientGearman Worker可以使用不同的编程语言,这给我们在不同语言通信提供了机会。比如客户端我们用的是PHP,在具体处理的Gearman Worker中,我们则可以使用C

    另外,由于中间的Gearman Job Server,它可以把一个请求分发到众多worker中的一个,可以用来做负载均衡。
    另外,Gearman在处理并发方面也是大大有用的。

     

    三.Gearman的安装使用
    首先下载Gearman的相关源码,地址:http://gearman.org/index.php?id=download
    gearmandhttp://launchpad.net/gearmand/trunk/0.24/+download/gearmand-0.24.tar.gz

    libgearman (C)http://launchpad.net/gearmand/trunk/0.14/+download/gearmand-0.14.tar.gz
    Gearman PHP Extensionhttp://pecl.php.net/get/gearman-0.7.0.tgz

    我们为了清楚的演示,将gearmand安装在192.168.132.30Job server)上面,在分别将Gearman PHP扩展安装的机器192.168.132.64worker)和192.168.132.68client)上面。Workerclient我们都使用PHP语言。
    192.168.132.30Job server)上面:

    tar xvzf gearmand-0.24.tar.gz
    cd gearmand-0.24/
    ./configure
    make
    sudo make install
    //如果在configure时报错,则可能缺少包,可能需要安装如下包:
    sudo apt-get install libboost-program-options-dev libevent-dev uuid-dev
    //开启Gearmand服务
    gearmand -d

    192.168.132.64worker)和192.168.132.68client),分别如下:

    //首先安装PHP 扩展需要的libgearman    
    tar xvzf gearmand-
    0.14.tar.gz
    cd gearmand
    ./configure
    make
    sudo make install
    //如果在configure时报错,则可能缺少包,可能需要安装如下包:
    sudo apt-get install libboost-program-options-dev libevent-dev uuid-dev
    //安装PHP扩展
    tar xvzf gearman-
    0.7.0.tgz
    cd gearman
    phpize
    ./configure --with-php-config=/data0/php52/bin/php-config
    make
    make install
    //找到PHP的配置文件php.ini,编辑它
    vim php
    .ini
    //在php.ini的末尾加上
    extension
    =gearman.so

    以上都好了以上,可以使用 php -re gearman看一些是不是gearman扩展安装成功了。

    下面我们来测试一下:
    192.168.132.64worker),编辑文件worker.php:

    <?php
    $worker=new GearmanWorker();
    $worker->addServer("192.168.132.30",4730); //连接到Job server 上
    $worker->addFunction("reverse","my_reverse_function");
    while ($worker->work());

    function my_reverse_function($job)
    {
    returnstrrev($job->workload())." worker1";
    }
    ?>

    然后在后台运行该文件:php worker.php &.
    再编辑一个文件worker2.php,输入内容:

    <?php
    $worker=new GearmanWorker();
    $worker->addServer("192.168.132.30",4730); //连接到Job server 上
    $worker->addFunction("reverse","my_reverse_function");
    while ($worker->work());

    function my_reverse_function($job)
    {
    returnstrrev($job->workload())." worker2";
    }
    ?>

    在后台运行该文件:php worker2.php &
    192.168.132.68client),编辑文件 client.php:

    <?php
    $client=new GearmanClient();
    $client->addServer("192.168.132.30",4730); //连接到Job server上
    echo$client->do("reverse","Hello World!");
    ?>

     然后多次运行php client.php,应该可以看见输出不同的结果。               

    UU影视

  • 相关阅读:
    Java实现 蓝桥杯VIP 算法训练 一元三次方程
    Java实现 蓝桥杯VIP 算法训练 乘法表
    Java实现 蓝桥杯VIP 算法训练 矩阵加法
    Java实现 蓝桥杯VIP 算法训练 一元三次方程
    Java实现 蓝桥杯VIP 算法训练 平方计算
    Java实现 蓝桥杯VIP 算法训练 平方计算
    Java实现 蓝桥杯VIP 算法训练 平方计算
    Java实现 蓝桥杯VIP 算法训练 乘法表
    Java实现 蓝桥杯VIP 算法训练 乘法表
    监管只是压倒网盘业务的一根稻草,但不是主要原因(答案只有一个:成本!)
  • 原文地址:https://www.cnblogs.com/codebean/p/2117074.html
Copyright © 2011-2022 走看看