使用mossrose構建分布式作業集群

2021-07-23 21:49:11 字數 2714 閱讀 8206

com.jiuxiangroupid>

mossroseartifactid>

2.2.0-releaseversion>

dependency>

******job

簡單任務

distributedjob

分布式任務,通過slicer將作業分隔成多個子任務,子任務在集群內分布執行

streamingjob

分布式流式任務,解決分片非常多時distributedjob記憶體占用大的問題

mapreducejob

mapreduce任務

mossroseprocess

多個mossroseprocess組成集群,集群保證有且只有乙個節點競選成為主節點,主節點負責觸發作業;所有節點都是工作節點,主節點觸發的任務會在所有工作節點上分布執行

mossroseconfig

mossrose配置,包括集群元資訊和任務元資訊

implement a ****** job

public

class

******examplejob

implements

******job };}

}

config the job in spring
<?xml version="1.0" encoding="utf-8"?>

xmlns=""

xmlns:mossrose=""

xsi:schemalocation=" /spring-beans.xsd

/mossrose.xsd">

class="com.jiuxian.jobs.bean.businessbean" />

id="******examplejob"

class="com.jiuxian.jobs.job.******examplejob" />

id="distributedexamplejob"

class="com.jiuxian.jobs.job.distributedexamplejob" />

id="streamingexamplejob"

class="com.jiuxian.jobs.job.streamingexamplejob" />

name="mossrose-example"

discovery-zk="localhost:2181" />

id="******examplejob"

cron="0/5 * * * * ?"

job-bean-name="******examplejob"

group="example" />

id="distributedexamplejob"

cron="0/15 * * * * ?"

job-bean-name="distributedexamplejob"

group="example" />

id="streamingexamplejob"

cron="0/20 * * * * ?"

job-bean-name="streamingexamplejob"

group="example"

description="分布式流式任務示例" />

mossrose:jobs>

mossrose:config>

beans>

start the job

implement a distributed job

public

class

somedistributedjob

implements

distributedjob };

}@override

public com.jiuxian.mossrose.job.distributedjob.executorexecutor() };}

}

implement a streaming job

distributedjob需要把需要分布式執行的任務集合一次性的返回,在集合非常大的時候會存在記憶體的問題,streamingjob解決了這個問題,任務可以以流的方式不斷輸出,以保證記憶體可以及時釋放。

public

class somestreamingjob implements streamingjob

@override

public string next() };}

@override

public executorexecutor() };}

}

implement a map/reduce job
public class mapreduceexamplejob implements mapreducejob<

integer, integer

> };}

@override

public com.jiuxian.mossrose.job.mapreducejob.executor<

integer, integer

> executor() };}

@override

public com.jiuxian.mossrose.job.mapreducejob.reducer<

integer

> reducer() ", rs);}};

}}

使用redis構建可靠分布式鎖

關於分布式鎖的概念,具體實現方式,直接參閱下面兩個帖子,這裡就不多介紹了。分布式鎖的多種實現方式 分布式鎖總結 對於分布式鎖的幾種實現方式的優劣,這裡再列舉下 1.資料庫實現方式 優點 易理解 缺點 運算元據庫消耗較大,效能較低。為了處理一些異常,會使得整個方案越來越複雜 2.快取實現方式 優點 效...

Jenkins的分布式構建

1.架構 jenkins的master sl e分布式架構可以解決單點構建任務多 負載較高 效能不足的問題。2.原理 對於jenkins的分布式框架,可以簡單的理解為server client模式,在jenkins中是master sl e,也就是乙個主的server叫master,其他的子clie...

從構建分布式秒殺系統聊聊分布式鎖

摘要 前言 最近懶成一坨屎,學不動系列一波接一波,大多還都是底層原理相關的。上周末抽時間重讀了周志明大濕的 jvm 高效併發部分,每讀一遍都有不同的感悟。路漫漫,藉此,把前段時間搞著玩的秒殺案例中的分布式鎖深入了解一下。最近懶成一坨屎,學不動系列一波接一波,大多還都是底層原理相關的。上周末抽時間重讀...