• 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影视

  • 相关阅读:
    MyBatis学习笔记
    【Ts 5】Httpclient的应用和封装
    【drp 12】再识转发和重定向:SpringMVC无法跳转页面
    【多线程 5】线程池的类型以及submit()和execute()的区别
    【多线程 5】线程池的类型以及submit()和execute()的区别
    【多线程 4】多线程实例(实例分析博客在下一篇)
    【多线程 4】多线程实例(实例分析博客在下一篇)
    【多线程 3】多线程间的变量共享方式
    【多线程 3】多线程间的变量共享方式
    【多线程 2】常见的多线程创建方式
  • 原文地址:https://www.cnblogs.com/codebean/p/2117074.html
Copyright © 2020-2023  润新知