zoukankan      html  css  js  c++  java
  • 对Gearman中client,worker,jobserver的理解

    在gearman的官网http://gearman.org/有以下的一段说明

    A Gearman powered application consists of three parts: a client, a worker, and a job server.

    The client is responsible for creating a job to be run and sending it to a job server.

    The job server will find a suitable worker that can run the job and forwards the job on.

    The worker performs the work requested by the client and sends a response to the client through the job server.

    Gearman由client,worker,jobserver 3的部分组成的.

    客户端(client)负责生成一个任务并且将任务发送到jobserver.

    任务服务器(jobserver)找到某个能够执行该任务的worker后将该任务发送给他.

    工人(worker)执行由jobserver发过来的任务并且将结果通过jobserver,发送回client.

    这个是以上的中文翻译.

    从这段描述中,发现client和worker是无法直接通信的,换句话说,client根本不知道worker的存在,反过来也是如此.而client和worker两者都只能和jobserver进行通信.

    gearman为何要如此设计这3个不同的部件(part)呢? 我们可以通过发生在现实世界的场景来理解.

    现实场景:

    某个客户c1 需要商品p1,但是他没有能力自己生产该商品p1,所以客户c1只好将生产商品p1的任务(job1)委托给某个生产企业e1来做.

    该生产企业e1接受了来自客户c1的生产商品p1的任务job1之后, 将任务job1派发给了能够生产该商品的工人w1.

    工人w1接受生产任务job1并开始了生产商品p1的工作.当完成了生产任务job1后,通知生产企业e1,最后生产企业e1将生产好的商品p1给到了客户A.

    结论:

    1 在整个流程中,客户c1根本不认识生产商品的工人w1(其实也没有认识工人w1的必要),客户c1只和生产企业e1进行联系(发送任务,接受结果)

    2 工人w1也不需要知道客户c1是谁.工人只需要知道任务(job)是什么,工人w1也只和生产企业e1进行联系(接受任务,发送结果).

    而 gearman的工作流程就是以上过程模拟.

    客户c1对应了gearman的client;

    生产企业e1对应了gearman的jobserver;

    工人w1对应了gearman的worker;

    这种设计能够带来很多的好处.

    好处1:各司其职,互不干扰,耦合度低

    工人w1 只做一件事情,就是生产商品p1. 如果要生产商品p2的话,那么对不起请让专门做商品p2的工人w2来做吧

    客户c1 也只做一件事情,就是将生产商品p1的任务委托给生产企业e1,然后从e1拿到生产完成的商品p1.如何生产商品p1的细节(比如说需要多少工人,机器做还是手工做,再外包等等)他不需要关心.

    生产企业 也只做一件事情,就是接受生产商品p1的任务委托给能做该任务的工人w1,然后从w1拿到生产完成的商品p1,给到客户c1就可以了.如何生产商品p1的细节他也不需要关心.

    好处2: 易扩展

    工人w1 和客户c1和生产企业e1,他们两两间的关系好像给人的感觉是都是一对一的.其实不然,完全可以是多对多的关系.

    一个工人可以从多个生产企业获取任务,一个生产企业可以给多个工人派发任务, 一个客户可以将任务委托给多个生产企业,同时一个生产企业也可以接受从多个客户来的任务

    所以当我们发现负载增加的时候,完全可以通过增加jobsever 和 worker的数量来应对.

    好处3:client和worker可以由不同的编程语言实现.不同系统间需要交互的时候,尤其明显.

  • 相关阅读:
    Visual Studio 2010使用Visual Assist X的方法
    SQL Server 2000 评估版 升级到 SQL Server 2000 零售版
    双网卡多网络单主机同时访问
    开发即过程!立此纪念一个IT新名词的诞生
    delphi dxBarManager1 目录遍历 转为RzCheckTree2树
    5320 软件集合
    delphi tree 从一个表复制到另一个表
    DELPHI 排课系统课表
    长沙金思维 出现在GOOGLE的 金思维 相关搜索里啦!!
    如何在DBGrid的每一行前加一个单选框?
  • 原文地址:https://www.cnblogs.com/guoyongrong/p/4306049.html
Copyright © 2011-2022 走看看