Gearman研習筆記(1) ------ 官網介紹要點摘錄

以前的項目裏使用過消息中間件(公司提供的MQ服務)來作分發,由於MQ是基於消息的,並非專業的任務分發器,在一些複雜場景上使用起來並不恰當。java

後來聽組長說了下Gearman(聽名字還覺得是Ironman的兄弟)是一個專業的任務分發系統,因此決定花時間研習下,先從官網下手,看看它到底有哪些神通。c++

 

Gearman provides a generic application framework to farm out work to other machines or processes that are better suited to do the work. It allows you to do work in parallel, to load balance processing, and to call functions between languages. It can be used in a variety of applications, from high-availability web sites to the transport of database replication events. In other words, it is the nervous system for how distributed processing communicates.  —— gearman.orgweb

 
一、特性
  • Free
  • Multi-Language : 提供多種語言接口,能夠實現不一樣語言間調用。例如:java client -->job server --> c worker 
  • Flexible:分佈式部署靈活,易擴展(easyly scale-out)
  • Fast:服務端輕量,用c/c++編寫,支持多線程,而且開銷小
  • Embeddable:快速、輕量。易引入工程
  • No single point of failure:易擴展、容錯
  • No limilts on message size:單條信息支持最大4G,再大也能夠(Gearman會自動chunk)
 
二、工做原理
 
 
  • 分爲client、job server、worker三塊
  • 流程:
    • client 負責產生job(job通常包含調用的方法和參數),而後發送給job server
    • job server負責將job分發給適當的worker處理。【 job server分發給worker時會作BL,策略是優先打到空閒的具備處理該方法的worker上 】
    • worker處理完方法後,將返回值推給job server,由job server返回給client
  • 用戶針對client和worker API 進行業務邏輯編程,不用關心網絡、分發等工做,這些由框架完成。
 
三、集羣
  • client和worker是易擴展的,部署應用鏈接到相應的JobServer便可。
  • 每一個Job Server可處理數百上千個clients和worker。
  • Job Server 官方建議部署2~3臺冗餘,其中一臺掛了會自動fail over。
相關文章
相關標籤/搜索