網(wǎng)格計(jì)算一般分為兩種:數(shù)據(jù)網(wǎng)格和計(jì)算網(wǎng)格,簡(jiǎn)單的說數(shù)據(jù)網(wǎng)格就是把數(shù)據(jù)分布式存儲(chǔ),計(jì)算網(wǎng)格就是將任務(wù)分解為子認(rèn)為并行計(jì)算。
一個(gè)計(jì)算網(wǎng)格平臺(tái)的作用就是將任務(wù)分解開來,交給不同的結(jié)點(diǎn)機(jī)器運(yùn)行,然后把運(yùn)行結(jié)果匯聚起來。這就是Split and Aggregate。如下圖所示,一個(gè)job請(qǐng)求分解為三個(gè)sub-job,分別被不同的機(jī)器執(zhí)行,然后把結(jié)果匯聚,返回給調(diào)用的客戶。
GridGain是一個(gè)開源的java網(wǎng)格平臺(tái)。它集成了很多現(xiàn)成的框架,例如
JBoss
Spring
Spring AOP
JBoss AOP
AspectJ
JGroups
GridGain有兩個(gè)方法將應(yīng)用程序grid化:
第一種是使用AOP
假設(shè)有一個(gè)應(yīng)用
01 class BizLogic {
02 public static Result process(String param) {
03 …
04 }
05 }
06
07 class Caller {
08 public static void Main(String[] args) {
09 BizLogic.process(args[0]);
10 }
11 }
如果要把process grid化,只要簡(jiǎn)單的使用一個(gè)@Gridify的annotation即可,在Caller客戶端要啟動(dòng)GridFactory
01 class BizLogic {
02 @Gridify(…)
Here
03 public static Result process(String param) {
04 …
05 }
06 }
07
08 class Caller {
09 public static void Main(String[] args) {
10 GridFactory.start();
Here
11
12 try {
13 BizLogic.process(args[0]);
14 }
15 finally {
16 GridFactory.stop();
Here
17 }
18 }
19 }