ื•ื•ื™ ืื•ืŸ ื•ื•ืึธืก ืžื™ืจ ื’ืขืฉืจื™ื‘ืŸ ืึท ื”ื•ื™ืš-ืžืึทืกืข ืกืงืึทืœืึทื‘ืœืข ื“ื™ื ืกื˜ ืคึฟืึทืจ 1C: ืคืึทืจื ืขืžื•ื ื’: Java, PostgreSQL, Hazelcast

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

ื“ื™ ื™ื ื˜ืขืจืึทืงืฉืึทืŸ ืกื™ืกื˜ืขื (ื“ืขืจื ืึธืš ืจื™ืคืขืจื“ ืฆื• ื•ื•ื™ SV) ืื™ื– ืึท ืคื•ื ืื ื“ืขืจื’ืขื˜ื™ื™ืœื˜, ืฉื•ืœื“-ื˜ืึธืœืขืจืึทื ื˜ ืžืขืกื™ื“ื–ืฉื™ื ื’ ืกื™ืกื˜ืขื ืžื™ื˜ ื’ืขืจืึทื ื˜ื™ื“ ืขืงืกืคึผืจืขืก. SV ืื™ื– ื“ื™ื–ื™ื™ื ื“ ื•ื•ื™ ืึท ื”ื•ื™ืš-ืžืึทืกืข ื“ื™ื ืกื˜ ืžื™ื˜ ื”ื•ื™ืš ืกืงืึทืœืึทื‘ื™ืœื™ื˜ื™, ื‘ื ื™ืžืฆื ื•ื•ื™ ืึทืŸ ืึธื ืœื™ื™ืŸ ื“ื™ื ืกื˜ (ืฆื•ื’ืขืฉื˜ืขืœื˜ ื“ื•ืจืš 1C) ืื•ืŸ ื•ื•ื™ ืึท ืžืึทืกืข-ื’ืขืฉืืคืŸ ืคึผืจืึธื“ื•ืงื˜ ื•ื•ืึธืก ืงืขื ืขืŸ ื–ื™ื™ืŸ ื“ื™ืคึผืœื•ื™ื“ ืื•ื™ืฃ ื“ื™ื™ืŸ ืื™ื™ื’ืขื ืข ืกืขืจื•ื•ืขืจ ืคืึทืกื™ืœืึทื˜ื™ื–.

ืกื•ื• ื ื™ืฆื˜ ืคื•ื ืื ื“ืขืจื’ืขื˜ื™ื™ืœื˜ ืกื˜ืึธืจื™ื“ื–ืฉ ื”ืึทื–ืขืœืงืึทืกื˜ ืื•ืŸ ื–ื•ื›ืŸ ืžืึธื˜ืึธืจ ืขืœืึทืกื˜ื™ืงืกืึทืจื˜ืฉ. ืžื™ืจ ื•ื•ืขืœืŸ ืื•ื™ืš ืจืขื“ืŸ ื•ื•ืขื’ืŸ ื–'ืื‘ื ืื•ืŸ ื•ื•ื™ ืžื™ืจ ื›ืึธืจื™ื–ืึทื ื˜ืึทืœื™ ื•ื•ืึธื’ PostgreSQL.
ื•ื•ื™ ืื•ืŸ ื•ื•ืึธืก ืžื™ืจ ื’ืขืฉืจื™ื‘ืŸ ืึท ื”ื•ื™ืš-ืžืึทืกืข ืกืงืึทืœืึทื‘ืœืข ื“ื™ื ืกื˜ ืคึฟืึทืจ 1C: ืคืึทืจื ืขืžื•ื ื’: Java, PostgreSQL, Hazelcast

ื•ื™ืกื–ืึธื’ื•ื ื’ ืคื•ืŸ ื“ื™ ืคึผืจืึธื‘ืœืขื

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

ืฆื• ืึธื ื”ื™ื™ื‘ืŸ ืžื™ื˜, ืึท ื‘ื™ืกืœ ื•ื•ืขื’ืŸ ืื•ื ื“ื– ืคึฟืึทืจ ื“ื™ ื•ื•ืืก ื˜ืึธืŸ ื ื™ื˜ ื ืึธืš ื•ื•ื™ืกืŸ ื•ื•ืึธืก ืžื™ืจ ื˜ืึธืŸ :) ืžื™ืจ ืžืึทื›ืŸ ื“ื™ 1C: ืขื ื˜ืขืจืคึผืจื™ื™ื– ื˜ืขื›ื ืึธืœืึธื’ื™ืข ืคึผืœืึทื˜ืคืึธืจืžืข. ื“ื™ ืคึผืœืึทื˜ืคืึธืจืžืข ื›ื•ืœืœ ืึท ื’ืขืฉืขืคื˜ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืึทื ื˜ื•ื•ื™ืงืœื•ื ื’ ื’ืขืฆื™ื™ึทื’, ื•ื•ื™ ื’ืขื–ื•ื ื˜ ื•ื•ื™ ืึท ืจื•ื ื˜ื™ืžืข ื•ื•ืึธืก ืึทืœืึทื•ื– ื’ืขืฉืขืคื˜ ืึทืคึผืœืึทืงื™ื™ืฉืึทื ื– ืฆื• ืœื•ื™ืคืŸ ืื™ืŸ ืึท ืงืจื™ื™ึทื–-ืคึผืœืึทื˜ืคืึธืจืžืข ืกื•ื•ื™ื•ื•ืข.

ืงืœื™ืขื ื˜-ืกืขืจื•ื•ืขืจ ืึทื ื˜ื•ื•ื™ืงืœื•ื ื’ ืคึผืึทืจืึทื“ื™ื’ื

ื’ืขืฉืขืคื˜ ืึทืคึผืœืึทืงื™ื™ืฉืึทื ื– ื‘ืืฉืืคืŸ ืื•ื™ืฃ 1C: ืขื ื˜ืขืจืคึผืจื™ื™ื– ืึทืจื‘ืขื˜ืŸ ืื™ืŸ ืึท ื“ืจื™ื™-ืžื“ืจื’ื” ืงืœื™ืขื ื˜-ืกืขืจื•ื•ืขืจ ืึทืจืงืึทื˜ืขืงื˜ืฉืขืจ "DBMS - ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืกืขืจื•ื•ืขืจ - ืงืœื™ืขื ื˜". ืึทืคึผืคึผืœื™ืงืึทื˜ื™ืึธืŸ ืงืึธื“ ื’ืขืฉืจื™ื‘ืŸ ืื™ืŸ ื’ืขื‘ื•ื™ื˜ ืื™ืŸ 1C ืฉืคึผืจืึทืš, ืงืขื ืขืŸ ื–ื™ื™ืŸ ืขืงืกืึทืงื™ื•ื˜ืึทื“ ืื•ื™ืฃ ื“ื™ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืกืขืจื•ื•ืขืจ ืึธื“ืขืจ ืื•ื™ืฃ ื“ืขื ืงืœื™ืขื ื˜. ืึทืœืข ืึทืจื‘ืขื˜ ืžื™ื˜ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืึทื‘ื“ื–ืฉืขืงืฅ (ื“ื™ืจืขืงื˜ืขืจื™ื–, ื“ืึธืงื•ืžืขื ื˜ืŸ, ืืื–"ื• ื•), ื•ื•ื™ ื’ืขื–ื•ื ื˜ ื•ื•ื™ ืœื™ื™ืขื ืขืŸ ืื•ืŸ ืฉืจื™ื™ื‘ืŸ ื“ื™ ื“ืึทื˜ืึทื‘ื™ื™ืก, ืื™ื– ื“ื•ืจื›ื’ืขืงืึธื›ื˜ ื‘ืœื•ื™ื– ืื•ื™ืฃ ื“ื™ ืกืขืจื•ื•ืขืจ. ื“ื™ ืคืึทื ื’ืงืฉืึทื ืึทืœื™ื˜ื™ ืคื•ืŸ ืคืืจืžืขืŸ ืื•ืŸ ื‘ืึทืคึฟืขืœืŸ ืฆื•ื‘ื™ื ื“ ืื™ื– ืื•ื™ืš ื™ืžืคึผืœืึทืžืขื ืึทื“ ืื•ื™ืฃ ื“ื™ ืกืขืจื•ื•ืขืจ. ื“ืขืจ ืงืœื™ืขื ื˜ ืคึผืขืจืคืึธืจืžื– ืจื™ืกื™ื•ื•ื™ื ื’, ืขืคืŸ ืื•ืŸ ื•ื•ื™ื™ึทื– ืคืืจืžืขืŸ, "ืงืึทืžื™ื•ื ืึทืงื™ื™ื˜ื™ื ื’" ืžื™ื˜ ื“ื™ ื‘ืึทื ื™ืฆืขืจ (ื•ื•ืึธืจื ื™ื ื’ื–, ืคืจืื’ืขืก ...), ืงืœื™ื™ืŸ ื—ืฉื‘ื•ื ื•ืช ืื™ืŸ ืคืืจืžืขืŸ ื•ื•ืึธืก ื“ืึทืจืคืŸ ืึท ืฉื ืขืœ ืขื ื˜ืคืขืจ (ืœืžืฉืœ, ืžืึทืœื˜ืึทืคึผืœื™ื™ื™ื ื’ ื“ื™ ืคึผืจื™ื™ึทื– ื“ื•ืจืš ืงื•ื•ืึทื ื˜ื™ื˜ื™), ืืจื‘ืขื˜ืŸ ืžื™ื˜ ื”ื™ื’ืข ื˜ืขืงืขืก, ืืจื‘ืขื˜ืŸ ืžื™ื˜ ื•ื™ืกืจื™ื›ื˜.

ืื™ืŸ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืงืึธื“, ื“ื™ ื›ืขื“ืขืจื– ืคื•ืŸ ืคึผืจืึธื•ืกื™ื“ื–ืฉืขืจื– ืื•ืŸ ืคืึทื ื’ืงืฉืึทื ื– ืžื•ื–ืŸ ื‘ืคื™ืจื•ืฉ ืึธื ื•ื•ื™ื™ึทื–ืŸ ื•ื•ื• ื“ื™ ืงืึธื“ ื•ื•ืขื˜ ื–ื™ื™ืŸ ืขืงืกืึทืงื™ื•ื˜ืึทื“ - ื ื™ืฆืŸ ื“ื™ &AtClient / &AtServer ื“ื™ื™ืจืขืงื˜ื™ื•ื•ื– (&AtClient / &AtServer ืื™ืŸ ื“ื™ ืขื ื’ืœื™ืฉ ื•ื•ืขืจืกื™ืข ืคื•ืŸ โ€‹โ€‹ื“ืขืจ ืฉืคึผืจืึทืš). 1C ื“ืขื•ื•ืขืœืึธืคึผืขืจืก ื•ื•ืขืœืŸ ืื™ืฆื˜ ืคืึทืจืจื™ื›ื˜ืŸ ืžื™ืจ ื“ื•ืจืš ื–ืึธื’ืŸ ืึทื– ื“ื™ ื“ื™ืจืขืงื˜ื™ื•ื•ื– ื–ืขื ืขืŸ ืึทืงืฉืœื™ ื‘ืขืกืขืจ, ืื‘ืขืจ ืคืืจ ืื•ื ื– ืื™ื– ื“ืืก ืื™ืฆื˜ ื ื™ืฉื˜ ื•ื•ื™ื›ื˜ื™ื’.

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

ื•ื•ื™ ืื•ืŸ ื•ื•ืึธืก ืžื™ืจ ื’ืขืฉืจื™ื‘ืŸ ืึท ื”ื•ื™ืš-ืžืึทืกืข ืกืงืึทืœืึทื‘ืœืข ื“ื™ื ืกื˜ ืคึฟืึทืจ 1C: ืคืึทืจื ืขืžื•ื ื’: Java, PostgreSQL, Hazelcast
ืงืึธื“ ื•ื•ืึธืก ืคึผืจืึทืกืขืกืึทื– ืึท ืงื ืขืคึผืœ ื’ื™ื˜: ืจื•ืคืŸ ืึท ืกืขืจื•ื•ืขืจ ืคึผืจืึธืฆืขื“ื•ืจ ืคื•ืŸ ื“ืขื ืงืœื™ืขื ื˜ ื•ื•ืขื˜ ืึทืจื‘ืขื˜ืŸ, ืจื•ืคืŸ ืึท ืงืœื™ืขื ื˜ ืคึผืจืึธืฆืขื“ื•ืจ ืคื•ืŸ ื“ื™ ืกืขืจื•ื•ืขืจ ื•ื•ืขื˜ ื ื™ืฉื˜

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

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

ื“ื™ ืคึผืจืึธื“ื•ืงืฆื™ืข ื–ื™ืš

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

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

ื™ืžืคึผืœืขืžืขื ื˜ืึทื˜ื™ืึธืŸ

ืžื™ืจ ื‘ืึทืฉืœืึธืกืŸ ื ื™ืฉื˜ ืฆื• ื•ื™ืกืฉื˜ื™ืžืขืŸ ื“ื™ ืกืขืจื•ื•ืขืจ ื˜ื™ื™ืœ ืคื•ืŸ SV ื’ืœื™ื™ืš ืื™ืŸ ื“ื™ 1C: ืขื ื˜ืขืจืคึผืจื™ื™ื– ืคึผืœืึทื˜ืคืึธืจืžืข, ืึธื‘ืขืจ ืฆื• ื™ื ืกื˜ืจื•ืžืขื ื˜ ืขืก ื•ื•ื™ ืึท ื‘ืึทื–ื•ื ื“ืขืจ ืคึผืจืึธื“ื•ืงื˜, ื“ื™ API ืคื•ืŸ ื•ื•ืึธืก ืงืขื ืขืŸ ื–ื™ื™ืŸ ื’ืขืจื•ืคึฟืŸ ืคึฟื•ืŸ ื“ื™ ืงืึธื“ ืคื•ืŸ 1C ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืกืึทืœื•ืฉืึทื ื–. ื“ืึธืก ืื™ื– ื’ืขื•ื•ืขืŸ ื’ืขื˜ืืŸ ืคึฟืึทืจ ืึท ื ื•ืžืขืจ ืคื•ืŸ ืกื™ื‘ื•ืช, ื“ืขืจ ื”ื•ื™ืคึผื˜ ืื™ื™ื ืขืจ ืคื•ืŸ ื•ื•ืึธืก ืื™ื– ื’ืขื•ื•ืขืŸ ืึทื– ืื™ืš ื’ืขื•ื•ืืœื˜ ืฆื• ืžืึทื›ืŸ ืขืก ืžืขื’ืœืขืš ืฆื• ื•ื•ืขืงืกืœ ืึทืจื˜ื™ืงืœืขืŸ ืฆื•ื•ื™ืฉืŸ ืคืึทืจืฉื™ื“ืขื ืข 1C ืึทืคึผืœืึทืงื™ื™ืฉืึทื ื– (ืคึฟืึทืจ ื‘ื™ื™ึทืฉืคึผื™ืœ, ืฆื•ื•ื™ืฉืŸ ื”ืึทื ื“ืœ ืžืึทื ืึทื’ืขืžืขื ื˜ ืื•ืŸ ืึทืงืึทื•ื ื˜ื™ื ื’). ืคืึทืจืฉื™ื“ืขื ืข 1C ืึทืคึผืœืึทืงื™ื™ืฉืึทื ื– ืงืขื ืขืŸ ืœื•ื™ืคืŸ ืื•ื™ืฃ ืคืึทืจืฉื™ื“ืขื ืข ื•ื•ืขืจืกื™ืขืก ืคื•ืŸ ื“ื™ 1C: ืขื ื˜ืขืจืคึผืจื™ื™ื– ืคึผืœืึทื˜ืคืึธืจืžืข, ื–ื™ื™ืŸ ืœื™ื’ืŸ ืื•ื™ืฃ ืคืึทืจืฉื™ื“ืขื ืข ืกืขืจื•ื•ืขืจืก, ืขื˜ืง. ืื™ืŸ ืึทื–ืึท ื˜ื ืึธื™ื, ื“ื™ ื™ืžืคึผืœืึทืžืขื ื˜ื™ื™ืฉืึทืŸ ืคื•ืŸ SV ื•ื•ื™ ืึท ื‘ืึทื–ื•ื ื“ืขืจ ืคึผืจืึธื“ื•ืงื˜ ืœื™ื’ืŸ "ืื•ื™ืฃ ื“ื™ ื–ื™ื™ึทื˜" ืคื•ืŸ 1C ื™ื ืกื˜ืึทืœื™ื™ืฉืึทื ื– ืื™ื– ื“ื™ ืึธืคึผื˜ื™ืžืึทืœ ืœื™ื™ื–ื•ื ื’.

ืึทื–ื•ื™, ืžื™ืจ ื‘ืึทืฉืœืึธืกืŸ ืฆื• ืžืึทื›ืŸ SV ื•ื•ื™ ืึท ื‘ืึทื–ื•ื ื“ืขืจ ืคึผืจืึธื“ื•ืงื˜. ืžื™ืจ ืจืขืงืึธืžืขื ื“ื™ืจืŸ ืึทื– ืงืœื™ื™ืŸ ืงืึธืžืคึผืึทื ื™ืขืก ื ื•ืฆืŸ ื“ื™ CB ืกืขืจื•ื•ืขืจ ื•ื•ืึธืก ืžื™ืจ ืื™ื ืกื˜ืึทืœื™ืจืŸ ืื™ืŸ ืื•ื ื“ื–ืขืจ ื•ื•ืึธืœืงืŸ (wss://1cdialog.com) ืฆื• ื•ื™ืกืžื™ื™ื“ืŸ ื“ื™ ืึธื•ื•ื•ืขืจื›ืขื“ ืงืึธืก ืคึฟืึทืจื‘ื•ื ื“ืŸ ืžื™ื˜ ื”ื™ื’ืข ื™ื™ึทื ืžืึธื ื˜ื™ืจื•ื ื’ ืื•ืŸ ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ ืคื•ืŸ ื“ื™ ืกืขืจื•ื•ืขืจ. ื’ืจื•ื™ืก ืงืœื™ื™ืึทื ืฅ ืงืขืŸ ื’ืขืคึฟื™ื ืขืŸ ืขืก ืงืขื“ื™ื™ึทื™ืง ืฆื• ื™ื ืกื˜ืึทืœื™ืจืŸ ื–ื™ื™ืขืจ ืื™ื™ื’ืขื ืข CB ืกืขืจื•ื•ืขืจ ืื™ืŸ ื–ื™ื™ืขืจ ืคืึทืกื™ืœืึทื˜ื™ื–. ืžื™ืจ ื’ืขื•ื•ื™ื™ื ื˜ ืึท ืขื ืœืขืš ืฆื•ื’ืึทื ื’ ืื™ืŸ ืื•ื ื“ื–ืขืจ ื•ื•ืึธืœืงืŸ ืกืึทืึทืก ืคึผืจืึธื“ื•ืงื˜ 1cFresh - ืขืก ืื™ื– ื’ืขืฉืืคืŸ ื•ื•ื™ ืึท ืžืึทืกืข-ืคึผืจืึธื“ื•ืฆื™ืจื˜ ืคึผืจืึธื“ื•ืงื˜ ืคึฟืึทืจ ื™ื™ึทื ืžืึธื ื˜ื™ืจื•ื ื’ ืื•ื™ืฃ ื“ื™ ื–ื™ื™ื˜ืœืขืš ืคื•ืŸ ืงืœื™ื™ืึทื ืฅ, ืื•ืŸ ืื™ื– ืื•ื™ืš ื“ื™ืคึผืœื•ื™ื“ ืื™ืŸ ืื•ื ื“ื–ืขืจ ื•ื•ืึธืœืงืŸ https://1cfresh.com/.

ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ

ืฆื• ืคืึทืจืฉืคึผืจื™ื™ื˜ืŸ ื“ื™ ืžืึทืกืข ืื•ืŸ ืฉื•ืœื“ ื˜ืึธืœืขืจืึทื ืฅ, ืžื™ืจ ื•ื•ืขืœืŸ ืฆืขื•ื•ื™ืงืœืขืŸ ื ื™ืฉื˜ ืื™ื™ืŸ 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 ืงื ื•ื™ืœ - ืขืก ืื™ื– XL, XC, ืกื™ื˜ื•ืก, ืึธื‘ืขืจ ืื™ืŸ ืึทืœื’ืขืžื™ื™ืŸ, ื“ืึธืก ื–ืขื ืขืŸ ื ื™ืฉื˜ NoSQLs ื•ื•ืึธืก ื•ื•ืึธื’ ืื•ื™ืก ืคื•ืŸ ื“ื™ ืงืขืกื˜ืœ. ืžื™ืจ ื”ืึธื‘ืŸ ื ื™ื˜ ื‘ืึทื˜ืจืึทื›ื˜ NoSQL ื•ื•ื™ ื“ื™ ื”ื•ื™ืคึผื˜ ืกื˜ืึธืจื™ื“ื–ืฉ; ืขืก ืื™ื– ื’ืขื ื•ื’ ืึทื– ืžื™ืจ ื’ืขื ื•ืžืขืŸ ื”ืึทื–ืขืœืงืึทืกื˜, ื•ื•ืึธืก ืžื™ืจ ื”ืึธื‘ืŸ ื ื™ืฉื˜ ื’ืขืืจื‘ืขื˜ ืžื™ื˜ ืคืจื™ืขืจ.

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

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

ืื™ืจ ืงืขื ืขืŸ ืœื™ื™ืขื ืขืŸ ื•ื•ืขื’ืŸ ืžืึทืœื˜ื™-ืœืึธืงืึทื˜ืึธืจ, ืœืžืฉืœ, ืื•ื™ืฃ ื“ืขื ื•ื•ืขื‘ื–ื™ื™ื˜ืœ ืกื™ื˜ื•ืก ื“ืึทื˜ืึท.

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

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

ื•ื•ื™ ืื•ืŸ ื•ื•ืึธืก ืžื™ืจ ื’ืขืฉืจื™ื‘ืŸ ืึท ื”ื•ื™ืš-ืžืึทืกืข ืกืงืึทืœืึทื‘ืœืข ื“ื™ื ืกื˜ ืคึฟืึทืจ 1C: ืคืึทืจื ืขืžื•ื ื’: Java, PostgreSQL, Hazelcast

ืฆื• ืคืึทืจืžื™ื™ึทื“ืŸ ื“ื™ ื”ื•ื™ืคึผื˜ ื“ืึทื˜ืึทื‘ื™ื™ืก ืคื•ืŸ ืึท ื‘ืึทื˜ืึทืœื ืขืง, ืžื™ืจ ื”ืึทืœื˜ืŸ ื“ื™ ืจื•ื˜ื™ื ื’ ื˜ื™ืฉ (ืื•ืŸ ืื ื“ืขืจืข ืึธืคื˜ ื ื•ื™ื˜ื™ืง ื“ืึทื˜ืŸ) ืื™ืŸ ืึท ืงืึทืฉ.

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

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

ืื•ื™ื‘ ืึท ืกื™ื ื˜ืฉืจืึธื ืึธื•ืก ืจืขืคึผืœื™ืงืข ืื™ื– ืคืึทืจืคืึทืœืŸ, ื“ื™ ื™ื™ืกื™ื ื’ืงืจืึทื ืึทืก ืจืขืคึผืœื™ืงืข ื•ื•ืขืจื˜ ืกื™ื ื˜ืฉืจืึธื ืึธื•ืก.
ืื•ื™ื‘ ื“ื™ ื”ื•ื™ืคึผื˜ ื“ืึทื˜ืึทื‘ื™ื™ืก ืื™ื– ืคืึทืจืคืึทืœืŸ, ื“ื™ ืกื™ื ื˜ืฉืจืึธื ืึธื•ืก ืจืขืคึผืœื™ืงืข ื•ื•ืขืจื˜ ื“ื™ ื”ื•ื™ืคึผื˜ ื“ืึทื˜ืึทื‘ื™ื™ืก, ืื•ืŸ ื“ื™ ื™ื™ืกื™ื ื’ืงืจืึทื ืึทืก ืจืขืคึผืœื™ืงืข ื•ื•ืขืจื˜ ืึท ืกื™ื ื˜ืฉืจืึธื ืึธื•ืก ืจืขืคึผืœื™ืงืข.

Elasticsearch ืคึฟืึทืจ ื–ื•ื›ืŸ

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

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

[ื™ืขื ืข, ื˜ืขืง, ื˜ืขืงืก, ื˜ืขืงืกื˜, ื˜ืขืงืกื˜ืŸ, ืขืง, ืขืงืก, ืขืงืกื˜, ื˜ืขืงืกื˜ืŸ, ืงืก, ืงืกื˜, ืงืกื˜ื™, ืกื˜, ืกื˜ื™ื™, ืื™ืจ],

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

ื“ื™ ื’ืจื•ื™ืก ื‘ื™ืœื“

ื•ื•ื™ ืื•ืŸ ื•ื•ืึธืก ืžื™ืจ ื’ืขืฉืจื™ื‘ืŸ ืึท ื”ื•ื™ืš-ืžืึทืกืข ืกืงืึทืœืึทื‘ืœืข ื“ื™ื ืกื˜ ืคึฟืึทืจ 1C: ืคืึทืจื ืขืžื•ื ื’: Java, PostgreSQL, Hazelcast
ืื™ื‘ืขืจื—ื–ืจืŸ ื“ื™ ื‘ื™ืœื“ ืคื•ืŸ ื“ื™ ืึธื ื”ื™ื™ื‘ ืคื•ืŸ ื“ืขื ืึทืจื˜ื™ืงืœ, ืึธื‘ืขืจ ืžื™ื˜ ื“ืขืจืงืœืขืจื•ื ื’ืขืŸ:

  • ื‘ืึทืœืึทื ืกืขืจ ื™ืงืกืคึผืึธื•ื–ื“ ืื•ื™ืฃ ื“ื™ ืื™ื ื˜ืขืจื ืขื˜; ืžื™ืจ ื”ืึธื‘ืŸ nginx, ืขืก ืงืขืŸ ื–ื™ื™ืŸ ืงื™ื™ืŸ.
  • ื“ื–ืฉืึทื•ื•ืึท ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ื™ื ืกื˜ืึทื ืกื™ื– ื™ื‘ืขืจื’ืขื‘ืŸ ืžื™ื˜ ื™ืขื“ืขืจ ืื ื“ืขืจืข ื“ื•ืจืš ื”ืึทื–ืขืœืงืึทืกื˜.
  • ืฆื• ืึทืจื‘ืขื˜ืŸ ืžื™ื˜ ืึท ื•ื•ืขื‘ ื›ืึธืœืขืœ ืžื™ืจ ื ื•ืฆืŸ ื ืขื˜ื˜ื™.
  • ื“ื™ Java ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืื™ื– ื’ืขืฉืจื™ื‘ืŸ ืื™ืŸ Java 8 ืื•ืŸ ื‘ืืฉื˜ื™ื™ื˜ ืคื•ืŸ ื‘ืึทื ื“ืึทืœื– OSGi. ื“ื™ ืคึผืœืึทื ื– ืึทืจื™ื™ึทื ื ืขืžืขืŸ ืžื™ื™ื’ืจื™ื™ืฉืึทืŸ ืฆื• Java 10 ืื•ืŸ ื™ื‘ืขืจื’ืึทื ื’ ืฆื• ืžืึทื“ื–ืฉื•ืœื–.

ืึทื ื˜ื•ื•ื™ืงืœื•ื ื’ ืื•ืŸ ื˜ืขืกื˜ื™ื ื’

ืื™ืŸ ื“ืขื ืคึผืจืึธืฆืขืก ืคื•ืŸ ื“ืขื•ื•ืขืœืึธืคึผื™ื ื’ ืื•ืŸ ื˜ืขืกื˜ื™ื ื’ ื“ื™ SV, ืžื™ืจ ื’ืขืคึฟื•ื ืขืŸ ืึท ื ื•ืžืขืจ ืคื•ืŸ ื˜ืฉื™ืงืึทื•ื•ืข ืคึฟืขื™ึดืงื™ื™ื˜ืŸ ืคื•ืŸ ื“ื™ ืคึผืจืึธื“ื•ืงื˜ืŸ ื•ื•ืึธืก ืžื™ืจ ื ื•ืฆืŸ.

ืžืึทืกืข ื˜ืขืกื˜ื™ื ื’ ืื•ืŸ ื–ื›ึผืจื•ืŸ ืœื™ืงืก

ื“ื™ ืžืขืœื“ื•ื ื’ ืคื•ืŸ ื™ืขื“ืขืจ SV ืžืขืœื“ื•ื ื’ ื™ื ื•ื•ืึทืœื•ื•ื– ืžืึทืกืข ื˜ืขืกื˜ื™ื ื’. ืขืก ืื™ื– ืžืฆืœื™ื— ื•ื•ืขืŸ:

  • ื“ื™ ืคึผืจืึธื‘ืข ื’ืขืืจื‘ืขื˜ ืคึฟืึทืจ ืขื˜ืœืขื›ืข ื˜ืขื’ ืื•ืŸ ืขืก ื–ืขื ืขืŸ ื’ืขื•ื•ืขืŸ ืงื™ื™ืŸ ืกืขืจื•ื•ื™ืก ืคื™ื™ืœื™ืขืจื–
  • ืขื ื˜ืคืขืจ ืฆื™ื™ื˜ ืคึฟืึทืจ ืฉืœื™ืกืœ ืึทืคึผืขืจื™ื™ืฉืึทื ื– ื”ืื˜ ื ื™ืฉื˜ ื™ืงืกื™ื“ ืึท ื‘ืึทืงื•ื•ืขื ืฉื•ื•ืขืœ
  • ืคืึธืจืฉื˜ืขืœื•ื ื’ ื“ื™ื˜ื™ืจื™ืขืจื™ื™ืฉืึทืŸ ืงืึทืžืคึผืขืจื“ ืฆื• ื“ื™ ืคืจื™ืขืจื“ื™ืงืข ื•ื•ืขืจืกื™ืข ืื™ื– ื ื™ื˜ ืžืขืจ ื•ื•ื™ 10%

ืžื™ืจ ืคึผืœืึธืžื‘ื™ืจืŸ ื“ื™ ืคึผืจืึธื‘ืข ื“ืึทื˜ืึทื‘ื™ื™ืก ืžื™ื˜ ื“ืึทื˜ืŸ - ืฆื• ื˜ืึธืŸ ื“ืึธืก, ืžื™ืจ ื‘ืึทืงื•ืžืขืŸ ืื™ื ืคึฟืึธืจืžืึทืฆื™ืข ื•ื•ืขื’ืŸ ื“ื™ ืžืขืจืกื˜ ืึทืงื˜ื™ื•ื• ืึทื‘ืึธื ืขื ื˜ ืคื•ืŸ ื“ื™ ืคึผืจืึธื“ื•ืงืฆื™ืข ืกืขืจื•ื•ืขืจ, ืžืขืจืŸ ื“ื™ ื ื•ืžืขืจืŸ ืžื™ื˜ 5 (ื“ื™ ื ื•ืžืขืจ ืคื•ืŸ ืึทืจื˜ื™ืงืœืขืŸ, ื“ื™ืกืงื•ืกื™ืขืก, ื ื™ืฆืขืจืก) ืื•ืŸ ืคึผืจื•ื‘ื™ืจืŸ ืขืก ืึทื–ื•ื™.

ืžื™ืจ ื“ื•ืจื›ืคื™ืจืŸ ืžืึทืกืข ื˜ืขืกื˜ื™ื ื’ ืคื•ืŸ ื“ื™ ื™ื ื˜ืขืจืึทืงืฉืึทืŸ ืกื™ืกื˜ืขื ืื™ืŸ ื“ืจื™ื™ ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทื ื–:

  1. ื“ืจื•ืง ืคึผืจื•ื‘ื™ืจืŸ
  2. ื‘ืœื•ื™ื– ืงืึทื ืขืงืฉืึทื ื–
  3. ืึทื‘ืึธื ืขื ื˜ ืจืขื’ื™ืกื˜ืจืึทืฆื™ืข

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

ืคึฟืึทืจ ื‘ื™ื™ึทืฉืคึผื™ืœ, ื“ืึธืก ืื™ื– ื•ื•ืึธืก ื˜ื™ื™ืœ ืคื•ืŸ ื“ื™ ื“ืจื•ืง ืคึผืจื•ื‘ื™ืจืŸ ืงื•ืงื˜ ื•ื•ื™:

  • ื‘ืึทื ื™ืฆืขืจ ืœืึธื’ืก ืื™ืŸ
    • ืจื™ืงื•ื•ืขืก ื“ื™ื™ืŸ ืึทื ืจื™ื“ ื“ื™ืกืงื•ืกื™ืขืก
    • 50% ืžืกืชึผืžื ืฆื• ืœื™ื™ืขื ืขืŸ ืึทืจื˜ื™ืงืœืขืŸ
    • 50% ืžืกืชึผืžื ืฆื• ื˜ืขืงืกื˜
    • ื•ื•ื™ื™ึทื˜ืขืจ ื‘ืึทื ื™ืฆืขืจ:
      • ื”ืื˜ ืึท 20% ื’ืขืœืขื’ื ื”ื™ื™ึทื˜ ืฆื• ืฉืึทืคึฟืŸ ืึท ื ื™ื™ึทืข ื“ื™ืกืงื•ืกื™ืข
      • ืจืึทื ื“ืึทืžืœื™ ืกืึทืœืขืงืฅ ืงื™ื™ืŸ ืคื•ืŸ ื–ื™ื™ึทืŸ ื“ื™ืกืงื•ืกื™ืขืก
      • ื’ื™ื™ื˜ ืื™ื ืขื•ื•ื™ื™ื ื™ื’
      • ืจื™ืงื•ื•ืขืก ืึทืจื˜ื™ืงืœืขืŸ, ื‘ืึทื ื™ืฆืขืจ ืคึผืจืึธื•ืคื™ื™ืœื–
      • ืงืจื™ื™ื™ืฅ ืคื™ื ืฃ ืึทืจื˜ื™ืงืœืขืŸ ื•ื•ืขื ื“ื˜ ืฆื• ื˜ืจืึทืค ื ื™ืฆืขืจืก ืคื•ืŸ ื“ืขื ื“ื™ืกืงื•ืกื™ืข
      • ื‘ืœืขื˜ืขืจ ื“ื™ืกืงื•ืกื™ืข
      • ืจื™ืคึผื™ืฅ 20 ืžืืœ
      • ืœืึธื’ืก ืื•ื™ืก, ื’ื™ื™ื˜ ืฆื•ืจื™ืง ืฆื• ื“ื™ ืึธื ื”ื™ื™ื‘ ืคื•ืŸ ื“ื™ ืฉืจื™ืคื˜

    • ื ื˜ืฉืึทื˜ื‘ืึธื˜ ื’ื™ื™ื˜ ืืจื™ื™ืŸ ื“ื™ ืกื™ืกื˜ืขื (ืขืžื™ืึทืœื™ื™ืฅ ืžืขืกื™ื“ื–ืฉื™ื ื’ ืคื•ืŸ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืงืึธื“)
      • ื”ืื˜ ืึท 50% ื’ืขืœืขื’ื ื”ื™ื™ื˜ ืฆื• ืฉืึทืคึฟืŸ ืึท ื ื™ื™ึทืข ืงืึทื ืึทืœ ืคึฟืึทืจ ื“ืึทื˜ืŸ ื•ื•ืขืงืกืœ (ืกืคึผืขืฆื™ืขืœ ื“ื™ืกืงื•ืกื™ืข)
      • 50% ืžืกืชึผืžื ืฆื• ืฉืจื™ื™ึทื‘ืŸ ืึท ืึธื ื–ืึธื’ ืฆื• ืงื™ื™ืŸ ืคื•ืŸ ื“ื™ ื™ื’ื–ื™ืกื˜ื™ื ื’ ื˜ืฉืึทื ืึทืœื–

ื“ื™ "ื‘ืœื•ื™ื– ืงืึทื ืขืงืฉืึทื ื–" ืกืฆืขื ืึทืจ ืื™ื– ืืจื•ื™ืก ืคึฟืึทืจ ืึท ืกื™ื‘ื”. ืขืก ืื™ื– ืึท ืกื™ื˜ื•ืึทืฆื™ืข: ื™ื•ื–ืขืจื– ื”ืึธื‘ืŸ ืงืึธื ื ืขืงื˜ืขื“ ื“ื™ ืกื™ืกื˜ืขื, ืึธื‘ืขืจ ื”ืึธื‘ืŸ ื ื™ืฉื˜ ื ืึธืš ื‘ืึทืงื•ืžืขืŸ ื™ื ื•ื•ืึทืœื•ื•ื“. ื™ืขื“ืขืจ ื‘ืึทื ื™ืฆืขืจ ื•ื•ืขื ื“ืŸ ืื•ื™ืฃ ื“ื™ ืงืึธืžืคึผื™ื•ื˜ืขืจ ื‘ื™ื™ึท 09:00 ืื™ืŸ ื“ืขืจ ืžืึธืจื’ืŸ, ื’ืจื™ื ื“ืŸ ืึท ืงืฉืจ ืฆื• ื“ื™ ืกืขืจื•ื•ืขืจ ืื•ืŸ ื‘ืœื™ื™ื‘ื˜ ืฉื˜ื™ืœ. ื“ื™ ื’ื™ื™ื– ื–ืขื ืขืŸ ื’ืขืคืขืจืœืขืš, ืขืก ื–ืขื ืขืŸ ืคื™ืœืข ืคื•ืŸ โ€‹โ€‹โ€‹โ€‹ื–ื™ื™ - ื“ื™ ื‘ืœื•ื™ื– ืคึผืึทืงืึทื“ื–ืฉืึทื– ื–ื™ื™ ื”ืึธื‘ืŸ ื–ืขื ืขืŸ PING / PONG, ืึธื‘ืขืจ ื–ื™ื™ ื”ืึทืœื˜ืŸ ื“ื™ ืงืฉืจ ืฆื• ื“ื™ ืกืขืจื•ื•ืขืจ (ื–ื™ื™ ืงืขื ืขืŸ ื ื™ืฉื˜ ื”ืึทืœื˜ืŸ ืขืก ืึทืจื•ื™ืฃ - ื•ื•ืึธืก ืื•ื™ื‘ ืขืก ืื™ื– ืึท ื ื™ื™ึทืข ืึธื ื–ืึธื’). ื“ืขืจ ืคึผืจืึธื‘ืข ืจืขืคึผืจืึธื“ื•ืฆื™ืจืŸ ืึท ืกื™ื˜ื•ืึทืฆื™ืข ื•ื•ื• ืึท ื’ืจื•ื™ืก ื ื•ืžืขืจ ืคื•ืŸ ืึทื–ืึท ื ื™ืฆืขืจืก ืคึผืจื•ื‘ื™ืจืŸ ืฆื• ืงืœืึธืฅ ืื™ืŸ ืฆื• ื“ื™ ืกื™ืกื˜ืขื ืื™ืŸ ืึท ื”ืึทืœื‘ ืฉืขื”. ืขืก ืื™ื– ืขื ืœืขืš ืฆื• ืึท ื“ืจื•ืง ืคึผืจื•ื‘ื™ืจืŸ, ืึธื‘ืขืจ ื–ื™ื™ึทืŸ ืคืึธืงื•ืก ืื™ื– ืคึผื•ื ืงื˜ ืื•ื™ืฃ ื“ืขื ืขืจืฉื˜ืขืจ ืึทืจื™ื™ึทื ืฉืจื™ื™ึทื‘ - ืึทื–ื•ื™ ืึทื– ืขืก ื–ืขื ืขืŸ ืงื™ื™ืŸ ืคื™ื™ืœื™ืขืจื– (ืึท ืžืขื ื˜ืฉ ื˜ื•ื˜ ื ื™ืฉื˜ ื ื•ืฆืŸ ื“ื™ ืกื™ืกื˜ืขื, ืื•ืŸ ืขืก ืื™ื– ืฉื•ื™ืŸ ืึทืจืึธืคึผ - ืขืก ืื™ื– ืฉื•ื•ืขืจ ืฆื• ื˜ืจืึทื›ื˜ืŸ ืคื•ืŸ ืขืคึผืขืก ืขืจื’ืขืจ).

ื“ื™ ืึทื‘ืึธื ืขื ื˜ ืจืขื’ื™ืกื˜ืจืึทืฆื™ืข ืฉืจื™ืคื˜ ืกื˜ืึทืจืฅ ืคื•ืŸ ื“ืขืจ ืขืจืฉื˜ืขืจ ืงืึทื˜ืขืจ. ืžื™ืจ ื”ืึธื‘ืŸ ื“ื•ืจื›ื’ืขืงืึธื›ื˜ ืึท ื“ืจื•ืง ืคึผืจืึธื‘ืข ืื•ืŸ ื’ืขื•ื•ืขืŸ ื–ื™ื›ืขืจ ืึทื– ื“ื™ ืกื™ืกื˜ืขื ืื™ื– ื ื™ืฉื˜ ืคึผืึทืžืขืœืขืš ื‘ืขืฉืึทืก ืงืึธืจืขืกืคึผืึธื ื“ืขื ืฅ. ืื‘ืขืจ ื™ื•ื–ืขืจื– ื’ืขืงื•ืžืขืŸ ืื•ืŸ ื“ื™ ืจืขื’ื™ืกื˜ืจืึทืฆื™ืข ืื ื’ืขื”ื•ื™ื‘ืŸ ืฆื• ืคืึทืจืœืึธื–ืŸ ืจืขื›ื˜ ืฆื• ืึท ื˜ื™ื™ืžืึทื•ื˜. ื•ื•ืขืŸ ืจืขื“ื–ืฉื™ืกื˜ืขืจื™ื ื’ ืžื™ืจ ื’ืขื•ื•ื™ื™ื ื˜ / ื“ืขื•ื• / ื˜ืจืึทืค, ื•ื•ืึธืก ืื™ื– ืฉื™ื™ึทื›ื•ืช ืฆื• ื“ื™ ืขื ื˜ืจืึธืคึผื™ืข ืคื•ืŸ โ€‹โ€‹ื“ื™ ืกื™ืกื˜ืขื. ื“ืขืจ ืกืขืจื•ื•ืขืจ ื”ืื˜ ื ื™ืฉื˜ ื”ืึธื‘ืŸ ืฆื™ื™ื˜ ืฆื• ืึธื ืงืœื™ื™ึทื‘ืŸ ื’ืขื ื•ื’ ืขื ื˜ืจืึธืคึผื™ ืื•ืŸ ื•ื•ืขืŸ ืึท ื ื™ื™ึทืข ืกืขืงื•ืจืึทื ื“ืึธื ืื™ื– ื’ืขื•ื•ืขืŸ ื’ืขื‘ืขื˜ืŸ, ืขืก ืคืจืึธื–ืข ืคึฟืึทืจ ื˜ืขื ืก ืคื•ืŸ ืกืขืงื•ื ื“ืขืก. ืขืก ื–ืขื ืขืŸ ืคื™ืœืข ื•ื•ืขื’ืŸ ืื•ื™ืก ืคื•ืŸ ื“ืขื ืกื™ื˜ื•ืึทืฆื™ืข, ืคึฟืึทืจ ื‘ื™ื™ึทืฉืคึผื™ืœ: ื‘ืึทืฉื˜ื™ืžืขืŸ ืฆื• ื“ื™ ื•ื•ื™ื™ื ื™ืงืขืจ ื–ื™ื›ืขืจ /dev/urandom, ื™ื ืกื˜ืึทืœื™ืจืŸ ืึท ืกืคึผืขืฆื™ืขืœ ื‘ืจืขื˜ ื•ื•ืึธืก ื“ื–ืฉืขื ืขืจื™ื™ืฅ ืขื ื˜ืจืึธืคึผื™, ื“ื–ืฉืขื ืขืจื™ื™ื˜ ื˜ืจืึทืค ื ื•ืžืขืจืŸ ืื™ืŸ ืฉื˜ื™ื™ึทื’ืŸ ืื•ืŸ ืงืจืึธื ื–ื™ื™ ืื™ืŸ ืึท ื‘ืขืงืŸ. ืžื™ืจ ื”ืึธื‘ืŸ ื˜ืขืžืคึผืขืจืขืจืึทืœื™ ืคึฟืึทืจืžืึทื›ื˜ ื“ืขื ืคึผืจืึธื‘ืœืขื ืžื™ื˜ ื“ื™ ื‘ืขืงืŸ, ืึธื‘ืขืจ ื–ื™ื ื˜ ื“ืขืžืึธืœื˜ ืžื™ืจ ื”ืึธื‘ืŸ ื“ื•ืจื›ื’ืขืงืึธื›ื˜ ืึท ื‘ืึทื–ื•ื ื“ืขืจ ืคึผืจืึธื‘ืข ืคึฟืึทืจ ืจืขื“ื–ืฉื™ืกื˜ืขืจื™ื ื’ ื ื™ื™ึทืข ืื‘ืื ืขื ื˜ืŸ.

ืžื™ืจ ื ื•ืฆืŸ ื•ื•ื™ ืึท ืžืึทืกืข ื’ืขื ืขืจืึทื˜ืึธืจ ื“ื–ืฉืžืขื˜ืขืจ. ืขืก ืงืขืŸ ื ื™ืฉื˜ ืึทืจื‘ืขื˜ืŸ ืžื™ื˜ ื•ื•ืขื‘ืกืึธืงืงืขื˜; ืขืก ื“ืึทืจืฃ ืึท ืคึผืœื•ื’ื™ืŸ. ื“ืขืจ ืขืจืฉื˜ืขืจ ืื™ืŸ ื–ื•ื›ืŸ ืจืขื–ื•ืœื˜ืึทื˜ืŸ ืคึฟืึทืจ ื“ื™ ืึธื ืคึฟืจืขื’ "jmeter websocket" ื–ืขื ืขืŸ: ืึทืจื˜ื™ืงืœืขืŸ ืคึฟื•ืŸ BlazeMeter, ื•ื•ืึธืก ืจืขืงืึธืžืขื ื“ื™ืจืŸ ืคึผืœื•ื’ื™ืŸ ื“ื•ืจืš Maciej Zaleski.

ื“ื ื”ืื‘ืŸ ืžื™ืจ ื‘ืืฉืœืืกืŸ ืื ืฆื•ื”ื™ื™ื‘ืŸ.

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

ื“ืขืจ ืคึผืœื•ื’ื™ืŸ ืื™ื– ืึท ื‘ืึทื–ื•ื ื“ืขืจ ื’ืจื•ื™ืก ื’ืขืฉื™ื›ื˜ืข; ืžื™ื˜ 176 ืฉื˜ืขืจืŸ, ืขืก ื”ืื˜ 132 ืคืึธืจืงืก ืื•ื™ืฃ ื’ื™ื˜ื”ื•ื‘. ื“ืขืจ ืžื—ื‘ืจ ื–ื™ืš ื”ืื˜ ื ื™ืฉื˜ ื‘ืื’ืื ื’ืขืŸ ืฆื• ืขืก ื–ื™ื ื˜ 2015 (ืžื™ืจ ื’ืขื ื•ืžืขืŸ ืขืก ืื™ืŸ 2015, ื“ืขืžืึธืœื˜ ืขืก ื”ืื˜ ื ื™ืฉื˜ ื›ืึทืคึผืŸ ืกืึทืกืคึผื™ืฉืึทื ื–), ืขื˜ืœืขื›ืข ื’ื™ื˜ื”ื•ื‘ ื™ืฉื•ื– ื•ื•ืขื’ืŸ ื–ื›ึผืจื•ืŸ ืœื™ืงืก, 7 ืึทื ืงืœืึธื•ื–ื“ ืฆื™ืขืŸ ืจื™ืงื•ื•ืขืก.
ืื•ื™ื‘ ืื™ืจ ื‘ืึทืฉืœื™ืกืŸ ืฆื• ื“ื•ืจื›ืคื™ืจืŸ ืžืึทืกืข ื˜ืขืกื˜ื™ื ื’ ืžื™ื˜ ื“ืขื ืคึผืœื•ื’ื™ืŸ, ื‘ื™ื˜ืข ื‘ืึทืฆืึธืœืŸ ื•ืคืžืขืจืงื–ืึทืžืงื™ื™ึทื˜ ืฆื• ื“ื™ ืคืืœื’ืขื ื“ืข ื“ื™ืกืงื•ืกื™ืขืก:

  1. ืื™ืŸ ืึท ืžืึทืœื˜ื™-ื˜ืจืขื“ื™ื“ ืกื•ื•ื™ื•ื•ืข, ืึท ืจืขื’ื•ืœืขืจ ืœื™ื ืงืขื“ืœื™ืกื˜ ืื™ื– ื’ืขื ื™ืฆื˜, ืื•ืŸ ื“ืขืจ ืจืขื–ื•ืœื˜ืึทื˜ ืื™ื– ื’ืขื•ื•ืขืŸ ื ืคึผืข ืื™ืŸ ืจื•ื ื˜ื™ืžืข. ื“ืขื ืงืขื ืขืŸ ื–ื™ื™ืŸ ืกืึทืœื•ื•ื“ ืึธื“ืขืจ ื“ื•ืจืš ืกื•ื•ื™ื˜ืฉื™ื ื’ ืฆื• ConcurrentLinkedDeque ืึธื“ืขืจ ื“ื•ืจืš ืกื™ื ื’ืงืจืึทื ื™ื™ื–ื“ ื‘ืœืึทืงืก. ืžื™ืจ ืื•ื™ืกื“ืขืจื•ื•ื™ื™ืœื˜ ื“ืขืจ ืขืจืฉื˜ืขืจ ืึธืคึผืฆื™ืข ืคึฟืึทืจ ื–ื™ืš (https://github.com/maciejzaleski/JMeter-WebSocketSampler/issues/43).
  2. ื–ื›ึผืจื•ืŸ ืจื™ื ืขืŸ; ื•ื•ืขืŸ ื“ื™ืกืงืึทื ืขืงื˜ื™ื ื’, ืงืฉืจ ืื™ื ืคึฟืึธืจืžืึทืฆื™ืข ืื™ื– ื ื™ืฉื˜ ืื•ื™ืกื’ืขืžืขืงื˜ (https://github.com/maciejzaleski/JMeter-WebSocketSampler/issues/44).
  3. ืื™ืŸ ืกื˜ืจื™ืžื™ื ื’ ืžืึธื“ืข (ื•ื•ืขืŸ ื“ื™ ื•ื•ืขื‘ืกืึธืงืงืขื˜ ืื™ื– ื ื™ืฉื˜ ืคืืจืžืื›ื˜ ืื™ืŸ ื“ื™ ืกื•ืฃ ืคื•ืŸ ื“ื™ ืžื•ืกื˜ืขืจ, ืึธื‘ืขืจ ืื™ื– ื’ืขื ื™ืฆื˜ ืฉืคึผืขื˜ืขืจ ืื™ืŸ ื“ืขื ืคึผืœืึทืŸ), ืขื ื˜ืคืขืจ ืคึผืึทื˜ืขืจื ื– ื˜ืึธืŸ ื ื™ื˜ ืึทืจื‘ืขื˜ (https://github.com/maciejzaleski/JMeter-WebSocketSampler/issues/19).

ื“ืึธืก ืื™ื– ืื™ื™ื ืขืจ ืคื•ืŸ ื“ื™ ืื•ื™ืฃ ื’ื™ื˜ื”ื•ื‘. ื•ื•ืึธืก ืžื™ืจ ื”ืึธื‘ืŸ ื’ืขื˜ืืŸ:

  1. ื”ืึธื‘ืŸ ื’ืขื ื•ืžืขืŸ ื’ืึธืคึผืœ ืขืœื™ืจืŸ ืงืึธื’ืึทืŸ (@elyrank) - ืขืก ืคื™ืงืกื™ื– ืคึผืจืึธื‘ืœืขืžืก 1 ืื•ืŸ 3
  2. ืกืึทืœื•ื•ื“ ืคึผืจืึธื‘ืœืขื 2
  3. ื“ืขืจื”ื™ื™ึทื ื˜ื™ืงื˜ ื“ื–ืฉืขื˜ื™ ืคื•ืŸ 9.2.14 ืฆื• 9.3.12
  4. ืืœื ื’ืขื•ื•ื™ืงืœื˜ SimpleDateFormat ืื™ืŸ ThreadLocal; SimpleDateFormat ืื™ื– ื ื™ืฉื˜ ืคืึธื“ืขื-ื–ื™ื›ืขืจ, ื•ื•ืึธืก ื’ืขืคื™ืจื˜ ืฆื• NPE ืื™ืŸ ืจื•ื ื˜ื™ืžืข
  5. ืคืึทืจืคืขืกื˜ื™ืงื˜ ืืŸ ืื ื“ืขืจ ื–ื›ึผืจื•ืŸ ืจื™ื ืขืŸ (ื“ื™ ืงืฉืจ ืื™ื– ื’ืขื•ื•ืขืŸ ืคืึทืœืฉ ืคืืจืžืื›ื˜ ื•ื•ืขืŸ ื“ื™ืกืงืึทื ืขืงื˜ื™ื“)

ืื•ืŸ ื ืึธืš ืขืก ืคืœืึธื•ื–!

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

ืฆื•ื•ื™ื™ ื˜ืขื’ ื–ืขื ืขืŸ ื“ื•ืจื›ื’ืขื’ืื ื’ืขืŸ ...

ืื™ืฆื˜ Hazelcast ืื™ื– ืคืœื™ืกื ื“ื™ืง ืื•ื™ืก ืคื•ืŸ ื–ื›ึผืจื•ืŸ. ื“ื™ ืœืึธื’ืก ื”ืึธื‘ืŸ ื’ืขื•ื•ื™ื–ืŸ ืึทื– ื ืึธืš ืึท ืคึผืึธืจ ืคื•ืŸ ื˜ืขื’ ืคื•ืŸ ื˜ืขืกื˜ื™ื ื’, ื”ืึทื–ืขืœืงืึทืกื˜ ืื ื’ืขื”ื•ื™ื‘ืŸ ืฆื• ื‘ืึทืงืœืึธื’ื  ื–ื™ืš ื•ื•ืขื’ืŸ ืึท ืคืขืœืŸ ืคื•ืŸ ื–ื›ึผืจื•ืŸ, ืื•ืŸ ื ืึธืš ืขื˜ืœืขื›ืข ืžืึธืœ ื“ื™ ืงื ื•ื™ืœ ืื™ื– ืฆืขืคืึทืœืŸ, ืื•ืŸ ื“ื™ ื ืึธื•ื“ื– ืคืึธืจื–ืขืฆืŸ ืฆื• ืฉื˜ืึทืจื‘ืŸ ืื™ื™ื ืขืจ ื“ื•ืจืš ืื™ื™ื ืขืจ. ืžื™ืจ ืงืึธื ื ืขืงื˜ืขื“ JVisualVM ืฆื• ื”ืึทื–ืขืœืงืึทืกื˜ ืื•ืŸ ื’ืขื–ืขืŸ ืึท "ืจื™ื™ื–ื™ื ื’ ื’ืขื–ืขืŸ" - ืขืก ืงืขืกื™ื™ื“ืขืจ ื’ืขืจื•ืคืŸ ื“ื™ GC, ืึธื‘ืขืจ ืงืขืŸ ื ื™ืฉื˜ ื•ื™ืกืžืขืงืŸ ื“ื™ ื–ื›ึผืจื•ืŸ.

ื•ื•ื™ ืื•ืŸ ื•ื•ืึธืก ืžื™ืจ ื’ืขืฉืจื™ื‘ืŸ ืึท ื”ื•ื™ืš-ืžืึทืกืข ืกืงืึทืœืึทื‘ืœืข ื“ื™ื ืกื˜ ืคึฟืึทืจ 1C: ืคืึทืจื ืขืžื•ื ื’: Java, PostgreSQL, Hazelcast

ืขืก ืคืืจืงืขืจื˜ ืื•ื™ืก ืึทื– ืื™ืŸ Hazelcast 3.4, ื•ื•ืขืŸ ื“ื™ืœื™ื˜ื™ื ื’ ืึท ืžืึทืคึผืข / ืžื•ืœื˜ื™ืžืึทืคึผ (map.destroy()), ื–ื›ึผืจื•ืŸ ืื™ื– ื ื™ืฉื˜ ื’ืึธืจ ืคืจื™ื™:

github.com/hazelcast/hazelcast/issues/6317
github.com/hazelcast/hazelcast/issues/4888

ื“ืขืจ ื–ืฉื•ืง ืื™ื– ืื™ืฆื˜ ืคืึทืจืคืขืกื˜ื™ืงื˜ ืื™ืŸ 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());
}

ื“ื™ ื˜ืฉืึทืจืฅ ื”ืึธื‘ืŸ ื™ืžืคึผืจื•ื•ื•ื“.

ื•ื•ื™ ืื•ืŸ ื•ื•ืึธืก ืžื™ืจ ื’ืขืฉืจื™ื‘ืŸ ืึท ื”ื•ื™ืš-ืžืึทืกืข ืกืงืึทืœืึทื‘ืœืข ื“ื™ื ืกื˜ ืคึฟืึทืจ 1C: ืคืึทืจื ืขืžื•ื ื’: Java, PostgreSQL, Hazelcast

ื•ื•ืึธืก ืึทื ื“ืขืจืฉ ื”ืึธื‘ืŸ ืžื™ืจ ื’ืขืœืขืจื ื˜ ื•ื•ืขื’ืŸ ืžืึทืกืข ื˜ืขืกื˜ื™ื ื’?

  1. JSR223 ื“ืึทืจืฃ ื–ื™ื™ืŸ ื’ืขืฉืจื™ื‘ืŸ ืื™ืŸ ื’ืจื•ื•ื•ื™ ืื•ืŸ ืึทืจื™ื™ึทื ื ืขืžืขืŸ ื–ืึทืžืœื•ื ื’ ืงืึทืฉ - ืขืก ืื™ื– ืคื™ืœ ืคืึทืกื˜ืขืจ. ืจื•ื ื’.
  2. 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.

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

github.com/noctarius/snowcast
github.com/twitter/snowflake

ืื‘ืขืจ ืžื™ืจ ื”ืึธื‘ืŸ ื ื™ื˜ ื‘ืึทืงื•ืžืขืŸ ืึทืจื•ื ืขืก ืขื ื™ืžืึธืจ.

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

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