ืึทืคึผืึทื˜ืฉื™ ื™ื’ื ื™ื˜ืข ื ื•ืœ ื“ื™ืคึผืœื•ื™ืžืึทื ื˜: ื˜ืึทืงืข ื ื•ืœ?

ืึทืคึผืึทื˜ืฉื™ ื™ื’ื ื™ื˜ืข ื ื•ืœ ื“ื™ืคึผืœื•ื™ืžืึทื ื˜: ื˜ืึทืงืข ื ื•ืœ?

ืžื™ืจ ื–ืขื ืขืŸ ื“ื™ ื˜ืขื›ื ืึธืœืึธื’ื™ืข ืึทื ื˜ื•ื•ื™ืงืœื•ื ื’ ืึธืคึผื˜ื™ื™ืœื•ื ื’ ืคื•ืŸ ืึท ืœืึทื›ืึธื“ื™ืž ื ืขืฅ. ืื™ื™ืŸ ื˜ืึธื’, ืคืึทืจื•ื•ืึทืœื˜ื•ื ื’ ืฉื˜ืขืœืŸ ื“ื™ ืึทืจื‘ืขื˜ ืฆื• ืคืึทืจื’ื™ื›ืขืจืŸ ื’ืจื•ื™ืก-ื•ื•ืึธื’ ื—ืฉื‘ื•ื ื•ืช ื“ื•ืจืš ื ื™ืฆืŸ Apache Ignite ืื™ืŸ ืงืึทื ื“ื–ืฉืึทื ื’ืงืฉืึทืŸ ืžื™ื˜ MSSQL, ืื•ืŸ ื’ืขื•ื•ื™ื–ืŸ ืึท ื•ื•ืขื‘ื–ื™ื™ื˜ืœ ืžื™ื˜ ืฉื™ื™ืŸ ืื™ืœื•ืกื˜ืจืืฆื™ืขืก ืื•ืŸ ื‘ื™ื™ืฉืคื™ืœืŸ ืคื•ืŸ Java ืงืึธื“. ืื™ืš ื’ืœื™ื™ืš ืœื™ื™ืงื˜ ื“ืขื ืคึผืœืึทืฅ ื ื•ืœ ื“ื™ืคึผืœื•ื™ืžืึทื ื˜, ื“ื™ ื‘ืึทืฉืจื™ื™ึทื‘ื•ื ื’ ืคื•ืŸ ื•ื•ืึธืก ื”ื‘ื˜ื—ื•ืช ืžื™ืจืึทืงืึทืœื–: ืื™ืจ ื˜ืึธืŸ ื ื™ื˜ ื”ืึธื‘ืŸ ืฆื• ืžืึทื ื™ื•ืึทืœื™ ืฆืขื•ื•ื™ืงืœืขืŸ ื“ื™ื™ืŸ ื“ื–ืฉืึทื•ื•ืึท ืึธื“ืขืจ ืกืงืึทืœืึท ืงืึธื“ ืื•ื™ืฃ ื™ืขื“ืขืจ ื ืึธื“ืข ืื™ืŸ ื“ื™ ื’ืจื™ื“ ืื•ืŸ ืฉื™ื™ึทืขืš-ืฆืขื•ื•ื™ืงืœืขืŸ ืขืก ื™ืขื“ืขืจ ืžืึธืœ ืขืก ืขื ื“ืขืจื•ื ื’ืขืŸ. ื•ื•ื™ ื“ื™ ืึทืจื‘ืขื˜ ืคึผืจืึทื’ืจืขืกื˜, ืขืก ืคืืจืงืขืจื˜ ืื•ื™ืก ืึทื– ื ื•ืœ ื“ื™ืคึผืœื•ื™ืžืึทื ื˜ ื”ืื˜ ืกืคึผืขืฆื™ืคื™ืฉ ื ื™ืฆื˜, ื“ื™ ืคึฟืขื™ึดืงื™ื™ื˜ืŸ ืคื•ืŸ ื•ื•ืึธืก ืื™ืš ื•ื•ื™ืœืŸ ืฆื• ื˜ื™ื™ืœืŸ. ื•ื ื˜ืขืจ ื“ืขืจ ื“ื•ืจื›ืฉื ื™ื˜ ื–ืขื ืขืŸ ื’ืขื“ืื ืงืขืŸ ืื•ืŸ ื™ืžืคึผืœืึทืžืขื ื˜ื™ื™ืฉืึทืŸ ื“ืขื˜ืึทื™ืœืก.

1. ื“ืขืจืงืœืขืจื•ื ื’ ืคื•ืŸ ื“ื™ ืคึผืจืึธื‘ืœืขื

ื“ื™ ืขืกืึทื ืก ืคื•ืŸ ื“ื™ ืคึผืจืึธื‘ืœืขื ืื™ื– ื•ื•ื™ ื’ื™ื™ื˜. ืขืก ืื™ื– ืึท ืกืึทืœืขืกืคึผืึธื™ื ื˜ ื•ื•ืขื’ื•ื•ื™ื™ึทื–ืขืจ ืคื•ืŸ ืคืืจืงื•ื™ืคื•ื ื’ ื•ื•ื™ื™ื–ื˜ ืื•ืŸ ืึท ืกืงื• (ืกื˜ืึทืง ื‘ืขื›ืขืกืงืขื ื™ื•ื ื™ื˜) ืคึผืจืึธื“ื•ืงื˜ ื•ื•ืขื’ื•ื•ื™ื™ึทื–ืขืจ. ื“ื™ ืคื•ื ื˜ ืคื•ืŸ ืคืึทืจืงื•ื™ืฃ ื”ืื˜ ืึท "ืกื˜ืึธืจ ื˜ื™ืคึผ" ืึทื˜ืจื™ื‘ื™ื•ื˜ ืžื™ื˜ ื“ื™ ื•ื•ืึทืœื•ืขืก "ืงืœื™ื™ืŸ" ืื•ืŸ "ื’ืจื•ื™ืก". ืึท ืกืึธืจื˜ื™ืจื•ื ื’ (ืจืฉื™ืžื” ืคื•ืŸ ืคึผืจืึธื“ื•ืงื˜ืŸ ืคื•ืŸ ื“ื™ ืคื•ื ื˜ ืคื•ืŸ ืคืึทืจืงื•ื™ืฃ) ืื™ื– ืงืึธื ื ืขืงื˜ืขื“ ืฆื• ื™ืขื“ืขืจ ืคื•ื ื˜ ืคื•ืŸ ืคืึทืจืงื•ื™ืฃ (ืœืึธื•ื“ื™ื“ ืคึฟื•ืŸ ื“ื™ DBMS) ืื•ืŸ ืื™ื ืคึฟืึธืจืžืึทืฆื™ืข ืื™ื– ืฆื•ื’ืขืฉื˜ืขืœื˜ ืึทื– ืคึฟื•ืŸ ื“ื™ ืกืคึผืขืกื™ืคื™ืขื“ ื˜ืึธื’ ื“ื™ ืกืคึผืขืกื™ืคื™ืขื“ ืคึผืจืึธื“ื•ืงื˜
ื™ืงืกืงืœื•ื“ื™ื“ ืคื•ืŸ ื“ื™ ืกืึธืจื˜ื™ืจื•ื ื’ ืึธื“ืขืจ ืฆื•ื’ืขื’ืขื‘ืŸ ืฆื• ื“ื™ ืกืึธืจื˜ื™ืจื•ื ื’.

ืขืก ืื™ื– ืคืืจืœืื ื’ื˜ ืฆื• ืึธืจื’ืึทื ื™ื–ื™ืจืŸ ืึท ืคึผืึทืจื˜ื™ืฉืึทื ื“ ืงืึทืฉ ืคื•ืŸ ืคืึทืจืงื•ื™ืฃ ืื•ืŸ ืงืจืึธื ืื™ืŸ ืขืก ืื™ื ืคึฟืึธืจืžืึทืฆื™ืข ื•ื•ืขื’ืŸ ืคืืจื‘ื•ื ื“ืŸ ืคึผืจืึธื“ื•ืงื˜ืŸ ืคึฟืึทืจ ืึท ื—ื•ื“ืฉ ืื™ืŸ ืฉื˜ื™ื™ึทื’ืŸ. ืงืึทืžืคึผืึทื˜ืึทื‘ื™ืœืึทื˜ื™ ืžื™ื˜ ื“ื™ ืงืึทืžื‘ืึทื˜ ืกื™ืกื˜ืขื ืจื™ืงื•ื•ื™ื™ืขืจื– ื“ื™ Ignite ืงืœื™ืขื ื˜ ื ืึธื“ืข ืฆื• ืœืึธื“ืŸ ื“ืึทื˜ืŸ, ืจืขื›ืขื ืขืŸ ืึท ื’ืขืžื™ื™ื ื–ืึทื ืคื•ืŸ ื“ื™ ืคืึธืจืขื (ืกื˜ืึธืจ ื˜ื™ืคึผ, ืคึผืจืึธื“ื•ืงื˜ ืงืึธื“, ื˜ืึธื’, ื ื•ืžืขืจ_ืคื•ืŸ_ืกืึทืœืขืก_ืคึผืึธื™ื ืฅ) ืื•ืŸ ืฆื•ืคึฟืขืœื™ืงืขืจ ืขืก ืฆื•ืจื™ืง ืฆื• ื“ื™ DBMS.

2. ืœืขืจื ืขืŸ ืคื•ืŸ ืœื™ื˜ืขืจืึทื˜ื•ืจ

ืื™ืš ื˜ืึธืŸ ื ื™ื˜ ื”ืึธื‘ืŸ ืงื™ื™ืŸ ื“ืขืจืคืึทืจื•ื ื’ ื ืึธืš, ืึทื–ื•ื™ ืื™ืš ื‘ื™ืŸ ืกื˜ืึทืจื˜ื™ื ื’ ืฆื• ื˜ืึทื ืฆืŸ ืคื•ืŸ ื“ืขืจ ื”ืจื•ื‘ืข. ื“ืึธืก ื”ื™ื™ืกื˜, ืคึฟื•ืŸ ืึท ืจืขืฆืขื ื–ื™ืข ืคึฟื•ืŸ ืื•ื™ืกื’ืึทื‘ืขืก.

ืึทืจื˜ื™ืงืœ 2016 ื™ื ื˜ืจืึธื•ื“ื•ืกื™ื ื’ Apache Ignite: ืขืจืฉื˜ืขืจ ืกื˜ืขืคึผืก ื›ึผื•ืœืœ ืึท ืœื™ื ืง ืฆื• ื“ื™ ื“ืึทืงื™ื•ืžืขื ื˜ื™ื™ืฉืึทืŸ ืคื•ืŸ ื“ื™ Apache Ignite ืคึผืจื•ื™ืขืงื˜ ืื•ืŸ ืื™ืŸ ื“ืขืจ ื–ืขืœื‘ื™ืงืขืจ ืฆื™ื™ื˜ ืึท ื˜ื™ื™ึทื ืข ืคึฟืึทืจ ื“ื™ ื•ื•ื™ื™ื’ืงื™ื™ื˜ ืคื•ืŸ ื“ื™ ื“ืึทืงื™ื•ืžืขื ื˜ื™ื™ืฉืึทืŸ. ืื™ืš ืœื™ื™ืขื ืขืŸ ืขืก ื•ื•ื™ื“ืขืจ ืึท ืคึผืึธืจ ืคื•ืŸ ืžืืœ, ืงืœืขืจื™ื˜ื™ ืงื•ืžื˜ ื ื™ืฉื˜. ืื™ืš ืึธืคึผืฉื™ืงืŸ ืฆื• ื“ืขืจ ื‘ืึทืึทืžื˜ืขืจ ื˜ื•ื˜ืึธืจื™ืึทืœ ืื ื”ื•ื™ื‘ืŸื•ื•ืึธืก
ืึธืคึผื˜ื™ืžื™ืกื˜ื™ืฉ ื”ื‘ื˜ื—ื•ืช "ืื™ืจ ื•ื•ืขื˜ ื–ื™ื™ืŸ ืึทืจื•ื™ืฃ ืื•ืŸ ืคืœื™ืกื ื“ื™ืง ืื™ืŸ ืึท ื“ื–ืฉืขืฃ!" ืื™ืš ื’ืขืคึฟื™ื ืขืŸ ื“ื™ ื™ื ื•ื•ื™ื™ืจืึทื ืžืขื ืึทืœ ืกืขื˜ื˜ื™ื ื’ืก, ื•ื•ืึทื˜ืฉื™ื ื’ ืฆื•ื•ื™ื™ Apache Ignite Essentials ื•ื•ื™ื“ื™ืืก, ืึธื‘ืขืจ ื–ื™ื™ ื–ืขื ืขืŸ ื ื™ืฉื˜ ื–ื™ื™ืขืจ ื ื•ืฆื™ืง ืคึฟืึทืจ ืžื™ื™ืŸ ืกืคึผืขืฆื™ืคื™ืฉ ืึทืจื‘ืขื˜. ืื™ืš ื”ืฆืœื—ื” ืงืึทื˜ืขืจ Ignite ืคึฟื•ืŸ ื“ื™ ื‘ืึทืคึฟืขืœืŸ ืฉื•ืจื” ืžื™ื˜ ื“ืขืจ ื ืึธืจืžืึทืœ ื˜ืขืงืข "example-ignite.xml", ืื•ืŸ ื‘ื•ื™ืขืŸ ื“ืขืจ ืขืจืฉื˜ืขืจ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืจืขื›ืขื ืขืŸ ืึทืคึผืคึผืœื™ืงืึทื˜ื™ืึธืŸ ื ื™ืฆืŸ ืžืึทื•ื•ืขืŸ. ื“ื™ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืึทืจื‘ืขื˜ ืื•ืŸ ื ื™ืฆื˜ ื ื•ืœ ื“ื™ืคึผืœื•ื™ืžืึทื ื˜, ื•ื•ืึธืก ืึท ืฉื™ื™ื ืงื™ื™ื˜!

ืื™ืš ืœื™ื™ืขื ืขืŸ ื•ื•ื™ื™ื˜ืขืจ, ืื•ืŸ ื“ืขืจ ื‘ื™ื™ืฉืคึผื™ืœ ื ื™ืฆื˜ ื’ืœื™ื™ืš AffinityKey (ื‘ืืฉืืคืŸ ืคืจื™ืขืจ ื“ื•ืจืš ืึท SQL ืึธื ืคึฟืจืขื’), ืื•ืŸ ืืคื™ืœื• ื ื™ืฆื˜ ื“ื™ ืžื™ืกื˜ืขืจื™ืขื– BinaryObject:

IgniteCache<BinaryObject, BinaryObject> people 
        = ignite.cache("Person").withKeepBinary(); 

ืื™ืš ืœื™ื™ืขื ืขืŸ ืขืก ืึท ืงืœื™ื™ืŸ ื‘ื™ืกืœ: ื‘ื™ื™ื ืขืจื™ ืคึฟืึธืจืžืึทื˜ - ืขืคึผืขืก ื•ื•ื™ ืึธืคึผืฉืคึผื™ื’ืœื•ื ื’, ืึทืงืกืขืกื™ื ื’ ื“ื™ ืคืขืœื“ืขืจ ืคื•ืŸ ืึท ื›ื™ื™ืคืขืฅ ื“ื•ืจืš ื ืึธืžืขืŸ. ืงืขื ืขืŸ ืœื™ื™ืขื ืขืŸ ื“ื™ ื•ื•ืขืจื˜ ืคื•ืŸ ืึท ืคืขืœื“ ืึธืŸ ื’ืึธืจ ื“ืขืกืขืจื™ืึทืœื™ื–ื™ืจืŸ ื“ื™ ื›ื™ื™ืคืขืฅ (ืฉืคึผืึธืจืŸ ื–ื›ึผืจื•ืŸ). ืึธื‘ืขืจ ื•ื•ืึธืก ืื™ื– BinaryObject ื’ืขื•ื•ื™ื™ื ื˜ ืึทื ืฉื˜ืึธื˜ ืคื•ืŸ ืžืขื ื˜ืฉ, ื•ื•ื™ื™ึทืœ ืขืก ืื™ื– ื ื•ืœ ื“ื™ืคึผืœื•ื™ืžืึทื ื˜? ืคืืจื•ื•ืืก IgniteCache ื˜ืจืึทื ืกืคืขืจื“ ืฆื• IgniteCache ? ืขืก ืื™ื– ื ืึธืš ื ื™ืฉื˜ ืงืœืึธืจ.

ืื™ืš ืจืขืžืึทื›ืŸ ื“ื™ ืงืึทืžืคึผื™ื•ื˜ืข ืึทืคึผืคึผืœื™ืงืึทื˜ื™ืึธืŸ ืฆื• ืคึผืึทืกืŸ ืžื™ื™ืŸ ืคืึทืœ. ื“ืขืจ ืขืจืฉื˜ื™ืง ืฉืœื™ืกืœ ืคื•ืŸ ื“ืขืจ ื•ื•ืขื’ื•ื•ื™ื™ึทื–ืขืจ ืคื•ืŸ ืคืืจืงื•ื™ืคื•ื ื’ ืคื•ื ืงื˜ืŸ ืื™ืŸ MSSQL ืื™ื– ื“ื™ืคื™ื™ื ื“ ื•ื•ื™ [ืฉื™ื™ึทืŸ] [ื™ื ื˜] ื ื™ื˜ NULL, ืื™ืš ืžืึทื›ืŸ ืึท ืงืึทืฉ ื“ื•ืจืš ืึทื ืึทืœืึทื“ื–ืฉื™

IgniteCache<Integer, SalesPoint> salesPointCache=ignite.cache("spCache")

ืื™ืŸ ื“ื™ xml ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ, ืื™ืš ืึธื ื•ื•ื™ื™ึทื–ืŸ ืึทื– ื“ื™ ืงืึทืฉ ืื™ื– ืคึผืึทืจื˜ื™ืฉืึทื ื“

<bean class="org.apache.ignite.configuration.CacheConfiguration">
    <property name="name" value="spCache"/>
    <property name="cacheMode" value="PARTITIONED"/>
</bean>

ืคึผืึทืจื˜ื™ื˜ื™ืึธืŸ ื“ื•ืจืš ืคื•ื ื˜ ืคื•ืŸ ืคืึทืจืงื•ื™ืฃ ืึทืกื•ืžื– ืึทื– ื“ื™ ืคืืจืœืื ื’ื˜ ื’ืขืžื™ื™ื ื–ืึทื ื•ื•ืขื˜ ื–ื™ื™ืŸ ื’ืขื‘ื•ื™ื˜ ืื•ื™ืฃ ื™ืขื“ืขืจ ืงื ื•ื™ืœ ื ืึธื“ืข ืคึฟืึทืจ ื“ื™ ืกืึทืœืขืกืคึผืึธื™ื ื˜ ืงืึทื˜ืฉืข ืจืขืงืึธืจื“ืก ื‘ื ื™ืžืฆื ื“ืึธืจื˜, ื ืึธืš ื•ื•ืึธืก ื“ืขืจ ืงืœื™ืขื ื˜ ื ืึธื“ืข ื•ื•ืขื˜ ื“ื•ืจื›ืคื™ืจืŸ ื“ื™ ืœืขืฆื˜ ืกืึทืžืขืจื™ื™ืฉืึทืŸ.

ืื™ืš ืœื™ื™ืขื ืขืŸ ื“ืขื ื˜ื•ื˜ืึธืจื™ืึทืœ ืขืจืฉื˜ืขืจ Ignite Compute ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ, ืื™ืš ื˜ืึธืŸ ืขืก ื“ื•ืจืš ืึทื ืึทืœืึทื“ื–ืฉื™. ืื•ื™ืฃ ื™ืขื“ืขืจ ืงื ื•ื™ืœ ื ืึธื“ืข ืื™ืš ืœื•ื™ืคืŸ IgniteRunnable (), ืขืคึผืขืก ื•ื•ื™ ื“ืึธืก:

  @Override
  public void run() {
    SalesPoint sp=salesPointCache.get(spId);
    sp.calculateSalesPointCount();
    ..
  }

ืื™ืš ืœื™ื™ื’ืŸ ืึทื’ื’ืจืขื’ืึทื˜ื™ืึธืŸ ืื•ืŸ ื•ืคึผืœืึธืึทื“ื™ื ื’ ืœืึธื’ื™ืง ืื•ืŸ ืœื•ื™ืคืŸ ืขืก ืื•ื™ืฃ ืึท ืคึผืจืึธื‘ืข ื“ืึทื˜ืŸ ืฉื˜ืขืœืŸ. ืึทืœืฅ ืึทืจื‘ืขื˜ ืœืึธื•ืงืึทืœื™ ืื•ื™ืฃ ื“ื™ ืึทื ื˜ื•ื•ื™ืงืœื•ื ื’ ืกืขืจื•ื•ืขืจ.

ืื™ืš ืงืึทื˜ืขืจ ืฆื•ื•ื™ื™ CentOs ืคึผืจื•ื‘ื™ืจืŸ ืกืขืจื•ื•ืขืจืก, ืกืคึผืขืฆื™ืคื™ืฆื™ืจืŸ ื“ื™ IP ืึทื“ืจืขืกืขืก ืื™ืŸ default-config.xml, ื•ื™ืกืคื™ืจืŸ ืื•ื™ืฃ ื™ืขื“ืขืจ

./bin/ignite.sh config/default-config.xml

ื‘ื™ื™ื“ืข ื™ื’ื ื™ื˜ืข ื ืึธื•ื“ื– ื–ืขื ืขืŸ ืคืœื™ืกื ื“ื™ืง ืื•ืŸ ืงืขื ืขืŸ ื–ืขืŸ ื™ืขื“ืขืจ ืื ื“ืขืจืขืจ. ืื™ืš ืกืคึผืขืฆื™ืคื™ืฆื™ืจืŸ ื“ื™ ืคืืจืœืื ื’ื˜ ืึทื“ืจืขืกืขืก ืื™ืŸ ื“ื™ xml ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ ืคื•ืŸ ื“ื™ ืงืœื™ืขื ื˜ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ, ืขืก ืกื˜ืึทืจืฅ, ืžื•ืกื™ืฃ ืึท ื“ืจื™ื˜ ื ืึธื“ืข ืฆื• ื“ื™ ื˜ืึทืคึผืึทืœืึทื“ื–ืฉื™ ืื•ืŸ ื’ืœื™ื™ืš ืขืก ื–ืขื ืขืŸ ืฆื•ื•ื™ื™ ื ืึธื•ื“ื– ื•ื•ื™ื“ืขืจ. ื“ืขืจ ืงืœืึธืฅ ื•ื•ื™ื™ื–ื˜ "ClassNotFoundException: model.SalesPoint" ืื™ืŸ ื“ื™ ืฉื•ืจื”

SalesPoint sp=salesPointCache.get(spId);

StackOverflow ื–ืื’ื˜ ืึทื– ื“ื™ ืกื™ื‘ื” ืคึฟืึทืจ ื“ืขื ื˜ืขื•ืช ืื™ื– ืึทื– ืขืก ืื™ื– ืงื™ื™ืŸ ืžื ื”ื’ ืกืึทืœืขืกืคึผืึธื™ื ื˜ ืงืœืึทืก ืื•ื™ืฃ CentOs ืกืขืจื•ื•ืขืจืก. ืžื™ืจ ื–ืขื ืขืŸ ืื ื’ืขืงื•ืžืขืŸ. ื•ื•ื™ ื•ื•ืขื’ืŸ "ืื™ืจ ื˜ืึธืŸ ื ื™ื˜ ื”ืึธื‘ืŸ ืฆื• ืžืึทื ื™ื•ืึทืœื™ ืฆืขื•ื•ื™ืงืœืขืŸ ื“ื™ื™ืŸ ื“ื–ืฉืึทื•ื•ืึท ืงืึธื“ ืื•ื™ืฃ ื™ืขื“ืขืจ ื ืึธื“ืข" ืื•ืŸ ืึทื–ื•ื™ ืื•ื™ืฃ? ืึธื“ืขืจ ืื™ื– "ื“ื™ื™ืŸ ื–'ืื‘ื ืงืึธื“" ื ื™ืฉื˜ ื•ื•ืขื’ืŸ ืกืึทืœืขืกืคึผืึธื™ื ื˜?

ืื™ืš ื”ืื‘ ืžืกืชืžื ืขืคืขืก ื’ืขืคืขืœื˜ - ืื™ืš ื”ื™ื™ื‘ื˜ ืืŸ ื ืื›ืืžืืœ ื–ื•ื›ืŸ, ืœื™ื™ืขื ืขืŸ ืื•ืŸ ื ืื›ืืžืืœ ื–ื•ื›ืŸ. ื ืึธืš ืึท ื‘ืฉืขืช, ืื™ืš ื‘ืึทืงื•ืžืขืŸ ื“ื™ ื’ืขืคื™ืœ ืึทื– ืื™ืš ื”ืึธื‘ืŸ ืœื™ื™ืขื ืขืŸ ืึทืœืฅ ืื•ื™ืฃ ื“ืขืจ ื˜ืขืžืข, ืขืก ืื™ื– ื’ืึธืจื ื™ืฉื˜ ื ื™ื™ึท ืขื ื™ืžืึธืจ. ื‘ืฉืขืช ืื™ืš ืื™ื– ื’ืขื•ื•ืขืŸ ื–ื•ื›ืŸ, ืื™ืš ื’ืขืคื•ื ืขืŸ ืขื˜ืœืขื›ืข ื˜ืฉื™ืงืึทื•ื•ืข ื‘ืึทืžืขืจืงื•ื ื’ืขืŸ.

ื•ื•ืึทืœืขื ื˜ื™ืŸ ืงื•ืœื™ื˜ืฉืขื ืงืึธ, ืคื™ืจืŸ ืึทืจื›ื™ื˜ืขืงื˜ ืื™ืŸ GridGain Systems, ืขื ื˜ืคืขืจ ืื•ื™ืฃ StackOverflow, ืืคืจื™ืœ 2016:

Model classes are not peer deployed, but you can use withKeepBinary() flag
on the cache and query BinaryObjects. This way you will avoid deserialization
on the server side and will not get ClassNotFoundException.

ืืŸ ืื ื“ืขืจ ืึทื˜ืึธืจืึทื˜ื™ื™ื˜ื™ื•ื• ืžื™ื™ื ื•ื ื’: ื“ืขื ื™ืก ืžืื’ื“ื, ื“ื™ืจืขืงื˜ืึธืจ ืคื•ืŸ ืคึผืจืึธื“ื•ืงื˜ ืคืึทืจื•ื•ืึทืœื˜ื•ื ื’, GridGain Systems.

ืึทืจื˜ื™ืงืœ ืื•ื™ืฃ Habrรฉ ื•ื•ืขื’ืŸ ืžื™ืงืจืึธ ื‘ืึทื“ื™ื ื•ื ื’ืก ืจืขืคืขืจืขื ืฆืŸ ื“ืจื™ื™ ืืจื˜ื™ืงืœืขืŸ ืคื•ืŸ ื“ืขื ื™ืก ืžืื’ื“ื: ืžื™ืงืจืึธ ืกืขืจื•ื•ื™ืกืขืก ื˜ื™ื™ืœ ืื™ืš, ืžื™ืงืจืึธ ืกืขืจื•ื•ื™ืกืขืก ื˜ื™ื™ืœ ื•ื•, ืžื™ืงืจืึธ ืกืขืจื•ื•ื™ืกืขืก ื˜ื™ื™ืœ ื•ื•ื• 2016-2017. ืื™ืŸ ื“ื™ ืจื’ืข ืึทืจื˜ื™ืงืœ, ื“ืขื ื™ืก ืกืึทื’ื“ื–ืฉืขืกืฅ ืกื˜ืึทืจื˜ื™ื ื’ ืึท ืงื ื•ื™ืœ ื ืึธื“ืข ื“ื•ืจืš MaintenanceServiceNodeStartup.jar. ืื™ืจ ืงืขื ื˜ ืื•ื™ืš ื ื•ืฆืŸ ืงืึทื˜ืขืจ ืžื™ื˜ ืงืกืžืœ ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ ืื•ืŸ ื‘ืึทืคึฟืขืœืŸ ืฉื•ืจื”, ืึธื‘ืขืจ ืื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ืžืึทื ื™ื•ืึทืœื™ ืฉื˜ืขืœืŸ ืžื ื”ื’ ืงืœืืกืŸ ืื•ื™ืฃ ื™ืขื“ืขืจ ื“ื™ืคึผืœื•ื™ื“ ืงื ื•ื™ืœ ื ืึธื“ืข:

That's it. Start (..)  node using MaintenanceServiceNodeStartup file or pass
maintenance-service-node-config.xml to Apache Ignite's ignite.sh/bat scripts.
If you prefer the latter then make sure to build a jar file that will contain
all the classes from java/app/common and java/services/maintenance directories.
The jar has to be added to the classpath of every node where the service
might be deployed.

ื˜ืึทืงืข, ืึทื– ืก ืขืก. ื“ืึธ ืขืก ื˜ื•ืจื ืก ืื•ื™ืก, ื•ื•ืึธืก, ื“ืขื ืžื™ืกื˜ืขืจื™ืขื– ื‘ื™ื™ื ืขืจื™ ืคึฟืึธืจืžืึทื˜!

3.ืกื™ื ื’ืœืขื“ื–ืฉืึทืจ

ื“ืขื ื™ืก ื’ืขื ื•ืžืขืŸ ืขืจืฉื˜ืขืจ ืึธืจื˜ ืื™ืŸ ืžื™ื™ืŸ ืคืขืจื–ืขื ืœืขื›ืข ืจืึทื ื’, IMHO ื“ื™ ืžืขืจืกื˜ ื ื•ืฆื™ืง ื˜ื•ื˜ืึธืจื™ืึทืœ ืคื•ืŸ ืึทืœืข ื‘ื ื™ืžืฆื. ืื™ืŸ ื–ื™ื™ืŸ ื‘ื™ื™ืฉืคื™ืœ ืคื•ืŸ ืžื™ืงืจืึธ ืกืขืจื•ื•ื™ืกืขืก Github ื›ึผื•ืœืœ ืึท ื’ืึธืจ ืคืึทืจื˜ื™ืง ื‘ื™ื™ืฉืคึผื™ืœ ืคื•ืŸ ื‘ืึทืฉื˜ืขื˜ื™ืงืŸ ืงื ื•ื™ืœ ื ืึธื•ื“ื–, ื•ื•ืึธืก ืงืึทืžืคึผื™ื™ืœื– ืึธืŸ ื ืึธืš ืกืงื•ื•ืึทื˜ื™ื ื’.

ืื™ืš ื˜ืึธืŸ ื“ืึธืก ื“ื™ ื–ืขืœื‘ืข ื•ื•ืขื’ ืื•ืŸ ื‘ืึทืงื•ืžืขืŸ ืึท ืื™ื™ืŸ ืกืœื•ื™ ื˜ืขืงืข ื•ื•ืึธืก ืœืึธื ื˜ืฉื™ื– "ื“ืึทื˜ืึท ื ืึธื“ืข" ืึธื“ืขืจ "ืงืœื™ืขื ื˜ ื ืึธื“ืข" ื“ื™ืคึผืขื ื“ื™ื ื’ ืื•ื™ืฃ ื“ื™ ื‘ืึทืคึฟืขืœืŸ ืฉื•ืจื” ืึทืจื’ื•ืžืขื ื˜. ื“ื™ ืคึฟืึทืจื–ืึทืžืœื•ื ื’ ืกื˜ืึทืจืฅ ืื•ืŸ ืึทืจื‘ืขื˜. ื ื•ืœ ื“ื™ืคึผืœื•ื™ืžืึทื ื˜ ืื™ื– ื“ื™ืคื™ื˜ื™ื“.

ื“ื™ ื™ื‘ืขืจื’ืึทื ื’ ืคื•ืŸ ืžืขื’ืึทื‘ื™ื˜ืขืก ืคื•ืŸ ืคึผืจืึธื‘ืข ื“ืึทื˜ืŸ ืฆื• ื˜ืขื ืก ืคื•ืŸ ื’ื™ื’ืื‘ื™ื™ื˜ ืคื•ืŸ ืงืึทืžื‘ืึทื˜ ื“ืึทื˜ืŸ ื’ืขื•ื•ื™ื–ืŸ ืึทื– ื“ื™ ื‘ื™ื™ื ืขืจื™ ืคึฟืึธืจืžืึทื˜ ื™ื’ื–ื™ืกืฅ ืคึฟืึทืจ ืึท ืกื™ื‘ื”. ืขืก ืื™ื– ื’ืขื•ื•ืขืŸ ื ื™ื™ื˜ื™ืง ืฆื• ืึทืคึผื˜ืึทืžื™ื™ื– ื–ื›ึผืจื•ืŸ ืงืึทื ืกืึทืžืฉืึทืŸ ืื•ื™ืฃ ื ืึธื•ื“ื–, ืื•ืŸ ื“ืึธืก ืื™ื– ื•ื•ื• BinaryObject ืื™ื– ื’ืขื•ื•ืขืŸ ื–ื™ื™ืขืจ ื ื•ืฆื™ืง.

4. ืงืึทื ืงืœื•ื–ืฉืึทื ื–

ื“ืขืจ ืขืจืฉื˜ืขืจ ื˜ื™ื™ึทื ืข ื’ืขืคึผืœืึธื ื˜ืขืจื˜ ื•ื•ืขื’ืŸ ื“ื™ ื•ื•ื™ื™ื’ืงื™ื™ื˜ ืคื•ืŸ ื“ื™ ื“ืึทืงื™ื•ืžืขื ื˜ื™ื™ืฉืึทืŸ ืคื•ืŸ ื“ื™ Apache Ignite ืคึผืจื•ื™ืขืงื˜ ืื™ื– ื’ืขื•ื•ืขืŸ ืฉื™ื™ืŸ; ื‘ื™ืกืœ ืื™ื– ืคืืจืขื ื“ืขืจื˜ ื–ื™ื ื˜ 2016. ืขืก ืื™ื– ื ื™ืฉื˜ ื’ืจื™ื ื’ ืคึฟืึทืจ ืึท ืึธื ื”ื™ื™ื‘ืขืจ ืฆื• ืึทืกืขืžื‘ืึทืœ ืึท ืคืึทื ื’ืงืฉืึทื ื™ื ื’ ืคึผืจืึธื•ื˜ืึทื˜ื™ื™ืคึผ ื‘ืื–ื™ืจื˜ ืื•ื™ืฃ ืึท ื•ื•ืขื‘ื–ื™ื™ื˜ืœ ืื•ืŸ / ืึธื“ืขืจ ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™.

ื‘ืึทื–ื™ืจื˜ ืื•ื™ืฃ ื“ื™ ืจืขื–ื•ืœื˜ืึทื˜ืŸ ืคื•ืŸ ื“ื™ ื“ื•ืจื›ื’ืขืงืึธื›ื˜ ืึทืจื‘ืขื˜, ื“ืขืจ ืจื•ืฉื ืื™ื– ื’ืขื•ื•ืขืŸ ืึทื– ื ื•ืœ ื“ื™ืคึผืœื•ื™ืžืึทื ื˜ ืึทืจื‘ืขื˜, ืึธื‘ืขืจ ื‘ืœื•ื™ื– ืื•ื™ืฃ ื“ื™ ืกื™ืกื˜ืขื ืžื“ืจื’ื”. ืขืคึผืขืก ื•ื•ื™ ื“ืึธืก: BinaryObject ืื™ื– ื’ืขื ื™ืฆื˜ ืฆื• ืœืขืจื ืขืŸ ื•ื•ื™ื™ึทื˜ ืงื ื•ื™ืœ ื ืึธื•ื“ื– ืฆื• ืึทืจื‘ืขื˜ืŸ ืžื™ื˜ ืžื ื”ื’ ืงืœืืกืŸ; ื ื•ืœ ื“ื™ืคึผืœื•ื™ืžืึทื ื˜ - ื™ื ืขืจืœืขืš ืžืขืงืึทื ื™ื–ืึทื
ืึทืคึผืึทื˜ืฉื™ ื™ื’ื ื™ื˜ืข ื–ื™ืš ืื•ืŸ ื“ื™ืกื˜ืจื™ื‘ื™ื•ืฅ ืกื™ืกื˜ืขื ืึทื‘ื“ื–ืฉืขืงืฅ ืื™ื‘ืขืจ ื“ื™ ืงื ื•ื™ืœ.

ืื™ืš ื”ืึธืคึฟืŸ ืึทื– ืžื™ื™ืŸ ื“ืขืจืคืึทืจื•ื ื’ ื•ื•ืขื˜ ื–ื™ื™ืŸ ื ื•ืฆื™ืง ืคึฟืึทืจ ื ื™ื™ึทืข Apache Ignite ื™ื•ื–ืขืจื–.

ืžืงื•ืจ: www.habr.com

ืœื™ื™ื’ืŸ ืึท ื‘ืึทืžืขืจืงื•ื ื’