ืืื ืืขื ืึทืจืืืงื ืืืจ ืืืขืื ืจืขืื ืืืขืื ืืื ืืื ืืืึธืก ืืืจ ืืขืืืขืืึธืคึผืขื
ืื ืื ืืขืจืึทืงืฉืึทื ืกืืกืืขื (ืืขืจื ืึธื ืจืืคืขืจื ืฆื ืืื SV) ืืื ืึท ืคืื ืื ืืขืจืืขืืืืื, ืฉืืื-ืืึธืืขืจืึทื ื ืืขืกืืืืฉืื ื ืกืืกืืขื ืืื ืืขืจืึทื ืืื ืขืงืกืคึผืจืขืก. SV ืืื ืืืืืื ื ืืื ืึท ืืืื-ืืึทืกืข ืืื ืกื ืืื ืืืื ืกืงืึทืืึทืืืืืื, ืื ืืืฆื ืืื ืึทื ืึธื ืืืื ืืื ืกื (ืฆืืืขืฉืืขืื ืืืจื 1C) ืืื ืืื ืึท ืืึทืกืข-ืืขืฉืืคื ืคึผืจืึธืืืงื ืืืึธืก ืงืขื ืขื ืืืื ืืืคึผืืืื ืืืืฃ ืืืื ืืืืืขื ืข ืกืขืจืืืขืจ ืคืึทืกืืืึทืืื.
ืกืื ื ืืฆื ืคืื ืื ืืขืจืืขืืืืื ืกืืึธืจืืืืฉ
ืืืกืืึธืืื ื ืคืื ืื ืคึผืจืึธืืืขื
ืฆื ืืึทืื ืขืก ืงืืึธืจ ืืืึธืก ืืืจ ืืืฉืืคื ืื ืื ืืขืจืึทืงืฉืึทื ืกืืกืืขื, ืืื ืืืขื ืืึธืื ืืืจ ืึท ืืืกื ืืืขืื ืืื ืื ืึทื ืืืืืงืืื ื ืคืื ืืขืฉืขืคื ืึทืคึผืืึทืงืืืฉืึทื ื ืืื 1C ืึทืจืืขื.
ืฆื ืึธื ืืืืื ืืื, ืึท ืืืกื ืืืขืื ืืื ืื ืคึฟืึทืจ ืื ืืืืก ืืึธื ื ืื ื ืึธื ืืืืกื ืืืึธืก ืืืจ ืืึธื :) ืืืจ ืืึทืื ืื 1C: ืขื ืืขืจืคึผืจืืื ืืขืื ืึธืืึธืืืข ืคึผืืึทืืคืึธืจืืข. ืื ืคึผืืึทืืคืึธืจืืข ืืืื ืึท ืืขืฉืขืคื ืึทืคึผืืึทืงืืืฉืึทื ืึทื ืืืืืงืืื ื ืืขืฆืืึทื, ืืื ืืขืืื ื ืืื ืึท ืจืื ืืืืข ืืืึธืก ืึทืืึทืื ืืขืฉืขืคื ืึทืคึผืืึทืงืืืฉืึทื ื ืฆื ืืืืคื ืืื ืึท ืงืจืืึทื-ืคึผืืึทืืคืึธืจืืข ืกืืืืืืข.
ืงืืืขื ื-ืกืขืจืืืขืจ ืึทื ืืืืืงืืื ื ืคึผืึทืจืึทืืืื
ืืขืฉืขืคื ืึทืคึผืืึทืงืืืฉืึทื ื ืืืฉืืคื ืืืืฃ 1C: ืขื ืืขืจืคึผืจืืื ืึทืจืืขืื ืืื ืึท ืืจืื-ืืืจืื
ืืื ืึทืคึผืืึทืงืืืฉืึทื ืงืึธื, ืื ืืขืืขืจื ืคืื ืคึผืจืึธืืกืืืืฉืขืจื ืืื ืคืึทื ืืงืฉืึทื ื ืืืื ืืคืืจืืฉ ืึธื ืืืืึทืื ืืื ืื ืงืึธื ืืืขื ืืืื ืขืงืกืึทืงืืืืึทื - ื ืืฆื ืื &AtClient / &AtServer ืืืืจืขืงืืืืื (&AtClient / &AtServer ืืื ืื ืขื ืืืืฉ ืืืขืจืกืืข ืคืื โโืืขืจ ืฉืคึผืจืึทื). 1C ืืขืืืขืืึธืคึผืขืจืก ืืืขืื ืืืฆื ืคืึทืจืจืืืื ืืืจ ืืืจื ืืึธืื ืึทื ืื ืืืจืขืงืืืืื ืืขื ืขื ืึทืงืฉืื
ืืืจ ืงืขื ืขื ืจืืคื ืกืขืจืืืขืจ ืงืึธื ืคึฟืื ืงืืืขื ื ืงืึธื, ืึธืืขืจ ืืืจ ืงืขื ืขื ื ืืฉื ืจืืคื ืงืืืขื ื ืงืึธื ืคึฟืื ืกืขืจืืืขืจ ืงืึธื. ืืึธืก ืืื ืึท ืคืื ืืึทืืขื ืืึทื ืืึทืืจืขื ืขืฆืื ื ืืืึธืก ืืืจ ืืึธืื ืืขืืืื ืคึฟืึทืจ ืึท ื ืืืขืจ ืคืื ืกืืืืช. ืืื ืืึทืืื ืืขืจ, ืืืืึทื ืกืขืจืืืขืจ ืงืึธื ืืืื ืืืื ืืขืฉืจืืื ืึทืืื ืึทื ืขืก ืขืงืกืึทืงืืืฅ ืื ืืขืืืข ืืืขื ืงืืื ืขื ืื ืืื ืขืก ืืื ืืขืจืืคื - ืคืื ืืขื ืงืืืขื ื ืึธืืขืจ ืคืื ืื ืกืขืจืืืขืจ. ืืื ืืื ืืขื ืคืึทื ืคืื ืจืืคื ืกืขืจืืืขืจ ืงืึธื ืคืื ืื ืื ืืขืจ ืกืขืจืืืขืจ ืงืึธื, ืขืก ืืื ืงืืื ืงืืืขื ื ืืื ืึทืืึท. ืืื ืืืืึทื ืืขืฉืึทืก ืื ืืืจืืคืืจืื ื ืคืื ืื ืกืขืจืืืขืจ ืงืึธื, ืืขืจ ืงืืืขื ื ืึทื ืืขืจืืคื ืขืก ืงืขื ืคืึทืจืืึทืื, ืึทืจืืืกืืึทื ื ืื ืึทืคึผืืึทืงืืืฉืึทื, ืืื ืืขืจ ืกืขืจืืืขืจ ืืืึธืื ื ืื ืืขืจ ืืึธืื ืืืขืจ ืขืก ืื ืฆื ืจืืคื.
ืงืึธื ืืืึธืก ืคึผืจืึทืกืขืกืึทื ืึท ืงื ืขืคึผื ืืื: ืจืืคื ืึท ืกืขืจืืืขืจ ืคึผืจืึธืฆืขืืืจ ืคืื ืืขื ืงืืืขื ื ืืืขื ืึทืจืืขืื, ืจืืคื ืึท ืงืืืขื ื ืคึผืจืึธืฆืขืืืจ ืคืื ืื ืกืขืจืืืขืจ ืืืขื ื ืืฉื
ืืึธืก ืืืื ื ืึทื ืืืื ืืืจ ืืืืื ืฆื ืฉืืงื ืขืืืขืืข ืึธื ืืึธื ืคืื ืื ืกืขืจืืืขืจ ืฆื ืื ืงืืืขื ื ืึทืคึผืืึทืงืืืฉืึทื, ืืืฉื, ืึทื ืื ืืืจ ืคืื ืึท "ืืึทื ื-ืืืืคื" ืืึทืจืืื ืืื ืคืึทืจืืืง ืืื ืืขืจ ืืึทืจืืื ืงืขื ืขื ืืืื ืืืืื, ืืืจ ืืึธื ื ืื ืืึธืื ืึทืืึท ืึท ืืืคึฟื. ืืืจ ืืึธืื ืฆื ื ืืฆื ืืจืืงืก, ืืืฉื, ืคึผืืจืืึทืืืงืื ืืึทืงืืืขื ืื ืกืขืจืืืขืจ ืคึฟืื ืืขื ืงืืืขื ื ืงืึธื. ืืืขืจ ืืขื ืฆืืืึทื ื ืืึธืืื ืื ืกืืกืืขื ืืื ืืื ืืืืืง ืจืืคื, ืืื ืืืื ืืื ื ืืฉื ืงืืงื ืืืืขืจ ืขืืขืืึทื ื.
ืืื ืขืก ืืื ืืืื ืึท ื ืืื, ืืืฉื, ืืืขื ืขืก ืงืืื ืึท ืืขืืขืคืึธื ืจืืคื
ืื ืคึผืจืึธืืืงืฆืืข ืืื
ืฉืึทืคึฟื ืึท ืืขืกืืืืฉืื ื ืืขืงืึทื ืืืึทื. ืฉื ืขื, ืคืึทืจืืึธืืืขื, ืืื ืืขืจืึทื ืืื ืขืงืกืคึผืจืขืก, ืืื ืื ืคืืืืงืืื ืฆื ืคืืขืงืกืึทืืึทื ืืืื ืคึฟืึทืจ ืึทืจืืืงืืขื. ืืึทืืืจื ืืืืฃ ืื ืืขืงืึทื ืืืึทื, ืื ืกืืจืืืขื ื ืึท ืฉืืื (ืืขืกืื ืืืฉืขืจ, ืืืืืขื ืงืึทืืืก) ืคืืืกื ืืืง ืืื 1C ืึทืคึผืืึทืงืืืฉืึทื ื.
ืคึผืืึทื ืื ืกืืกืืขื ืฆื ืืืื ืืึธืจืืืึทื ืืึทืื ืกืงืึทืืึทืืืข. ืื ืื ืงืจืืกืื ื ืืึทืกืข ืืืื ืืืื ืืืืขืงื ืืืจื ืื ืงืจืืกืื ื ืื ื ืืืขืจ ืคืื ื ืึธืืื.
ืืืคึผืืขืืขื ืืึทืืืึธื
ืืืจ ืืึทืฉืืึธืกื ื ืืฉื ืฆื ืืืกืฉืืืืขื ืื ืกืขืจืืืขืจ ืืืื ืคืื SV ืืืืื ืืื ืื 1C: ืขื ืืขืจืคึผืจืืื ืคึผืืึทืืคืึธืจืืข, ืึธืืขืจ ืฆื ืื ืกืืจืืืขื ื ืขืก ืืื ืึท ืืึทืืื ืืขืจ ืคึผืจืึธืืืงื, ืื API ืคืื ืืืึธืก ืงืขื ืขื ืืืื ืืขืจืืคึฟื ืคึฟืื ืื ืงืึธื ืคืื 1C ืึทืคึผืืึทืงืืืฉืึทื ืกืึทืืืฉืึทื ื. ืืึธืก ืืื ืืขืืืขื ืืขืืื ืคึฟืึทืจ ืึท ื ืืืขืจ ืคืื ืกืืืืช, ืืขืจ ืืืืคึผื ืืืื ืขืจ ืคืื ืืืึธืก ืืื ืืขืืืขื ืึทื ืืื ืืขืืืืื ืฆื ืืึทืื ืขืก ืืขืืืขื ืฆื ืืืขืงืกื ืึทืจืืืงืืขื ืฆืืืืฉื ืคืึทืจืฉืืืขื ืข 1C ืึทืคึผืืึทืงืืืฉืึทื ื (ืคึฟืึทืจ ืืืึทืฉืคึผืื, ืฆืืืืฉื ืืึทื ืื ืืึทื ืึทืืขืืขื ื ืืื ืึทืงืึทืื ืืื ื). ืคืึทืจืฉืืืขื ืข 1C ืึทืคึผืืึทืงืืืฉืึทื ื ืงืขื ืขื ืืืืคื ืืืืฃ ืคืึทืจืฉืืืขื ืข ืืืขืจืกืืขืก ืคืื ืื 1C: ืขื ืืขืจืคึผืจืืื ืคึผืืึทืืคืึธืจืืข, ืืืื ืืืื ืืืืฃ ืคืึทืจืฉืืืขื ืข ืกืขืจืืืขืจืก, ืขืืง. ืืื ืึทืืึท ืื ืึธืื, ืื ืืืคึผืืึทืืขื ืืืืฉืึทื ืคืื SV ืืื ืึท ืืึทืืื ืืขืจ ืคึผืจืึธืืืงื ืืืื "ืืืืฃ ืื ืืืึทื" ืคืื 1C ืื ืกืืึทืืืืฉืึทื ื ืืื ืื ืึธืคึผืืืืึทื ืืืืืื ื.
ืึทืืื, ืืืจ ืืึทืฉืืึธืกื ืฆื ืืึทืื SV ืืื ืึท ืืึทืืื ืืขืจ ืคึผืจืึธืืืงื. ืืืจ ืจืขืงืึธืืขื ืืืจื ืึทื ืงืืืื ืงืึธืืคึผืึทื ืืขืก ื ืืฆื ืื CB ืกืขืจืืืขืจ ืืืึธืก ืืืจ ืืื ืกืืึทืืืจื ืืื ืืื ืืืขืจ ืืืึธืืงื (wss://1cdialog.com) ืฆื ืืืกืืืืื ืื ืึธืืืืขืจืืขื ืงืึธืก ืคึฟืึทืจืืื ืื ืืื ืืืืข ืืึทื ืืึธื ืืืจืื ื ืืื ืงืึทื ืคืืืืขืจืืืฉืึทื ืคืื ืื ืกืขืจืืืขืจ. ืืจืืืก ืงืืืืึทื ืฅ ืงืขื ืืขืคึฟืื ืขื ืขืก ืงืขืืืึทืืง ืฆื ืื ืกืืึทืืืจื ืืืืขืจ ืืืืืขื ืข CB ืกืขืจืืืขืจ ืืื ืืืืขืจ ืคืึทืกืืืึทืืื. ืืืจ ืืขืืืืื ื ืึท ืขื ืืขื ืฆืืืึทื ื ืืื ืืื ืืืขืจ ืืืึธืืงื ืกืึทืึทืก ืคึผืจืึธืืืงื
ืึทืคึผืืึทืงืืืฉืึทื
ืฆื ืคืึทืจืฉืคึผืจืืืื ืื ืืึทืกืข ืืื ืฉืืื ืืึธืืขืจืึทื ืฅ, ืืืจ ืืืขืื ืฆืขืืืืงืืขื ื ืืฉื ืืืื Java ืึทืคึผืืึทืงืืืฉืึทื, ืึธืืขืจ ืขืืืขืืข, ืืื ืึท ืืึทืกืข ืืึทืืึทื ืกืขืจ ืืื ืคืจืึธื ื ืคืื ืืื. ืืืื ืืืจ ืืึทืจืคึฟื ืฆื ืึทืจืืืขืจืคืืจื ืึท ืึธื ืืึธื ืคืื ื ืึธืืข ืฆื ื ืึธืืข, ื ืืฆื ืึทืจืืืกืืขืื / ืึทืืึธื ืืจื ืืื Hazelcast.
ืงืึธืืื ืืงืึทืฆืืข ืฆืืืืฉื ืืขื ืงืืืขื ื ืืื ืื ืกืขืจืืืขืจ ืืื ืืืจื ืืืขืืกืึธืงืงืขื. ืขืก ืืื ืืขืืื ื ืกืืืึทื ืคึฟืึทืจ ืคืึทืงืืืฉ-ืฆืืื ืกืืกืืขืืขื.
ืคืื ืื ืืขืจืืขืืืืื ืงืึทืฉ
ืืืจ ืืึธืื ืืืืกืืขืจืืืืืื ืฆืืืืฉื Redis, Hazelcast ืืื Ehcache. ืขืก ืืื 2015. Redis ืคึผืื ืงื ืืืคืจืืื ืึท ื ืืึทืข ืงื ืืื (ืฆื ื ืืึท, ืกืงืขืจื), ืขืก ืืื ืกืขื ืืื ืขื ืืื ืึท ืคึผืืึทืฅ ืคืื ืจืืกืืจืืงืฉืึทื ื. Ehcache ืืื ื ืืฉื ืืืืกื ืืื ืฆื ืึทืกืขืืืึทื ืืื ืึท ืงื ืืื (ืืขื ืคืึทื ืืงืฉืึทื ืึทืืืื ืืื ืืจืืืก ืฉืคึผืขืืขืจ). ืืืจ ืืึทืฉืืึธืกื ืฆื ืคึผืจืืืืจื ืขืก ืืื Hazelcast 3.4.
ืืึทืืขืืงืึทืกื ืืื ืคืืจืืืืื ืืื ืึท ืงื ืืื ืืืืก ืคืื ืื ืงืขืกืื. ืืื ืืืื ื ืึธืืข ืืึธืืข, ืขืก ืืื ื ืืฉื ืืืืขืจ ื ืืฆืืง ืืื ืงืขื ืขื ื ืึธืจ ืืืื ืืขืืืืื ื ืืื ืึท ืงืึทืฉ - ืขืก ืงืขื ื ืืฉื ืืืืกื ืืื ืฆื ืืึทืืคึผ ืืึทืื ืฆื ืืืกืง, ืืืื ืืืจ ืคืึทืจืืืจื ืื ืืืืื ื ืึธืืข, ืืืจ ืคืึทืจืืืจื ืื ืืึทืื. ืืืจ ืฆืขืืืืงืืขื ืขืืืขืืข ืืึทืืขืืงืึทืกืืก, ืฆืืืืฉื ืืืึธืก ืืืจ ืืึทืงืึทืคึผ ืงืจืืืืฉ ืืึทืื. ืืืจ ืืึธื ื ืื ืืึทืงืึทืคึผ ืื ืงืึทืฉ - ืืืจ ืืึธื ื ืื ืืจืึทืืื ืขืก.
ืคึฟืึทืจ ืืื ืื, Hazelcast ืืื:
- ืกืืึธืจืืืืฉ ืคืื ืืึทื ืืฆืขืจ ืกืขืฉืึทื ื. ืขืก ื ืขืื ืึท ืืึทื ื ืฆืืึทื ืฆื ืืืื ืฆื ืื ืืึทืืึทืืืืก ืคึฟืึทืจ ืึท ืกืขืกืืข ืืขืืขืจ ืืึธื, ืึทืืื ืืืจ ืฉืืขืื ืึทืืข ืื ืกืขืฉืึทื ื ืืื Hazelcast.
- ืงืึทืฉ. ืืืื ืืืจ ืืืื ืคึฟืึทืจ ืึท ืืึทื ืืฆืขืจ ืคึผืจืึธืคืื, ืืฉืขืง ืื ืงืึทืฉ. ืืขืฉืจืืื ืึท ื ืืึทืข ืึธื ืืึธื - ืฉืืขืื ืขืก ืืื ืื ืงืึทืฉ.
- ืืขืืขืก ืคึฟืึทืจ ืงืึธืืื ืืงืึทืฆืืข ืฆืืืืฉื ืึทืคึผืืึทืงืืืฉืึทื ืื ืกืืึทื ืกืื. ืืขืจ ื ืึธืืข ืืืฉืขื ืขืจืืืฅ ืึท ืืขืฉืขืขื ืืฉ ืืื ืฉืืขืื ืขืก ืืื ืื Hazelcast ืืขืืข. ืื ืืขืจืข ืึทืคึผืืึทืงืืืฉืึทื ื ืึธืืื ืึทืืึธื ืืจื ืฆื ืืขื ืืขืืข ืืึทืงืืืขื ืืื ืคึผืจืึธืฆืขืก ืื ืืขืฉืขืขื ืืฉ.
- ืงื ืืื ืืึทืงืก. ืคึฟืึทืจ ืืืึทืฉืคึผืื, ืืืจ ืืึทืื ืึท ืืืกืงืืกืืข ื ืืฆื ืึท ืืื ืฆืืง ืฉืืืกื (ืืืื ืืืกืงืืกืืข ืืื ืื 1C ืืึทืืึทืืืืก):
conversationKeyChecker.check("ะะะะะะะะะะะะ");
doInClusterLock("ะะะะะะะะะะะะ", () -> {
conversationKeyChecker.check("ะะะะะะะะะะะะ");
createChannel("ะะะะะะะะะะะะ");
});
ืืืจ ืงืึธื ืืจืึธืืืจื ืึทื ืขืก ืืื ืงืืื ืงืึทื ืึทื. ืืืจ ืืขื ืืืขื ืืขื ืฉืืึธืก, ืึธืคึผืืขืฉืืขืื ืขืก ืืืืืขืจ, ืืื ืืืฉืืคื ืขืก. ืืืื ืืืจ ืืึธื ื ืื ืงืึธื ืืจืึธืืืจื ืืขื ืฉืืึธืก ื ืึธื ืืขื ืืืขื ืื ืฉืืึธืก, ืขืก ืืื ืึท ืืขืืขืื ืืืึทื ืึทื ืื ืื ืืขืจ ืคืึธืืขื ืืืื ืึธืคึผืืขืฉืืขืื ืืื ืืขื ืืึธืืขื ื ืืื ืืืขื ืืืฆื ืคึผืจืืืืจื ืฆื ืฉืึทืคึฟื ืื ืืขืืืข ืืืกืงืืกืืข - ืึธืืขืจ ืขืก ืืื ืฉืืื. ืืืจ ืงืขื ืขื ื ืืฉื ืฉืืึธืก ื ืืฆื ืกืื ืืงืจืึทื ืืืื ืึธืืขืจ ืจืขืืืืขืจ ืืืฉืึทืืืึท ืืึทืง. ืืืจื ืื ืืึทืืึทืืืืก - ืขืก ืืื ืคึผืึทืืขืืขื, ืืื ืขืก ืืื ืึท ืฉืึธื ืคึฟืึทืจ ืื ืืึทืืึทืืืืก; ืืืจื Hazelcast - ืืึธืก ืืื ืืืึธืก ืืืจ ืืึทืจืคึฟื.
ืืฉืึธืึธืกืื ื ืึท DBMS
ืืืจ ืืึธืื ืืจืืื ืืื ืืขืจืึธืื ืืขืจืคืึทืจืื ื ืืื ืืจืืขืื ืืื PostgreSQL ืืื ืืืืึทืจืืขืื ืืื ืื ืืขืืืขืืึธืคึผืขืจืก ืคืื ืืขื DBMS.
ืขืก ืืื ื ืืฉื ืืจืื ื ืืื ืึท PostgreSQL ืงื ืืื - ืขืก ืืื
ืืืื ืืืจ ืืึทืจืคึฟื ืฆื ืืืึธื ืึท ืจืืืืืฉืึทื ืึทื ืืึทืืึทืืืืก, ืืึธืก ืืืื
ืืขืจ ืขืจืฉืืขืจ ืืืขืจืกืืข ืคืื โโืืื ืืืขืจ ืฉืึทืจืืื ื ืืื ืื ืืขื ืืืขื ืื ืคืืืืงืืื ืฆื ืคืึทืจืฉืคึผืจืืืื ืืขืืขืจ ืคืื ืื ืืืฉื ืคืื ืืื ืืืขืจ ืึทืคึผืืึทืงืืืฉืึทื ืืืืฃ ืคืึทืจืฉืืืขื ืข ืกืขืจืืืขืจืก ืืื ืคืึทืจืฉืืืขื ืข ืคึผืจืึทืคึผืึธืจืฉืึทื ื. ืขืก ืืขื ืขื ืึท ืคึผืืึทืฅ ืคืื ืึทืจืืืงืืขื ืืืืฃ ืกืขืจืืืขืจ ื - ืืืืข, ืืึธืื ืืื ืื ืืึทื ืืืื ืคืื ืืขื ืืืฉ ืฆื ืกืขืจืืืขืจ ื. ืืขืจ ืืึทืฉืืืก ืคืฉืื ืกืงืจืืื ืืืขืื ืฆื ืคืจื ืึทืคึผืืึทืืึทืืืืฉืึทื, ืึทืืื ืืืจ ืืึทืฉืืึธืกื ืฆื ืืึทืืจืขื ืขืฆื ืืื ืฆื ืึท ืืืืื-ืืขื ืึทื ื ืฆืืืึทื ื.
ืืืจ ืงืขื ืขื ืืืืขื ืขื ืืืขืื ืืึทืืื-ืืึธืงืึทืืึธืจ, ืืืฉื, ืืืืฃ ืืขื ืืืขืืืืืื
SV ืืื ืื ืงืึทื ืกืขืคึผืก ืคืื ืึทืคึผืืึทืงืืืฉืึทื ืืื ืึทืืึธื ืขื ื. ืึท ืึทืคึผืืึทืงืืืฉืึทื ืืื ืึท ืกืคึผืขืฆืืคืืฉ ืืึทื ืืึธื ืืืจืื ื ืคืื ืึท ืืขืฉืขืคื ืึทืคึผืืึทืงืืืฉืึทื, ืึทืืึท ืืื ERP ืึธืืขืจ ืึทืงืึทืื ืืื ื, ืืื ืืืึทื ื ืืฆืขืจืก ืืื ืืขืฉืขืคื ืืึทืื. ื ืึทืืึธื ืขื ื ืืื ืึทื ืึธืจืืึทื ืืืึทืฆืืข ืึธืืขืจ ืืืื ืืืืฃ ืืืขืืขื ืก ืืืืึทืฃ ืื ืึทืคึผืืึทืงืืืฉืึทื ืืื ืจืขืืืกืืจืืจื ืืื ืื SV ืกืขืจืืืขืจ. ื ืึทืืึธื ืขื ื ืงืขื ืขื ืืึธืื ืขืืืขืืข ืึทืคึผืืึทืงืืืฉืึทื ื ืจืขืืืกืืจืืจื, ืืื ืื ืึทืคึผืืึทืงืืืฉืึทื ื ืงืขื ืขื ืืืขืงืกื ืึทืจืืืงืืขื ืืื ืืขืืขืจ ืื ืืขืจืขืจ. ืืขืจ ืึทืืึธื ืขื ื ืืื ืืขืืืืจื ืึท ืืึธืงืึทืืึธืจ ืืื ืืื ืืืขืจ ืกืืกืืขื. ืึทืจืืืงืืขื ืคืื ืขืืืขืืข ืืืื ืขื ืื ืงืขื ืขื ืืืื ืืืื ืืื ืืืื ืคืืืืฉ ืืึทืืึทืืืืก; ืืืื ืืืจ ืืขื ืึทื ืึท ืึทืืึธื ืขื ื ืืื ืื ืืขืืืืื ืฆื ืืืฉืขื ืขืจืืื ืึท ืคึผืืึทืฅ ืคืื ืคืึทืจืงืขืจ, ืืืจ ืืึทื ืขืก ืฆื ืึท ืืึทืืื ืืขืจ ืคืืืืฉ ืืึทืืึทืืืืก (ืึธืืขืจ ืืคืืื ืึท ืืึทืืื ืืขืจ ืืึทืืึทืืืืก ืกืขืจืืืขืจ).
ืืืจ ืืึธืื ืึท ืืืืคึผื ืืึทืืึทืืืืก ืืื ืึท ืจืืืื ื ืืืฉ ืืื ืกืืึธืจื ืืื ืืื ืคึฟืึธืจืืึทืฆืืข ืืืขืื ืื ืึธืจื ืคืื ืึทืืข ืึทืืึธื ืขื ื ืืึทืืึทืืืืกืื.
ืฆื ืคืึทืจืืืึทืื ืื ืืืืคึผื ืืึทืืึทืืืืก ืคืื ืึท ืืึทืืึทืื ืขืง, ืืืจ ืืึทืืื ืื ืจืืืื ื ืืืฉ (ืืื ืื ืืขืจืข ืึธืคื ื ืืืืืง ืืึทืื) ืืื ืึท ืงืึทืฉ.
ืืืื ืื ืืึทืืึทืืืืก ืคืื ืื ืึทืืึธื ืขื ื ืกืืึทืจืฅ ืฆื ืคึผืึทืืขืืขื ืึทืจืึธืคึผ, ืืืจ ืืืขืื ืฉื ืืึทืื ืขืก ืืื ืคึผืึทืจืืืฉืึทื ื ืื. ืืืืฃ ืื ืืขืจืข ืคึผืจืึทืืืฉืขืงืก ืืืจ ื ืืฆื
ืืื ื ืืืืื ื ืืึทื ืืฆืขืจ ืึทืจืืืงืืขื ืืื ืฉืืขืื, ืืืจ ืืึทืืื ืืื ืืืขืจ ืืึทืืึทืืืืกืื ืืื ืจืขืคึผืืึทืงืึทื. ืื ืงืึธืืืื ืึทืฆืืข ืคืื โโโโืกืื ืืฉืจืึธื ืึธืืก ืืื ืืืกืื ืืงืจืึทื ืึทืก ืจืขืคึผืืึทืงืึทื ืึทืืึทืื ืืืจ ืฆื ืคืึทืจืืืืขืจื ืืื ืืื ืคืึทื ืคืื ืึธื ืืืขืจ ืคืื ืื ืืืืคึผื ืืึทืืึทืืืืก. ืึธื ืืึธื ืึธื ืืืขืจ ืืืขื ืคึผืึทืกืืจื ืืืืื ืืืื ืื ืขืจืฉืืืง ืืึทืืึทืืืืก ืืื ืืืึทื ืกืื ืืฉืจืึธื ืึธืืก ืจืขืคึผืืืงืข ืืืจืืคืึทื ืกืืืืึทืืืืื ืืึทืกืื.
ืืืื ืึท ืกืื ืืฉืจืึธื ืึธืืก ืจืขืคึผืืืงืข ืืื ืคืึทืจืคืึทืื, ืื ืืืกืื ืืงืจืึทื ืึทืก ืจืขืคึผืืืงืข ืืืขืจื ืกืื ืืฉืจืึธื ืึธืืก.
ืืืื ืื ืืืืคึผื ืืึทืืึทืืืืก ืืื ืคืึทืจืคืึทืื, ืื ืกืื ืืฉืจืึธื ืึธืืก ืจืขืคึผืืืงืข ืืืขืจื ืื ืืืืคึผื ืืึทืืึทืืืืก, ืืื ืื ืืืกืื ืืงืจืึทื ืึทืก ืจืขืคึผืืืงืข ืืืขืจื ืึท ืกืื ืืฉืจืึธื ืึธืืก ืจืขืคึผืืืงืข.
Elasticsearch ืคึฟืึทืจ ืืืื
ืืื ื, ืฆืืืืฉื ืื ืืขืจืข ืืืื, SV ืืื ืืืื ืึท ืฉืืื, ืขืก ืจืืงืืืืืขืจื ืึท ืฉื ืขื, ืืึทืงืืืขื ืืื ืคืืขืงืกืึทืืึทื ืืืื, ืืขื ืืืขื ืืื ืืฉืืื ืืึธืจืคืึธืืึธืื, ื ืืฆื ืืืคึผืื ืงืืืขื ืฉืืืขืืขืืขื. ืืืจ ืืึทืฉืืึธืกื ื ืืฉื ืฆื ืจืืื ืืืขื ื ืื ืจืึธื ืืื ื ืืฆื ืื ืคืจืื ืืืื ืืึธืืึธืจ Elasticsearch, ืืืฉืืคื ืืืืืจื ืืืืฃ ืืขืจ ืืืืืืึธืืขืง
ืืืืฃ ืืืืืื ืืืจ ืืขืคึฟืื ืขื
ืืื ืืขืจ ืืืึธืจืฆื ืคืื ืืขื ืืืึธืจื "ืืงืกื" ืืืขื ืืืื ืืืื ืืคืืขืืื. ืืขืจ ืฆืืืึทื ื ืึทืืึทืื ืืืจ ืฆื ืืืื ืืื ืื ืึธื ืืืื, ืืื ืื ืืืื ืืื ืืื ืื ืกืืฃ ืคืื ืื ืืืึธืจื.
ืื ืืจืืืก ืืืื
ืืืืขืจืืืจื ืื ืืืื ืคืื ืื ืึธื ืืืื ืคืื ืืขื ืึทืจืืืงื, ืึธืืขืจ ืืื ืืขืจืงืืขืจืื ืืขื:
- ืืึทืืึทื ืกืขืจ ืืงืกืคึผืึธืืื ืืืืฃ ืื ืืื ืืขืจื ืขื; ืืืจ ืืึธืื nginx, ืขืก ืงืขื ืืืื ืงืืื.
- ืืืฉืึทืืืึท ืึทืคึผืืึทืงืืืฉืึทื ืื ืกืืึทื ืกืื ืืืขืจืืขืื ืืื ืืขืืขืจ ืื ืืขืจืข ืืืจื ืืึทืืขืืงืึทืกื.
- ืฆื ืึทืจืืขืื ืืื ืึท ืืืขื ืืึธืืขื ืืืจ ื ืืฆื
ื ืขืืื . - ืื Java ืึทืคึผืืึทืงืืืฉืึทื ืืื ืืขืฉืจืืื ืืื Java 8 ืืื ืืืฉืืืื ืคืื ืืึทื ืืึทืื
OSGi . ืื ืคึผืืึทื ื ืึทืจืืึทื ื ืขืืขื ืืืืืจืืืฉืึทื ืฆื Java 10 ืืื ืืืขืจืืึทื ื ืฆื ืืึทืืืฉืืื.
ืึทื ืืืืืงืืื ื ืืื ืืขืกืืื ื
ืืื ืืขื ืคึผืจืึธืฆืขืก ืคืื ืืขืืืขืืึธืคึผืื ื ืืื ืืขืกืืื ื ืื SV, ืืืจ ืืขืคึฟืื ืขื ืึท ื ืืืขืจ ืคืื ืืฉืืงืึทืืืข ืคึฟืขืึดืงืืืื ืคืื ืื ืคึผืจืึธืืืงืื ืืืึธืก ืืืจ ื ืืฆื.
ืืึทืกืข ืืขืกืืื ื ืืื ืืึผืจืื ืืืงืก
ืื ืืขืืืื ื ืคืื ืืขืืขืจ SV ืืขืืืื ื ืื ืืืึทืืืื ืืึทืกืข ืืขืกืืื ื. ืขืก ืืื ืืฆืืื ืืืขื:
- ืื ืคึผืจืึธืืข ืืขืืจืืขื ืคึฟืึทืจ ืขืืืขืืข ืืขื ืืื ืขืก ืืขื ืขื ืืขืืืขื ืงืืื ืกืขืจืืืืก ืคืืืืืขืจื
- ืขื ืืคืขืจ ืฆืืื ืคึฟืึทืจ ืฉืืืกื ืึทืคึผืขืจืืืฉืึทื ื ืืื ื ืืฉื ืืงืกืื ืึท ืืึทืงืืืขื ืฉืืืขื
- ืคืึธืจืฉืืขืืื ื ืืืืืจืืขืจืืืฉืึทื ืงืึทืืคึผืขืจื ืฆื ืื ืคืจืืขืจืืืงืข ืืืขืจืกืืข ืืื ื ืื ืืขืจ ืืื 10%
ืืืจ ืคึผืืึธืืืืจื ืื ืคึผืจืึธืืข ืืึทืืึทืืืืก ืืื ืืึทืื - ืฆื ืืึธื ืืึธืก, ืืืจ ืืึทืงืืืขื ืืื ืคึฟืึธืจืืึทืฆืืข ืืืขืื ืื ืืขืจืกื ืึทืงืืืื ืึทืืึธื ืขื ื ืคืื ืื ืคึผืจืึธืืืงืฆืืข ืกืขืจืืืขืจ, ืืขืจื ืื ื ืืืขืจื ืืื 5 (ืื ื ืืืขืจ ืคืื ืึทืจืืืงืืขื, ืืืกืงืืกืืขืก, ื ืืฆืขืจืก) ืืื ืคึผืจืืืืจื ืขืก ืึทืืื.
ืืืจ ืืืจืืคืืจื ืืึทืกืข ืืขืกืืื ื ืคืื ืื ืื ืืขืจืึทืงืฉืึทื ืกืืกืืขื ืืื ืืจืื ืงืึทื ืคืืืืขืจืืืฉืึทื ื:
- ืืจืืง ืคึผืจืืืืจื
- ืืืืื ืงืึทื ืขืงืฉืึทื ื
- ืึทืืึธื ืขื ื ืจืขืืืกืืจืึทืฆืืข
ืืขืฉืึทืก ืื ืืจืืง ืคึผืจืืืืจื, ืืืจ ืงืึทืืขืจ ืขืืืขืืข ืืื ืืขืจื ืคึฟืขืืขื, ืืื ืืื ืืึธืื ืื ืกืืกืืขื ืึธื ืกืืึธืคึผืคึผืื ื: ืฉืจืืืื ืึทืจืืืงืืขื, ืฉืืคื ืืืกืงืืกืืขืก, ืืึทืงืืืขื ืึท ืจืฉืืื ืคืื ืึทืจืืืงืืขื. ืืืจ ืกืืืืืืจื ืื ืึทืงืฉืึทื ื ืคืื ืคึผืจืึธืกื ื ืืฆืขืจืก (ืืึทืงืืืขื ืึท ืจืฉืืื ืคืื ืืืื ืึทื ืจืื ืึทืจืืืงืืขื, ืฉืจืืึทืื ืฆื ืขืืขืฆืขืจ) ืืื ืืืืืืืืืจื ืกืึทืืืฉืึทื ื (ืืืขืจืฉืืงื ืึท ืคึผืขืงื ืคืื ืึท ืึทื ืืขืจืฉ ืงืึทื ืคืืืืขืจืืืฉืึทื, ืคึผืจืึธืฆืขืก ืึท ืคืืื ืง).
ืคึฟืึทืจ ืืืึทืฉืคึผืื, ืืึธืก ืืื ืืืึธืก ืืืื ืคืื ืื ืืจืืง ืคึผืจืืืืจื ืงืืงื ืืื:
- ืืึทื ืืฆืขืจ ืืึธืืก ืืื
- ืจืืงืืืขืก ืืืื ืึทื ืจืื ืืืกืงืืกืืขืก
- 50% ืืกืชึผืื ืฆื ืืืืขื ืขื ืึทืจืืืงืืขื
- 50% ืืกืชึผืื ืฆื ืืขืงืกื
- ืืืืึทืืขืจ ืืึทื ืืฆืขืจ:
- ืืื ืึท 20% ืืขืืขืื ืืืึทื ืฆื ืฉืึทืคึฟื ืึท ื ืืึทืข ืืืกืงืืกืืข
- ืจืึทื ืืึทืืื ืกืึทืืขืงืฅ ืงืืื ืคืื ืืืึทื ืืืกืงืืกืืขืก
- ืืืื ืืื ืขืืืืื ืื
- ืจืืงืืืขืก ืึทืจืืืงืืขื, ืืึทื ืืฆืขืจ ืคึผืจืึธืืคืืืื
- ืงืจืืืืฅ ืคืื ืฃ ืึทืจืืืงืืขื ืืืขื ืื ืฆื ืืจืึทืค ื ืืฆืขืจืก ืคืื ืืขื ืืืกืงืืกืืข
- ืืืขืืขืจ ืืืกืงืืกืืข
- ืจืืคึผืืฅ 20 ืืื
- ืืึธืืก ืืืืก, ืืืื ืฆืืจืืง ืฆื ืื ืึธื ืืืื ืคืื ืื ืฉืจืืคื
- ื ืืฉืึทืืืึธื ืืืื ืืจืืื ืื ืกืืกืืขื (ืขืืืึทืืืืฅ ืืขืกืืืืฉืื ื ืคืื ืึทืคึผืืึทืงืืืฉืึทื ืงืึธื)
- ืืื ืึท 50% ืืขืืขืื ืืืื ืฆื ืฉืึทืคึฟื ืึท ื ืืึทืข ืงืึทื ืึทื ืคึฟืึทืจ ืืึทืื ืืืขืงืกื (ืกืคึผืขืฆืืขื ืืืกืงืืกืืข)
- 50% ืืกืชึผืื ืฆื ืฉืจืืึทืื ืึท ืึธื ืืึธื ืฆื ืงืืื ืคืื ืื ืืืืืกืืื ื ืืฉืึทื ืึทืื
ืื "ืืืืื ืงืึทื ืขืงืฉืึทื ื" ืกืฆืขื ืึทืจ ืืื ืืจืืืก ืคึฟืึทืจ ืึท ืกืืื. ืขืก ืืื ืึท ืกืืืืึทืฆืืข: ืืืืขืจื ืืึธืื ืงืึธื ื ืขืงืืขื ืื ืกืืกืืขื, ืึธืืขืจ ืืึธืื ื ืืฉื ื ืึธื ืืึทืงืืืขื ืื ืืืึทืืืื. ืืขืืขืจ ืืึทื ืืฆืขืจ ืืืขื ืื ืืืืฃ ืื ืงืึธืืคึผืืืืขืจ ืืืึท 09:00 ืืื ืืขืจ ืืึธืจืื, ืืจืื ืื ืึท ืงืฉืจ ืฆื ืื ืกืขืจืืืขืจ ืืื ืืืืืื ืฉืืื. ืื ืืืื ืืขื ืขื ืืขืคืขืจืืขื, ืขืก ืืขื ืขื ืคืืืข ืคืื โโโโืืื - ืื ืืืืื ืคึผืึทืงืึทืืืฉืึทื ืืื ืืึธืื ืืขื ืขื PING / PONG, ืึธืืขืจ ืืื ืืึทืืื ืื ืงืฉืจ ืฆื ืื ืกืขืจืืืขืจ (ืืื ืงืขื ืขื ื ืืฉื ืืึทืืื ืขืก ืึทืจืืืฃ - ืืืึธืก ืืืื ืขืก ืืื ืึท ื ืืึทืข ืึธื ืืึธื). ืืขืจ ืคึผืจืึธืืข ืจืขืคึผืจืึธืืืฆืืจื ืึท ืกืืืืึทืฆืืข ืืื ืึท ืืจืืืก ื ืืืขืจ ืคืื ืึทืืึท ื ืืฆืขืจืก ืคึผืจืืืืจื ืฆื ืงืืึธืฅ ืืื ืฆื ืื ืกืืกืืขื ืืื ืึท ืืึทืื ืฉืขื. ืขืก ืืื ืขื ืืขื ืฆื ืึท ืืจืืง ืคึผืจืืืืจื, ืึธืืขืจ ืืืึทื ืคืึธืงืืก ืืื ืคึผืื ืงื ืืืืฃ ืืขื ืขืจืฉืืขืจ ืึทืจืืึทื ืฉืจืืึทื - ืึทืืื ืึทื ืขืก ืืขื ืขื ืงืืื ืคืืืืืขืจื (ืึท ืืขื ืืฉ ืืื ื ืืฉื ื ืืฆื ืื ืกืืกืืขื, ืืื ืขืก ืืื ืฉืืื ืึทืจืึธืคึผ - ืขืก ืืื ืฉืืืขืจ ืฆื ืืจืึทืืื ืคืื ืขืคึผืขืก ืขืจืืขืจ).
ืื ืึทืืึธื ืขื ื ืจืขืืืกืืจืึทืฆืืข ืฉืจืืคื ืกืืึทืจืฅ ืคืื ืืขืจ ืขืจืฉืืขืจ ืงืึทืืขืจ. ืืืจ ืืึธืื ืืืจืืืขืงืึธืื ืึท ืืจืืง ืคึผืจืึธืืข ืืื ืืขืืืขื ืืืืขืจ ืึทื ืื ืกืืกืืขื ืืื ื ืืฉื ืคึผืึทืืขืืขื ืืขืฉืึทืก ืงืึธืจืขืกืคึผืึธื ืืขื ืฅ. ืืืขืจ ืืืืขืจื ืืขืงืืืขื ืืื ืื ืจืขืืืกืืจืึทืฆืืข ืื ืืขืืืืื ืฆื ืคืึทืจืืึธืื ืจืขืื ืฆื ืึท ืืืืืึทืื. ืืืขื ืจืขืืืฉืืกืืขืจืื ื ืืืจ ืืขืืืืื ื
ืืืจ ื ืืฆื ืืื ืึท ืืึทืกืข ืืขื ืขืจืึทืืึธืจ
ืื ืืืื ืืืจ ืืืฉืืืกื ืื ืฆืืืืืื.
ืึผืืขื ืืืืื ื ืึธื ืกืืึทืจืืื ื ืขืจื ืกื ืืขืกืืื ื, ืืืจ ืืืกืงืึทืืืขืจื ืึทื JMeter ืื ืืขืืืืื ืฆื ืจืื ืขื ืืึผืจืื.
ืืขืจ ืคึผืืืืื ืืื ืึท ืืึทืืื ืืขืจ ืืจืืืก ืืขืฉืืืืข; ืืื 176 ืฉืืขืจื, ืขืก ืืื 132 ืคืึธืจืงืก ืืืืฃ ืืืืืื. ืืขืจ ืืืืจ ืืื ืืื ื ืืฉื ืืืืื ืืขื ืฆื ืขืก ืืื ื 2015 (ืืืจ ืืขื ืืืขื ืขืก ืืื 2015, ืืขืืึธืื ืขืก ืืื ื ืืฉื ืืึทืคึผื ืกืึทืกืคึผืืฉืึทื ื), ืขืืืขืืข ืืืืืื ืืฉืื ืืืขืื ืืึผืจืื ืืืงืก, 7 ืึทื ืงืืึธืืื ืฆืืขื ืจืืงืืืขืก.
ืืืื ืืืจ ืืึทืฉืืืกื ืฆื ืืืจืืคืืจื ืืึทืกืข ืืขืกืืื ื ืืื ืืขื ืคึผืืืืื, ืืืืข ืืึทืฆืึธืื ืืคืืขืจืงืืึทืืงืืึทื ืฆื ืื ืคืืืืขื ืืข ืืืกืงืืกืืขืก:
- ืืื ืึท ืืึทืืื-ืืจืขืืื ืกืืืืืืข, ืึท ืจืขืืืืขืจ ืืื ืงืขืืืืกื ืืื ืืขื ืืฆื, ืืื ืืขืจ ืจืขืืืืืึทื ืืื ืืขืืืขื
ื ืคึผืข ืืื ืจืื ืืืืข. ืืขื ืงืขื ืขื ืืืื ืกืึทืืืื ืึธืืขืจ ืืืจื ืกืืืืืฉืื ื ืฆื ConcurrentLinkedDeque ืึธืืขืจ ืืืจื ืกืื ืืงืจืึทื ืืืื ืืืึทืงืก. ืืืจ ืืืืกืืขืจืืืืืื ืืขืจ ืขืจืฉืืขืจ ืึธืคึผืฆืืข ืคึฟืึทืจ ืืื (https://github.com/maciejzaleski/JMeter-WebSocketSampler/issues/43 ). - ืืึผืจืื ืจืื ืขื; ืืืขื ืืืกืงืึทื ืขืงืืื ื, ืงืฉืจ ืืื ืคึฟืึธืจืืึทืฆืืข ืืื ื ืืฉื ืืืืกืืขืืขืงื (
https://github.com/maciejzaleski/JMeter-WebSocketSampler/issues/44 ). - ืืื ืกืืจืืืื ื ืืึธืืข (ืืืขื ืื ืืืขืืกืึธืงืงืขื ืืื ื ืืฉื ืคืืจืืืื ืืื ืื ืกืืฃ ืคืื ืื ืืืกืืขืจ, ืึธืืขืจ ืืื ืืขื ืืฆื ืฉืคึผืขืืขืจ ืืื ืืขื ืคึผืืึทื), ืขื ืืคืขืจ ืคึผืึทืืขืจื ื ืืึธื ื ืื ืึทืจืืขื (
https://github.com/maciejzaleski/JMeter-WebSocketSampler/issues/19 ).
ืืึธืก ืืื ืืืื ืขืจ ืคืื ืื ืืืืฃ ืืืืืื. ืืืึธืก ืืืจ ืืึธืื ืืขืืื:
- ืืึธืื ืืขื ืืืขื
ืืึธืคึผื ืขืืืจื ืงืึธืืึทื (@elyrank) - ืขืก ืคืืงืกืื ืคึผืจืึธืืืขืืก 1 ืืื 3 - ืกืึทืืืื ืคึผืจืึธืืืขื 2
- ืืขืจืืืึทื ืืืงื ืืืฉืขืื ืคืื 9.2.14 ืฆื 9.3.12
- ืืื ืืขืืืืงืื SimpleDateFormat ืืื ThreadLocal; SimpleDateFormat ืืื ื ืืฉื ืคืึธืืขื-ืืืืขืจ, ืืืึธืก ืืขืคืืจื ืฆื NPE ืืื ืจืื ืืืืข
- ืคืึทืจืคืขืกืืืงื ืื ืื ืืขืจ ืืึผืจืื ืจืื ืขื (ืื ืงืฉืจ ืืื ืืขืืืขื ืคืึทืืฉ ืคืืจืืืื ืืืขื ืืืกืงืึทื ืขืงืืื)
ืืื ื ืึธื ืขืก ืคืืึธืื!
ืืขืจ ืืึผืจืื ืืึธื ืืื ืึธื ืืขืืืืื ื ืืฉื ืืื ืืืื ืืึธื, ื ืึธืจ ืืื ืฆืืืื. ืขืก ืืื ืืขืืึทืืจืข ืงืืื ืฆืืื ืืื ืงืก, ืึทืืื ืืืจ ืืึทืฉืืึธืกื ืฆื ืงืึทืืขืจ ืืืืื ืืงืขืจืข ืคึฟืขืืขื, ืึธืืขืจ ืืืืฃ ืคืืจ ืืืขื ืื. ืืึธืก ืืึธื ืืึธืื ืืขืืืขื ืืขื ืื ืคึฟืึทืจ ืืืึท ืืื ืืกืืขืจ ืึท ืืืึธื.
ืฆืืืื ืืขื ืืขื ืขื ืืืจืืืขืืื ืืขื ...
ืืืฆื Hazelcast ืืื ืคืืืกื ืืืง ืืืืก ืคืื ืืึผืจืื. ืื ืืึธืืก ืืึธืื ืืขืืืืื ืึทื ื ืึธื ืึท ืคึผืึธืจ ืคืื ืืขื ืคืื ืืขืกืืื ื, ืืึทืืขืืงืึทืกื ืื ืืขืืืืื ืฆื ืืึทืงืืึธืื ืืื ืืืขืื ืึท ืคืขืื ืคืื ืืึผืจืื, ืืื ื ืึธื ืขืืืขืืข ืืึธื ืื ืงื ืืื ืืื ืฆืขืคืึทืื, ืืื ืื ื ืึธืืื ืคืึธืจืืขืฆื ืฆื ืฉืืึทืจืื ืืืื ืขืจ ืืืจื ืืืื ืขืจ. ืืืจ ืงืึธื ื ืขืงืืขื JVisualVM ืฆื ืืึทืืขืืงืึทืกื ืืื ืืขืืขื ืึท "ืจืืืืื ื ืืขืืขื" - ืขืก ืงืขืกืืืืขืจ ืืขืจืืคื ืื GC, ืึธืืขืจ ืงืขื ื ืืฉื ืืืกืืขืงื ืื ืืึผืจืื.
ืขืก ืคืืจืงืขืจื ืืืืก ืึทื ืืื Hazelcast 3.4, ืืืขื ืืืืืืื ื ืึท ืืึทืคึผืข / ืืืืืืืึทืคึผ (map.destroy()), ืืึผืจืื ืืื ื ืืฉื ืืึธืจ ืคืจืื:
ืืขืจ ืืฉืืง ืืื ืืืฆื ืคืึทืจืคืขืกืืืงื ืืื 3.5, ืึธืืขืจ ืขืก ืืื ืืขืืืขื ืึท ืคึผืจืึธืืืขื ืฆืืจืืง. ืืืจ ืืึธืื ืืืฉืืคื ื ืืึทืข ืืืืืืืึทืคึผืก ืืื ืืื ืึทืืืฉ ื ืขืืขื ืืื ืืืืกืืขืืขืงื ืืืื ืืื ืืืขืจ ืืึธืืืง. ืืขืจ ืงืึธื ืืื ืขืคึผืขืก ืืื ืืึธืก:
public void join(Authentication auth, String sub) {
MultiMap<UUID, Authentication> sessions = instance.getMultiMap(sub);
sessions.put(auth.getUserId(), auth);
}
public void leave(Authentication auth, String sub) {
MultiMap<UUID, Authentication> sessions = instance.getMultiMap(sub);
sessions.remove(auth.getUserId(), auth);
if (sessions.size() == 0) {
sessions.destroy();
}
}
ืจืืคื:
service.join(auth1, "ะะะะซะ_ะกะะะะฉะะะะฏ_ะ_ะะะกะฃะะะะะะ_UUID1");
service.join(auth2, "ะะะะซะ_ะกะะะะฉะะะะฏ_ะ_ะะะกะฃะะะะะะ_UUID1");
multiMap ืืื ืืืฉืืคื ืคึฟืึทืจ ืืขืืขืจ ืึทืืึธื ืขืืขื ื ืืื ืืืืกืืขืืขืงื ืืืขื ืขืก ืืื ื ืื ืืืจืฃ. ืืืจ ืืึทืฉืืึธืกื ืึทื ืืืจ ืืืขืื ืึธื ืืืืื ืืึทืคึผืข , ืืขืจ ืฉืืืกื ืืืขื ืืืื ืื ื ืึธืืขื ืคืื ืื ืึทืืึธื ืขืืขื ื, ืืื ืื ืืืึทืืืขืก ืืืขื ืืืื ืกืขืกืืข ืืืขื ืืืคืืขืจืก (ืคืื ืืืึธืก ืืืจ ืงืขื ืขื ืืึทืงืืืขื ืืึทื ืืฆืขืจ ืืืขื ืืืคืืขืจืก, ืืืื ื ืืืืืง).
public void join(Authentication auth, String sub) {
addValueToMap(sub, auth.getSessionId());
}
public void leave(Authentication auth, String sub) {
removeValueFromMap(sub, auth.getSessionId());
}
ืื ืืฉืึทืจืฅ ืืึธืื ืืืคึผืจืืืื.
ืืืึธืก ืึทื ืืขืจืฉ ืืึธืื ืืืจ ืืขืืขืจื ื ืืืขืื ืืึทืกืข ืืขืกืืื ื?
- JSR223 ืืึทืจืฃ ืืืื ืืขืฉืจืืื ืืื ืืจืืืื ืืื ืึทืจืืึทื ื ืขืืขื ืืึทืืืื ื ืงืึทืฉ - ืขืก ืืื ืคืื ืคืึทืกืืขืจ.
ืจืื ื . - Jmeter-Plugins ืืจืึทืคืก ืืขื ืขื ืืจืื ืืขืจ ืฆื ืคึฟืึทืจืฉืืืื ืืื ื ืึธืจืืึทื.
ืจืื ื .
ืืืขืื ืืื ืืืขืจ ืืขืจืคืึทืจืื ื ืืื Hazelcast
Hazelcast ืืื ืืขืืืขื ืึท ื ืืึทืข ืคึผืจืึธืืืงื ืคึฟืึทืจ ืืื ืื, ืืืจ ืกืืึทืจืืขื ืืจืืขืื ืืื ืขืก ืคึฟืื ืืืขืจืกืืข 3.4.1, ืืืฆื ืืื ืืืขืจ ืคึผืจืึธืืืงืฆืืข ืกืขืจืืืขืจ ืืื ืคืืืกื ืืืง ืืืขืจืกืืข 3.9.2 (ืืื ืืขืจ ืฆืืื ืคืื ืฉืจืืืื, ืื ืืขืฆืืข ืืืขืจืกืืข ืคืื โโโโHazelcast ืืื 3.10).
ID ืืืจ
ืืืจ ืื ืืขืืืืื ืืื ืื ืืึทืืืฉืขืจ ืืืืขื ืืืคืืฆืืจื. ืืื ืก ืืืึทืืืฉืึทื ืึทื ืืืจ ืืึทืจืคึฟื ืื ืื ืืขืจ ืืึทื ื ืคึฟืึทืจ ืึท ื ืืึท ืขื ืืืื. ืกืืงืืืึทื ืก ืืื ืื ืืึทืืึทืืืืก ืืื ื ืืฉื ืคึผืึทืกืืง, ืื ืืืฉื ืืขื ืขื ืื ืืืึทืืืื ืืื ืฉืึทืจืืื ื - ืขืก ืืืจื ืก ืืืืก ืึทื ืขืก ืืื ืึท ืึธื ืืึธื ID=1 ืืื DB1 ืืื ืึท ืึธื ืืึธื ID=1 ืืื DB2, ืืืจ ืงืขื ืขื ื ืืฉื ืฉืืขืื ืืขื ID ืืื Elasticsearch, ืืื ืืืื ืืื Hazelcast , ืึธืืขืจ ืื ืขืจืืกื ืืึทื ืืื ืืืื ืืืจ ืืืืื ืฆื ืคืึทืจืืื ืื ืื ืืึทืื ืคืื ืฆืืืื ืืึทืืึทืืืืกืื ืืื ืืืื (ืืืฉื, ืืึทืฉืืืกื ืึทื ืืืื ืืึทืืึทืืืืก ืืื ืืขื ืื ืคึฟืึทืจ ืื ืืืื ืขื ืื). ืืืจ ืงืขื ื ืืืืื ืขืืืขืืข AtomicLongs ืฆื Hazelcast ืืื ืืึทืืื ืื ืืึธืืืึทื ืง ืืึธืจื, ืืื ืื ืคืึธืจืฉืืขืืื ื ืคืื ืืึทืงืืืขื ืึท ื ืืึทืข ืฉืืึทื ืืื ืื ืงืจืึทืืึทื ื ืืื ืืึทืงืืืขื ืื ืฆืืื ืคึฟืึทืจ ืึท ืืงืฉื ืฆื Hazelcast. ืึธืืขืจ Hazelcast ืืื ืขืคึผืขืก ืืขืจ ืึธืคึผืืืืึทื - FlakeIdGenerator. ืืืขื ืืืจ ืงืึธื ืืึทืงื ืืขืืขืจ ืงืืืขื ื, ืืื ืืขื ืขื ืืขืืขืื ืึท ืฉืืึทื ืงืืื, ืืืฉื, ืืขืจ ืขืจืฉืืขืจ ืืืื ืขืจ - ืคืื 1 ืฆื 10, ืื ืจืืข - ืคืื 000 ืฆื 10, ืืื ืึทืืื ืืืืฃ. ืืืฆื ืืขืจ ืงืืืขื ื ืงืขื ืขื ืึทืจืืืกืืขืื ื ืืึท ืืืขื ืืืคืืขืจืก ืืืืฃ ืืื ืืื ืื ืงืืื ืืจืืืก ืฆื ืขืก ืขื ืืก. ืขืก ืึทืจืืขื ืืขืฉืืืื ื, ืึธืืขืจ ืืืขื ืืืจ ืจืืกืืึทืจื ืื ืึทืคึผืืึทืงืืืฉืึทื (ืืื ืื Hazelcast ืงืืืขื ื), ืึท ื ืืึทืข ืกืืงืืืึทื ืก ืืืืื ืืื - ืืขืจืคืืจ ืื ืกืงืืคึผืก, ืขืืง. ืืื ืึทืืืฉืึทื, ืืขืืืขืืึธืคึผืขืจืก ืืึธื ื ืื ืืึทืงืข ืคึฟืึทืจืฉืืืื ืืืึธืก ืื IDs ืืขื ืขื ืืึทื ืฅ, ืึธืืขืจ ืืื ืืขื ืขื ืึทืืื ืกืชืืจื. ืืืจ ืืืืื ืึทืืฅ ืืื ืกืืืืืฉื ืฆื UUIDs.
ืืืจื ืืขื ืืืขื, ืคึฟืึทืจ ืื ืืืืก ืืืืื ืฆื ืืืื ืืื ืืืืืืืขืจ, ืขืก ืืื ืึทืืึท ืึท ืกื ืึธืืืงืึทืกื ืืืืืืึธืืขืง - ืืึธืก ืืื ืึทื ืืืคึผืืึทืืขื ืืืืฉืึทื ืคืื ืกื ืึธืืืคืืึทืงืข ืืืืฃ ืฉืคึผืืฅ ืคืื ืืึทืืขืืงืึทืกื. ืืืจ ืงืขื ืขื ืืขื ืขืก ืืึธ:
ืืืขืจ ืืืจ ืืึธืื ื ืื ืืึทืงืืืขื ืึทืจืื ืขืก ืขื ืืืึธืจ.
TransactionalMap.replace
ืื ืื ืืขืจ ืืืขืจืจืึทืฉื: TransactionalMap.replace ืงืขื ื ืืฉื ืึทืจืืขืื. ืืึธ ืก ืึท ืคึผืจืึธืืข:
@Test
public void replaceInMap_putsAndGetsInsideTransaction() {
hazelcastInstance.executeTransaction(context -> {
HazelcastTransactionContextHolder.setContext(context);
try {
context.getMap("map").put("key", "oldValue");
context.getMap("map").replace("key", "oldValue", "newValue");
String value = (String) context.getMap("map").get("key");
assertEquals("newValue", value);
return null;
} finally {
HazelcastTransactionContextHolder.clearContext();
}
});
}
Expected : newValue
Actual : oldValue
ืืื ืืื ืฆื ืฉืจืืึทืื ืืืื ืืืืืขื ืข ืคืึทืจืืืึทื ื ืืฆื getForUpdate:
protected <K,V> boolean replaceInMap(String mapName, K key, V oldValue, V newValue) {
TransactionalTaskContext context = HazelcastTransactionContextHolder.getContext();
if (context != null) {
log.trace("[CACHE] Replacing value in a transactional map");
TransactionalMap<K, V> map = context.getMap(mapName);
V value = map.getForUpdate(key);
if (oldValue.equals(value)) {
map.put(key, newValue);
return true;
}
return false;
}
log.trace("[CACHE] Replacing value in a not transactional map");
IMap<K, V> map = hazelcastInstance.getMap(mapName);
return map.replace(key, oldValue, newValue);
}
ืคึผืจืืืืจื ื ืื ืืืืื ืจืขืืืืขืจ ืืึทืื ืกืืจืึทืงืืฉืขืจื, ืึธืืขืจ ืืืื ืืืืขืจ ืืจืึทื ืกืึทืงืืืึธื ืึทื ืืืขืจืกืืขืก. ืขืก ืืึทืคึผืึทื ื ืึทื IMap ืึทืจืืขื, ืึธืืขืจ TransactionalMap ื ืื ืืขืจ ืืืืืกืฅ.
ืึทืจืืึทื ืืืืื ืึท ื ืืึท JAR ืึธื ืืึทืื ืืืื
ืขืจืฉืืขืจ, ืืืจ ืืึทืฉืืึธืกื ืฆื ืจืขืงืึธืจืืืจื ืึทืืืืฉืขืงืฅ ืคืื ืืื ืืืขืจ ืงืืืกื ืืื Hazelcast. ืคึฟืึทืจ ืืืึทืฉืคึผืื, ืืืจ ืืึธืื ืึท ืึทืคึผืคึผืืืงืึทืืืึธื ืงืืึทืก, ืืืจ ืืืืื ืฆื ืจืึทืืขืืืขื ืืื ืืืืขื ืขื ืขืก. ืืื:
IMap<UUID, Application> map = hazelcastInstance.getMap("application");
map.set(id, application);
ืืืจ ืืืืขื ืขื:
IMap<UUID, Application> map = hazelcastInstance.getMap("application");
return map.get(id);
ืึทืืฅ ืึทืจืืขื. ืืขืจื ืึธื ืืืจ ืืึทืฉืืึธืกื ืฆื ืืืืขื ืึทื ืืื ืืขืงืก ืืื Hazelcast ืฆื ืืืื ืืืจื:
map.addIndex("subscriberId", false);
ืืื ืืืขื ืืื ืฉืจืืืื ืึท ื ืืึทืข ืขื ืืืื, ืืื ืื ืืขืืืืื ืฆื ืืึทืงืืืขื ClassNotFoundException. Hazelcast ืืขืคืจืืืื ืฆื ืืืืื ืฆื ืื ืืื ืืขืงืก, ืึธืืขืจ ืืื ื ืืฉื ืืืืกื ืขืคึผืขืก ืืืขืื ืืื ืืืขืจ ืงืืึทืก ืืื ืืขืืืืื ืึท JAR ืืื ืืขื ืงืืึทืก ืฆื ืืืื ืกืึทืคึผืืืื ืฆื ืืื. ืืืจ ืืึธืื ืคึผืื ืงื ืืึธืก, ืึทืืฅ ืืขืืจืืขื, ืึธืืขืจ ืขืก ืืื ืืขืืืขื ืึท ื ืืึทืข ืคึผืจืึธืืืขื: ืืื ืฆื ืืขืจืืืึทื ืืืงื ืื JAR ืึธื ืืึธืจ ืกืืึธืคึผืคึผืื ื ืืขื ืงื ืืื? Hazelcast ืงืขื ื ืืฉื ืืึทืงืืืขื ืื ื ืืึทืข JAR ืืขืฉืึทืก ืึท ื ืึธืืข-ืืื-ื ืึธืืข ืืขืจืืืึทื ืืืงื. ืืื ืืขื ืคืื ื ืืืจ ืืึทืฉืืึธืกื ืึทื ืืืจ ืงืขื ืขื ืืขืื ืึธื ืืื ืืขืงืก ืืืื. ื ืึธื ืึทืืข, ืืืื ืืืจ ื ืืฆื Hazelcast ืืื ืึท ืฉืืืกื-ืืืขืจื ืงืจืึธื, ืึทืืฅ ืืืขื ืึทืจืืขืื? ื ืืฉื ืขืื. ืืืืืขืจ, ืื ื ืึทืืืจ ืคืื IMap ืืื TransactionalMap ืืื ืึทื ืืขืจืฉ. ืืืื IMap ืืื ื ืืฉื ืืึธืจืื, TransactionalMap ืืืืจืคื ืขืจ ืึท ืืขืืช.
IMap. ืืืจ ืฉืจืืึทืื 5000 ืึทืืืืฉืขืงืฅ, ืืืืขื ืขื ืืื. ืึทืืฅ ืืื ืืขืจืืืึทืจื.
@Test
void get5000() {
IMap<UUID, Application> map = hazelcastInstance.getMap("application");
UUID subscriberId = UUID.randomUUID();
for (int i = 0; i < 5000; i++) {
UUID id = UUID.randomUUID();
String title = RandomStringUtils.random(5);
Application application = new Application(id, title, subscriberId);
map.set(id, application);
Application retrieved = map.get(id);
assertEquals(id, retrieved.getId());
}
}
ืึธืืขืจ ืขืก ืึทืจืืขื ื ืืฉื ืืื ืึท ืืจืึทื ืกืึทืงืืืึธื, ืืืจ ืืึทืงืืืขื ืึท ClassNotFoundException:
@Test
void get_transaction() {
IMap<UUID, Application> map = hazelcastInstance.getMap("application_t");
UUID subscriberId = UUID.randomUUID();
UUID id = UUID.randomUUID();
Application application = new Application(id, "qwer", subscriberId);
map.set(id, application);
Application retrievedOutside = map.get(id);
assertEquals(id, retrievedOutside.getId());
hazelcastInstance.executeTransaction(context -> {
HazelcastTransactionContextHolder.setContext(context);
try {
TransactionalMap<UUID, Application> transactionalMap = context.getMap("application_t");
Application retrievedInside = transactionalMap.get(id);
assertEquals(id, retrievedInside.getId());
return null;
} finally {
HazelcastTransactionContextHolder.clearContext();
}
});
}
ืืื 3.8, ืืขืจ ืืึทื ืืฆืขืจ ืงืืึทืก ืืืคึผืืืืืึทื ื ืืขืงืึทื ืืืึทื ืืจืืืก. ืืืจ ืงืขื ืขื ืืขืืืื ืืื ืืืื ืืขื ื ืึธืืข ืืื ืืขืจืืืึทื ืืืงื ืื JAR ืืขืงืข ืืืืฃ ืขืก.
ืืืฆื ืืืจ ืืึธืื ืืึธืจ ืืขืืืื ืืื ืืืขืจ ืฆืืืึทื ื: ืืืจ ืกืืจืืึทืืื ืขืก ืืื ืืื JSON ืืื ืจืึทืืขืืืขื ืขืก ืืื Hazelcast. Hazelcast ืืึทืจืฃ ื ืืฉื ืืืืกื ืื ืกืืจืืงืืืจ ืคืื ืืื ืืืขืจ ืงืืืกื, ืืื ืืืจ ืงืขื ืขื ืืขืจืืืึทื ืืืงื ืึธื ืืึทืื ืืืื. ืืืขืจืกืืข ืคืื โโืคืขืื ืึทืืืืฉืขืงืฅ ืืื ืงืึทื ืืจืึธืืื ืืืจื ืื ืึทืคึผืืึทืงืืืฉืึทื. ืคืึทืจืฉืืืขื ืข ืืืขืจืกืืขืก ืคืื ืื ืึทืคึผืืึทืงืืืฉืึทื ืงืขื ืขื ืืืื ืคืืืกื ืืืง ืืื ืืขืจ ืืขืืืืงืขืจ ืฆืืื, ืืื ืึท ืกืืืืึทืฆืืข ืืื ืืขืืืขื ืืืขื ืื ื ืืึทืข ืึทืคึผืืึทืงืืืฉืึทื ืฉืจืืืื ืึทืืืืฉืขืงืฅ ืืื ื ืืึทืข ืคืขืืืขืจ, ืึธืืขืจ ืื ืึทืื ืงืขื ื ืึธื ื ืืฉื ืืืืกื ืืืขืื ืื ืคืขืืืขืจ. ืืื ืืื ืืขืจ ืืขืืืืงืขืจ ืฆืืื, ืื ื ืืึทืข ืึทืคึผืืึทืงืืืฉืึทื ืืืืขื ื ืึทืืืืฉืขืงืฅ ืืขืฉืจืืื ืืืจื ืื ืึทืื ืึทืคึผืืึทืงืืืฉืึทื ืืืึธืก ืืึธื ื ืื ืืึธืื ื ืืึทืข ืคืขืืืขืจ. ืืืจ ืฉืขืคึผื ืึทืืึท ืกืืืืึทืืืึธื ืก ืืื ืื ืึทืคึผืืึทืงืืืฉืึทื, ืึธืืขืจ ืคึฟืึทืจ ืคึผืึทืฉืืขืก ืืืจ ืืึธื ื ืื ืืืืฉื ืึธืืขืจ ืืืกืืขืงื ืคืขืืืขืจ, ืืืจ ืืืืื ืืงืกืคึผืึทื ื ืื ืงืืืกื ืืืจื ืึทืืื ื ื ืืึทืข ืคืขืืืขืจ.
ืืื ืืืจ ืขื ืฉืืจ ืืืื ืคืึธืจืฉืืขืืื ื
ืคืืจ ืืจืืคึผืก ืฆื Hazelcast - ืืื, ืฆืืืื ืฆื ืื ืืึทืืึทืืืืก - ืฉืืขืื
ืืืื ืฆื ืื ืงืึทืฉ ืคึฟืึทืจ ืืึทืื ืืื ืฉืืขื ืืืง ืืขืกืขืจ ืืื ืฆื ืืืื ืฆื ืื ืืึทืืึทืืืืก, ืึธืืขืจ ืืืจ ืืึธื ื ืืฉื ืืืขืื ืฆื ืงืจืึธื ืึทื ืืืื ืจืขืงืึธืจืืก. ืืืจ ืืึธืื ืื ืืึทืฉืืืก ืืืขืื ืืืึธืก ืฆื ืงืึทืฉ ืืื ืื ืืขืฆืืข ืืื ืข ืคืื โโืึทื ืืืืืงืืื ื. ืืืขื ืื ื ืืึทืข ืคืึทื ืืงืฉืึทื ืึทืืืื ืืื ืงืึธืืขื, ืืืจ ืงืขืจ ืืืืฃ ืืึธืืื ื ืคืื ืึทืืข ืงืืืืจืื ืืื ืคึผืึธืกืืืจืขืกืงื (ืืึธื_ืืื_ืืืจืึทืืืึธื_ืกืืึทืืขืืขื ื ืฆื 0) ืืื ืืืืคื ืืึทืกืข ืืขืกืืื ื ืคึฟืึทืจ 20 ืืื ืื. ื ืืฆื ืื ืืขืืืืื ืืึธืืก, ืืืืืืึทืืื ืืื ืคึผืืคืึธืืื ืข ืืื ืคึผืืืึทืืืขืจ ืงืขื ืขื ืืืืขื ืึทื ืึทืืืกืืก ืจืืคึผืึธืจืฅ. ืืื ืจืืคึผืึธืจืฅ, ืืืจ ืืคึฟืจื ืงืืงื ืคึฟืึทืจ ืคึผืึทืืขืืขื ืืื ืึธืคื ืงืืืืจืื. ืคึฟืึทืจ ืคึผืึทืืขืืขื ืคึฟืจืืื, ืืืจ ืืืืขื ืึท ืืืจืืคืืจืื ื ืคึผืืึทื (ืืขืจืงืืขืจื) ืืื ืึธืคึผืฉืึทืฆื ืฆื ืึทืืึท ืึท ืึธื ืคึฟืจืขื ืงืขื ืขื ืืืื ืึทืงืกืขืืขืจืืืืื. ืึธืคื ืจืืงืืืขืก ืคึฟืึทืจ ืื ืืขืืืข ืึทืจืืึทื ืฉืจืืึทื ืืึทืื ืคึผืึทืกืืง ืืขืืื ื ืืื ืื ืงืึทืฉ. ืืืจ ืคึผืจืืืืจื ืฆื ืืึทืืื ืงืืืืจืื "ืคืืึทื", ืืืื ืืืฉ ืคึผืขืจ ืึธื ืคึฟืจืขื.
ืึธืคึผืขืจืึทืฆืืข
SV ืืื ืึทื ืึธื ืืืื ืืื ืกื ืืื ืืขืืืขื ืฉืืขืื ืืื ืึธืคึผืขืจืึทืฆืืข ืืื ืคืจืืืื ื ืคืื 2017, ืืื ืืื ืึท ืืึทืืื ืืขืจ ืคึผืจืึธืืืงื, SV ืืื ืืืคืจืืื ืืื ื ืืืืขืืืขืจ 2017 (ืืื ืืขืจ ืฆืืื ืืื ืืืชื ืืืขืจืกืืข ืกืืึทืืืก).
ืืื ืืขืจ ืืื ืึท ืืึธืจ ืคืื ืึธืคึผืขืจืึทืฆืืข, ืขืก ืืขื ืขื ืืขืืืขื ืงืืื ืขืจื ืกื ืคึผืจืึธืืืขืืก ืืื ืื ืึธืคึผืขืจืึทืฆืืข ืคืื โโืื CB ืึธื ืืืื ืืื ืกื. ืืืจ ืืึธื ืืืึธืจ ืื ืึธื ืืืื ืืื ืกื ืืืจื
ืื SV ืกืขืจืืืขืจ ืคืึทืจืฉืคึผืจืืืืื ื ืืื ืกืึทืคึผืืืื ืืื ืื ืคืึธืจืขื ืคืื ืืขืืืืจื ืคึผืึทืงืึทืืืฉืึทื: RPM, DEB, MSI. ืคึผืืืก ืคึฟืึทืจ Windows ืืืจ ืฆืืฉืืขืื ืึท ืืืื ืื ืกืืึทืืืขืจ ืืื ืื ืคืึธืจืขื ืคืื ืึท ืืืื ืขืงืกืข ืืืึธืก ืื ืกืืึธืื ืื ืกืขืจืืืขืจ, Hazelcast ืืื Elasticsearch ืืืืฃ ืืืื ืืึทืฉืื. ืืืจ ืืืืืขืก ืจืืคืขืจื ืฆื ืืขื ืืืขืจืกืืข ืคืื โโโโืื ืื ืกืืึทืืืจืื ื ืืื ืื "ืืขืืึธ" ืืืขืจืกืืข, ืึธืืขืจ ืขืก ืืื ืืืฆื ืงืืึธืจ ืึทื ืืึธืก ืืื ืื ืืขืจืกื ืคืึธืืงืก ืืืคึผืืืืืึทื ื ืึธืคึผืฆืืข.
ืืงืืจ: www.habr.com