αžšαž”αŸ€αž” αž“αž·αž„αž˜αžΌαž›αž αŸαžαž»αžŠαŸ‚αž›αž™αžΎαž„αžŸαžšαžŸαŸαžšαžŸαŸαžœαžΆαž€αž˜αŸ’αž˜αžŠαŸ‚αž›αž’αžΆαž…αž’αŸ’αžœαžΎαž˜αžΆαžαŸ’αžšαžŠαŸ’αž‹αžΆαž“αž”αžΆαž“αžαŸ’αž–αžŸαŸ‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ 1C: αžŸαž αž‚αŸ’αžšαžΆαžŸαŸ– Java, PostgreSQL, Hazelcast

αž“αŸ…αž€αŸ’αž“αž»αž„αž’αžαŸ’αžαž”αž‘αž“αŸαŸ‡ αž™αžΎαž„αž“αžΉαž„αž“αž·αž™αžΆαž™αž’αŸ†αž–αžΈαžšαž”αŸ€αž” αž“αž·αž„αž˜αžΌαž›αž αŸαžαž»αžŠαŸ‚αž›αž™αžΎαž„αž’αž—αž·αžœαžŒαŸ’αž αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž’αž“αŸ’αžαžšαž€αž˜αŸ’αž˜ - αž™αž“αŸ’αžαž€αžΆαžšαžŠαŸ‚αž›αž•αŸ’αž‘αŸαžšαž–αŸαžαŸŒαž˜αžΆαž“αžšαžœαžΆαž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž’αžαž·αžαž·αž‡αž“ αž“αž·αž„ 1C: αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαžŸαž αž‚αŸ’αžšαžΆαžŸ - αž–αžΈαž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αž—αžΆαžšαž€αž·αž…αŸ’αž…αžšαž αžΌαžαžŠαž›αŸ‹αž€αžΆαžšαž‚αž·αžαžαžΆαž˜αžšαž™αŸˆαžŸαŸ’αžαžΆαž”αžαŸ’αž™αž€αž˜αŸ’αž˜ αž“αž·αž„αž–αŸαžαŸŒαž˜αžΆαž“αž›αž˜αŸ’αž’αž·αžαž“αŸƒαž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαŸ”

αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž’αž“αŸ’αžαžšαž€αž˜αŸ’αž˜ (αžαž‘αŸ…αž“αŸαŸ‡αž αŸ…αžαžΆ SV) αž‚αžΊαž‡αžΆαž”αŸ’αžšαž–αŸαž“αŸ’αž’αž•αŸ’αž‰αžΎαžŸαžΆαžšαžŠαŸ‚αž›αž…αŸ‚αž€αž…αžΆαž™ αž“αž·αž„αž’αžαŸ‹αž±αž“αž…αŸ†αž–αŸ„αŸ‡αž€αŸ†αž αž»αžŸαž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αžΆαžšαž•αŸ’αžαž›αŸ‹αž€αžΆαžšαž’αžΆαž“αžΆαŸ” SV αžαŸ’αžšαžΌαžœαž”αžΆαž“αžšαž…αž“αžΆαž‘αžΎαž„αž‡αžΆαžŸαŸαžœαžΆαž€αž˜αŸ’αž˜αž•αŸ’αž‘αž»αž€αžαŸ’αž–αžŸαŸ‹ αž‡αžΆαž˜αž½αž™αž“αžΉαž„αžŸαž˜αžαŸ’αžαž—αžΆαž–αž’αŸ’αžœαžΎαž˜αžΆαžαŸ’αžšαžŠαŸ’αž‹αžΆαž“αžαŸ’αž–αžŸαŸ‹ αž’αžΆαž…αž”αŸ’αžšαžΎαž”αžΆαž“αž‘αžΆαŸ†αž„αžŸαŸαžœαžΆαž€αž˜αŸ’αž˜αž’αž“αž‘αžΆαž‰ (αž•αŸ’αžαž›αŸ‹αžŠαŸ„αž™ 1C) αž“αž·αž„αž‡αžΆαž•αž›αž·αžαž•αž›αžŠαŸ‚αž›αž•αž›αž·αžαž™αŸ‰αžΆαž„αž…αŸ’αžšαžΎαž“ αžŠαŸ‚αž›αž’αžΆαž…αžŠαžΆαž€αŸ‹αž±αŸ’αž™αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž“αŸ…αž›αžΎαž§αž”αž€αžšαžŽαŸαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαž•αŸ’αž‘αžΆαž›αŸ‹αžαŸ’αž›αž½αž“αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αŸ”

SV αž”αŸ’αžšαžΎαž‘αŸ†αž αŸ†αž•αŸ’αž‘αž»αž€αžŠαŸ‚αž›αž”αžΆαž“αž…αŸ‚αž€αž…αžΆαž™ αž αžΆαž αŸ’αžŸαŸ‚αž› αž“αž·αž„αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αžŸαŸ’αžœαŸ‚αž„αžšαž€ Elasticsearch. αž™αžΎαž„αž€αŸαž“αžΉαž„αž“αž·αž™αžΆαž™αž’αŸ†αž–αžΈ Java αž“αž·αž„αžšαž”αŸ€αž”αžŠαŸ‚αž›αž™αžΎαž„αž’αŸ’αžœαžΎαž˜αžΆαžαŸ’αžšαžŠαŸ’αž‹αžΆαž“αž•αŸ’αžŠαŸαž€ PostgreSQL αŸ”
αžšαž”αŸ€αž” αž“αž·αž„αž˜αžΌαž›αž αŸαžαž»αžŠαŸ‚αž›αž™αžΎαž„αžŸαžšαžŸαŸαžšαžŸαŸαžœαžΆαž€αž˜αŸ’αž˜αžŠαŸ‚αž›αž’αžΆαž…αž’αŸ’αžœαžΎαž˜αžΆαžαŸ’αžšαžŠαŸ’αž‹αžΆαž“αž”αžΆαž“αžαŸ’αž–αžŸαŸ‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ 1C: αžŸαž αž‚αŸ’αžšαžΆαžŸαŸ– Java, PostgreSQL, Hazelcast

αž€αžΆαžšαž”αž„αŸ’αž€αžΎαžαž”αž‰αŸ’αž αžΆ

αžŠαžΎαž˜αŸ’αž”αžΈαž”αž‰αŸ’αž‡αžΆαž€αŸ‹αž±αŸ’αž™αž…αŸ’αž”αžΆαžŸαŸ‹αžαžΆαž αŸαžαž»αž’αŸ’αžœαžΈαž”αžΆαž“αž‡αžΆαž™αžΎαž„αž”αž„αŸ’αž€αžΎαžαž”αŸ’αžšαž–αŸαž“αŸ’αž’αž’αž“αŸ’αžαžšαž€αž˜αŸ’αž˜ αžαŸ’αž‰αž»αŸ†αž“αžΉαž„αž”αŸ’αžšαžΆαž”αŸ‹αž’αŸ’αž“αž€αž”αž“αŸ’αžαž·αž…αž’αŸ†αž–αžΈαžšαž”αŸ€αž”αžŠαŸ‚αž›αž€αžΆαžšαž’αž—αž·αžœαžŒαŸ’αžαž“αŸαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž’αžΆαž‡αžΈαžœαž€αž˜αŸ’αž˜αž“αŸ…αž€αŸ’αž“αž»αž„ 1C αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαŸ”

αžŠαžΎαž˜αŸ’αž”αžΈαž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž‡αžΆαž˜αž½αž™αž™αžΎαž„αž”αž“αŸ’αžαž·αž…αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αŸ’αž“αž€αžŠαŸ‚αž›αž˜αž·αž“αž‘αžΆαž“αŸ‹αžŠαžΉαž„αžαžΆαž™αžΎαž„αž’αŸ’αžœαžΎαž’αŸ’αžœαžΈ :) αž™αžΎαž„αž€αŸ†αž–αž»αž„αž”αž„αŸ’αž€αžΎαžαžœαŸαž‘αž·αž€αžΆαž”αž…αŸ’αž…αŸαž€αžœαž·αž‘αŸ’αž™αžΆ 1C: αžŸαž αž‚αŸ’αžšαžΆαžŸαŸ” αžœαŸαž‘αž·αž€αžΆαž“αŸαŸ‡αžšαž½αž˜αž”αž‰αŸ’αž…αžΌαž›αž§αž”αž€αžšαžŽαŸαž’αž—αž·αžœαžŒαŸ’αžαž“αŸαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž’αžΆαž‡αžΈαžœαž€αž˜αŸ’αž˜ αž€αŸαžŠαžΌαž…αž‡αžΆαžšαž™αŸˆαž–αŸαž›αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŠαŸ‚αž›αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž’αžΆαž‡αžΈαžœαž€αž˜αŸ’αž˜αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αŸ’αž“αž»αž„αž”αžšαž·αž™αžΆαž€αžΆαžŸαž†αŸ’αž›αž„αžœαŸαž‘αž·αž€αžΆαŸ”

αž‚αŸ†αžšαžΌαž’αž—αž·αžœαžŒαŸ’αžαž“αŸαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž—αŸ’αž‰αŸ€αžœ-αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸ

αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž’αžΆαž‡αžΈαžœαž€αž˜αŸ’αž˜αžŠαŸ‚αž›αž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαž“αŸ…αž›αžΎ 1C: αžŸαž αž‚αŸ’αžšαžΆαžŸαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αŸ’αž“αž»αž„αž€αž˜αŸ’αžšαž·αžαž”αžΈ αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž—αŸ’αž‰αŸ€αžœ-αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸ αžŸαŸ’αžαžΆαž”αžαŸ’αž™αž€αž˜αŸ’αž˜ "DBMS - αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž”αž˜αŸ’αžšαžΎαž€αž˜αŸ’αž˜αžœαž·αž’αžΈ - αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž—αŸ’αž‰αŸ€αžœ" αŸ” αž€αžΌαžŠαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαŸ’αžšαžΌαžœαž”αžΆαž“αžŸαžšαžŸαŸαžšαž“αŸ…αž€αŸ’αž“αž»αž„ αž”αž„αŸ’αž€αžΎαžαž‡αžΆαž—αžΆαžŸαžΆ 1Cαž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž“αŸ…αž›αžΎαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž¬αž“αŸ…αž›αžΎαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž—αŸ’αž‰αŸ€αžœαŸ” αž€αžΆαžšαž„αžΆαžšαž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž‡αžΆαž˜αž½αž™αžœαžαŸ’αžαž»αž€αž˜αŸ’αž˜αžœαž·αž’αžΈ (αžαžαž―αž€αžŸαžΆαžšαŸ”αž›αŸ”) αž€αŸαžŠαžΌαž…αž‡αžΆαž€αžΆαžšαž’αžΆαž“ αž“αž·αž„αžŸαžšαžŸαŸαžšαž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αž“αž»αžœαžαŸ’αžαžαŸ‚αž›αžΎαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡αŸ” αž˜αž»αžαž„αžΆαžšαž“αŸƒαž‘αž˜αŸ’αžšαž„αŸ‹ αž“αž·αž„αž…αŸ†αžŽαž»αž…αž”αŸ’αžšαž‘αžΆαž€αŸ‹αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαž€αŸαžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αž“αž»αžœαžαŸ’αžαž“αŸ…αž›αžΎαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαž•αž„αžŠαŸ‚αžšαŸ” αž’αžαž·αžαž·αž‡αž“αž’αž“αž»αžœαžαŸ’αžαž€αžΆαžšαž‘αž‘αž½αž› αž”αžΎαž€ αž“αž·αž„αž”αž„αŸ’αž αžΆαž‰αž‘αž˜αŸ’αžšαž„αŸ‹ "αž€αžΆαžšαž”αŸ’αžšαžΆαžŸαŸ’αžšαŸαž™αž‘αžΆαž€αŸ‹αž‘αž„" αž‡αžΆαž˜αž½αž™αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹ (αž€αžΆαžšαž–αŸ’αžšαž˜αžΆαž“ αžŸαŸ†αžŽαž½αžš...) αž€αžΆαžšαž‚αžŽαž“αžΆαžαžΌαž…αŸ—αž€αŸ’αž“αž»αž„αž‘αž˜αŸ’αžšαž„αŸ‹αžŠαŸ‚αž›αž‘αžΆαž˜αž‘αžΆαžšαž€αžΆαžšαž†αŸ’αž›αžΎαž™αžαž”αžšαž αŸαžŸ (αž§αž‘αžΆαž αžšαžŽαŸ αž‚αž»αžŽαžαž˜αŸ’αž›αŸƒαžŠαŸ„αž™αž”αžšαž·αž˜αžΆαžŽ) αž’αŸ’αžœαžΎαž€αžΆαžšαž‡αžΆαž˜αž½αž™αž―αž€αžŸαžΆαžšαž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αŸ” αž’αŸ’αžœαžΎαž€αžΆαžšαž‡αžΆαž˜αž½αž™αž§αž”αž€αžšαžŽαŸαŸ”

αž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΌαžŠαž€αž˜αŸ’αž˜αžœαž·αž’αžΈ αž”αž‹αž˜αž€αžαžΆαž“αŸƒαž“αžΈαžαž·αžœαž·αž’αžΈ αž“αž·αž„αž˜αž»αžαž„αžΆαžšαžαŸ’αžšαžΌαžœαžαŸ‚αž”αž„αŸ’αž αžΆαž‰αž™αŸ‰αžΆαž„αž…αŸ’αž”αžΆαžŸαŸ‹αž–αžΈαž€αž“αŸ’αž›αŸ‚αž„αžŠαŸ‚αž›αž€αžΌαžŠαž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž· - αžŠαŸ„αž™αž”αŸ’αžšαžΎαž€αžΆαžšαžŽαŸ‚αž“αžΆαŸ† &AtClient / &AtServer (&AtClient / &AtServer αž‡αžΆαž—αžΆαžŸαžΆαž’αž„αŸ‹αž‚αŸ’αž›αŸαžŸαž‡αžΆαž—αžΆαžŸαžΆ)αŸ” αž₯αž‘αžΌαžœαž“αŸαŸ‡ αž’αŸ’αž“αž€αž’αž—αž·αžœαžŒαŸ’αžαž“αŸ 1C αž“αžΉαž„αž€αŸ‚αžαž˜αŸ’αžšαžΌαžœαžαŸ’αž‰αž»αŸ†αžŠαŸ„αž™αž“αž·αž™αžΆαž™αžαžΆαž€αžΆαžšαžŽαŸ‚αž“αžΆαŸ†αž‚αžΊαž–αž·αžαž‡αžΆ αž…αŸ’αžšαžΎαž“αž‡αžΆαž„αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž™αžΎαž„ αž–αŸαž›αž“αŸαŸ‡αžœαžΆαž˜αž·αž“αžŸαŸ†αžαžΆαž“αŸ‹αž‘αŸαŸ”

αž’αŸ’αž“αž€αž’αžΆαž…αž αŸ…αž€αžΌαžŠαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαž–αžΈαž€αžΌαžŠαž’αžαž·αžαž·αž‡αž“ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž’αŸ’αž“αž€αž˜αž·αž“αž’αžΆαž…αž αŸ…αž€αžΌαžŠαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž—αŸ’αž‰αŸ€αžœαž–αžΈαž€αžΌαžŠαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαž”αžΆαž“αž‘αŸαŸ” αž“αŸαŸ‡β€‹αž‡αžΆβ€‹αž€αž˜αŸ’αžšαž·αžβ€‹αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“β€‹αžŠαŸ‚αž›β€‹αž™αžΎαž„β€‹αž”αžΆαž“β€‹αž”αž„αŸ’αž€αžΎαžβ€‹αžŠαŸ„αž™β€‹αž αŸαžαž»αž•αž›β€‹αž˜αž½αž™β€‹αž…αŸ†αž“αž½αž“αŸ” αž‡αžΆαž–αž·αžŸαŸαžŸ αžŠαŸ„αž™αžŸαžΆαžšαžαŸ‚αž€αžΌαžŠαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαžαŸ’αžšαžΌαžœαžαŸ‚αžŸαžšαžŸαŸαžšαžαžΆαž˜αžšαž”αŸ€αž”αžŠαŸ‚αž›αžœαžΆαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αžαžΆαž˜αžœαž·αž’αžΈαžŠαžΌαž…αž‚αŸ’αž“αžΆ αž˜αž·αž“αžαžΆαžœαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž‚αŸαž αŸ…αžαžΆαž“αŸ…αž€αž“αŸ’αž›αŸ‚αž„αžŽαžΆαž“αŸ„αŸ‡αž‘αŸ - αž–αžΈαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž—αŸ’αž‰αŸ€αžœ αž¬αž–αžΈαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαŸ” αž αžΎαž™β€‹αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈβ€‹αžŠαŸ‚αž›β€‹αž αŸ…β€‹αž€αžΌαžŠβ€‹αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“β€‹αž˜αŸβ€‹αž–αžΈβ€‹αž€αžΌαžŠβ€‹αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“β€‹αž”αž˜αŸ’αžšαžΎβ€‹αž•αŸ’αžŸαŸαž„β€‹αž‘αŸ€αž αž“αŸ„αŸ‡β€‹αž˜αž·αž“αž˜αžΆαž“β€‹αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž—αŸ’αž‰αŸ€αžœβ€‹αžŠαžΌαž…β€‹αž“αŸ„αŸ‡αž‘αŸαŸ” αž αžΎαž™αžŠαŸ„αž™αžŸαžΆαžšαžαŸ‚αž€αŸ’αž“αž»αž„αž’αŸ†αž‘αž»αž„αž–αŸαž›αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž“αŸƒαž€αžΌαžŠαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸ αž’αžαž·αžαž·αž‡αž“αžŠαŸ‚αž›αž”αžΆαž“αž αŸ…αžœαžΆαž’αžΆαž…αž”αž·αž‘ αž…αŸαž‰αž–αžΈαž€αž˜αŸ’αž˜αžœαž·αž’αžΈ αž αžΎαž™αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαž“αžΉαž„αž›αŸ‚αž„αž˜αžΆαž“αž“αžšαžŽαžΆαž˜αŸ’αž“αžΆαž€αŸ‹αž αŸ…αŸ”

αžšαž”αŸ€αž” αž“αž·αž„αž˜αžΌαž›αž αŸαžαž»αžŠαŸ‚αž›αž™αžΎαž„αžŸαžšαžŸαŸαžšαžŸαŸαžœαžΆαž€αž˜αŸ’αž˜αžŠαŸ‚αž›αž’αžΆαž…αž’αŸ’αžœαžΎαž˜αžΆαžαŸ’αžšαžŠαŸ’αž‹αžΆαž“αž”αžΆαž“αžαŸ’αž–αžŸαŸ‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ 1C: αžŸαž αž‚αŸ’αžšαžΆαžŸαŸ– Java, PostgreSQL, Hazelcast
αž€αžΌαžŠαžŠαŸ‚αž›αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž€αžΆαžšαž…αž»αž…αž”αŸŠαžΌαžαž»αž„αŸ– αž€αžΆαžšαž αŸ…αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαž–αžΈαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž—αŸ’αž‰αŸ€αžœαž“αžΉαž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš αž€αžΆαžšαž αŸ…αž“αžΈαžαž·αžœαž·αž’αžΈαž’αžαž·αžαž·αž‡αž“αž–αžΈαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαž“αžΉαž„αž˜αž·αž“

αž“αŸαŸ‡αž˜αžΆαž“αž“αŸαž™αžαžΆ αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž™αžΎαž„αž…αž„αŸ‹αž•αŸ’αž‰αžΎαžŸαžΆαžšαž˜αž½αž™αž…αŸ†αž“αž½αž“αž–αžΈαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαž‘αŸ…αž€αžΆαž“αŸ‹αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž’αžαž·αžαž·αž‡αž“ αž§αž‘αžΆαž αžšαžŽαŸαžαžΆ αž€αžΆαžšαž”αž„αŸ’αž€αžΎαžαžšαž”αžΆαž™αž€αžΆαžšαžŽαŸ "αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž™αžΌαžš" αž”αžΆαž“αž”αž‰αŸ’αž…αž”αŸ‹ αž αžΎαž™αžšαž”αžΆαž™αž€αžΆαžšαžŽαŸαž’αžΆαž…αž˜αžΎαž›αž”αžΆαž“ αž™αžΎαž„αž˜αž·αž“αž˜αžΆαž“αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžαŸ’αžšαž”αŸ‚αž”αž“αŸαŸ‡αž‘αŸαŸ” αž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαž”αŸ’αžšαžΎαž›αŸ’αž”αž·αž… αž‡αžΆαž§αž‘αžΆαž αžšαžŽαŸ αžŸαŸ’αž‘αž„αŸ‹αž˜αžΎαž›αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαž–αžΈαž€αžΌαžŠαž’αžαž·αžαž·αž‡αž“αž‡αžΆαž‘αŸ€αž„αž‘αžΆαžαŸ‹αŸ” αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž“αŸαŸ‡αž•αŸ’αž‘αž»αž€αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αžΆαžšαž αŸ…αž‘αžΌαžšαžŸαŸαž–αŸ’αž‘αžŠαŸ‚αž›αž˜αž·αž“αž…αžΆαŸ†αž”αžΆαž…αŸ‹αž αžΎαž™αž‡αžΆαž‘αžΌαž‘αŸ…αž˜αžΎαž›αž‘αŸ…αž˜αž·αž“αž†αžΎαžαž†αžΆαž™αžŽαžΆαžŸαŸ‹αŸ”

αž αžΎαž™β€‹αž€αŸβ€‹αž˜αžΆαž“β€‹αžαž˜αŸ’αžšαžΌαžœβ€‹αž€αžΆαžšβ€‹αž˜αž½αž™β€‹αžŠαŸ‚αžšβ€‹αž‡αžΆβ€‹αž§αž‘αžΆαž αžšαžŽαŸβ€‹αž–αŸαž›β€‹αž€αžΆαžšβ€‹αž αŸ…β€‹αž‘αžΌαžšαžŸαž–αŸ’αž‘β€‹αž˜αž€β€‹αžŠαž›αŸ‹ SIP- αž“αŸ…αž–αŸαž›αž’αŸ’αžœαžΎαž€αžΆαžšαž αŸ…αž‘αžΌαžšαžŸαž–αŸ’αž‘ αžŸαžΌαž˜αž‡αžΌαž“αžŠαŸ†αžŽαžΉαž„αžŠαž›αŸ‹αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž’αžαž·αžαž·αž‡αž“αž’αŸ†αž–αžΈαž”αž‰αŸ’αž αžΆαž“αŸαŸ‡ αžŠαžΎαž˜αŸ’αž”αžΈαž±αŸ’αž™αžœαžΆαž’αžΆαž…αž”αŸ’αžšαžΎαž›αŸαžαžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž αŸ…αž…αžΌαž›αžŠαžΎαž˜αŸ’αž”αžΈαžŸαŸ’αžœαŸ‚αž„αžšαž€αžœαžΆαž“αŸ…αž€αŸ’αž“αž»αž„αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™αžŸαž˜αž—αžΆαž‚αžΈ αž“αž·αž„αž”αž„αŸ’αž αžΆαž‰αž–αŸαžαŸŒαž˜αžΆαž“αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž’αŸ†αž–αžΈαž€αžΆαžšαž αŸ…αž‘αžΌαžšαžŸαž–αŸ’αž‘αŸ” αž¬αž§αž‘αžΆαž αžšαžŽαŸ αž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αž€αžΆαžšαž”αž‰αŸ’αž‡αžΆαž‘αž·αž‰αž˜αž€αžŠαž›αŸ‹αžƒαŸ’αž›αžΆαŸ†αž„ αžŸαžΌαž˜αž‡αžΌαž“αžŠαŸ†αžŽαžΉαž„αžŠαž›αŸ‹αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž’αžαž·αžαž·αž‡αž“αžšαž”αžŸαŸ‹αž’αžαž·αžαž·αž‡αž“αž’αŸ†αž–αžΈαž”αž‰αŸ’αž αžΆαž“αŸαŸ‡αŸ” αž‡αžΆαž‘αžΌαž‘αŸ… αž˜αžΆαž“αž€αžšαžŽαžΈαž‡αžΆαž…αŸ’αžšαžΎαž“αžŠαŸ‚αž›αž™αž“αŸ’αžαž€αžΆαžšαž”αŸ‚αž”αž“αŸαŸ‡αž“αžΉαž„αž˜αžΆαž“αž”αŸ’αžšαž™αŸ„αž‡αž“αŸαŸ”

αž•αž›αž·αžαž€αž˜αŸ’αž˜αžαŸ’αž›αž½αž“αž―αž„

αž”αž„αŸ’αž€αžΎαžαž™αž“αŸ’αžαž€αžΆαžšαž•αŸ’αž‰αžΎαžŸαžΆαžšαŸ” αž›αžΏαž“ αž‚αž½αžšαž±αŸ’αž™αž‘αž»αž€αž…αž·αžαŸ’αž αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αžΆαžšαžŠαžΉαž€αž‡αž‰αŸ’αž‡αžΌαž“αžŠαŸ‚αž›αž˜αžΆαž“αž€αžΆαžšαž’αžΆαž“αžΆ αž‡αžΆαž˜αž½αž™αž“αžΉαž„αžŸαž˜αžαŸ’αžαž—αžΆαž–αž€αŸ’αž“αž»αž„αž€αžΆαžšαžŸαŸ’αžœαŸ‚αž„αžšαž€αžŸαžΆαžšαžŠαŸ„αž™αž—αžΆαž–αž”αžαŸ‹αž”αŸ‚αž“αŸ” αžŠαŸ„αž™αž•αŸ’αž’αŸ‚αž€αž›αžΎαž™αž“αŸ’αžαž€αžΆαžš αž’αž“αž»αžœαžαŸ’αžαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž•αŸ’αž‰αžΎαžŸαžΆαžš (សអរ αž€αžΆαžšαž αŸ…αž‡αžΆαžœαžΈαžŠαŸαž’αžΌ) αžŠαŸ‚αž›αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž“αŸ…αž€αŸ’αž“αž»αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈ 1C αŸ”

αžšαž…αž“αžΆαž”αŸ’αžšαž–αŸαž“αŸ’αž’αž±αŸ’αž™αž˜αžΆαž“αž‘αŸ†αž αŸ†αž•αŸ’αžŠαŸαž€αŸ” αž€αžΆαžšαž€αžΎαž“αž‘αžΎαž„αž“αŸƒαž”αž“αŸ’αž‘αž»αž€αžαŸ’αžšαžΌαžœαžαŸ‚αž‚αŸ’αžšαž”αžŠαžŽαŸ’αžαž”αŸ‹αžŠαŸ„αž™αž€αžΆαžšαž”αž„αŸ’αž€αžΎαž“αž…αŸ†αž“αž½αž“αžαŸ’αž“αžΆαŸ†αž„αŸ”

РСализация

αž™αžΎαž„αž”αžΆαž“αžŸαž˜αŸ’αžšαŸαž…αž…αž·αžαŸ’αžαž˜αž·αž“αž”αž‰αŸ’αž…αžΌαž›αž•αŸ’αž“αŸ‚αž€αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαžšαž”αžŸαŸ‹ SV αžŠαŸ„αž™αž•αŸ’αž‘αžΆαž›αŸ‹αž‘αŸ…αž€αŸ’αž“αž»αž„ 1C:Enterprise platform αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžŠαžΎαž˜αŸ’αž”αžΈαž’αž“αž»αžœαžαŸ’αžαžœαžΆαž‡αžΆαž•αž›αž·αžαž•αž›αžŠαžΆαž…αŸ‹αžŠαŸ„αž™αž‘αŸ‚αž€ API αžŠαŸ‚αž›αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž αŸ…αž…αŸαž‰αž–αžΈαž€αžΌαžŠαž“αŸƒαžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž€αž˜αŸ’αž˜αžœαž·αž’αžΈ 1C αŸ” αž“αŸαŸ‡αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αŸ’αžœαžΎαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž αŸαžαž»αž•αž›αž˜αž½αž™αž…αŸ†αž“αž½αž“ αžŠαŸ‚αž›αžŸαŸ†αžαžΆαž“αŸ‹αž“αŸ„αŸ‡αž‚αžΊαžαŸ’αž‰αž»αŸ†αž…αž„αŸ‹αž’αŸ’αžœαžΎαž±αŸ’αž™αžœαžΆαž’αžΆαž…αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαžŸαžΆαžšαžšαžœαžΆαž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈ 1C αž•αŸ’αžŸαŸαž„αŸ—αž‚αŸ’αž“αžΆ (αž§αž‘αžΆαž αžšαžŽαŸαžšαžœαžΆαž„αž€αžΆαžšαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž–αžΆαžŽαž·αž‡αŸ’αž‡αž€αž˜αŸ’αž˜ αž“αž·αž„αž‚αžŽαž“αŸαž™αŸ’αž™)αŸ” αž€αž˜αŸ’αž˜αžœαž·αž’αžΈ 1C αž•αŸ’αžŸαŸαž„αž‚αŸ’αž“αžΆαž’αžΆαž…αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž›αžΎαž€αŸ†αžŽαŸ‚αž•αŸ’αžŸαŸαž„αž‚αŸ’αž“αžΆαž“αŸƒ 1C: αžœαŸαž‘αž·αž€αžΆαžŸαž αž‚αŸ’αžšαžΆαžŸ αž˜αžΆαž“αž‘αžΈαžαžΆαŸ†αž„αž“αŸ…αž›αžΎαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαž•αŸ’αžŸαŸαž„αŸ—αž‚αŸ’αž“αžΆαŸ”αž›αŸ” αž“αŸ…αž€αŸ’αž“αž»αž„αž›αž€αŸ’αžαžαžŽαŸ’αžŒαž”αŸ‚αž”αž“αŸαŸ‡αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αž SV αž‡αžΆαž•αž›αž·αžαž•αž›αžŠαžΆαž…αŸ‹αžŠαŸ„αž™αž‘αŸ‚αž€αžŠαŸ‚αž›αž˜αžΆαž“αž‘αžΈαžαžΆαŸ†αž„αž“αŸ… "αž…αŸ†αž αŸ€αž„" αž“αŸƒαž€αžΆαžšαžŠαŸ†αž‘αžΎαž„ 1C αž‚αžΊαž‡αžΆαžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŠαŸαž›αŸ’αž’αž”αŸ†αž•αž»αžαŸ”

αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž αžΎαž™ αž™αžΎαž„αž”αžΆαž“αžŸαž˜αŸ’αžšαŸαž…αž…αž·αžαŸ’αžαž”αž„αŸ’αž€αžΎαž SV αž‡αžΆαž•αž›αž·αžαž•αž›αžŠαžΆαž…αŸ‹αžŠαŸ„αž™αž‘αŸ‚αž€αŸ” αž™αžΎαž„αžŽαŸ‚αž“αžΆαŸ†αžαžΆαž€αŸ’αžšαž»αž˜αž αŸŠαž»αž“αžαžΌαž…αŸ—αž”αŸ’αžšαžΎαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸ CB αžŠαŸ‚αž›αž™αžΎαž„αžŠαŸ†αž‘αžΎαž„αž“αŸ…αž€αŸ’αž“αž»αž„αž–αž–αž€αžšαž”αžŸαŸ‹αž™αžΎαž„ (wss://1cdialog.com) αžŠαžΎαž˜αŸ’αž”αžΈαž‡αŸ€αžŸαžœαžΆαž„αž€αžΆαžšαž…αŸ†αžŽαžΆαž™αž›αžΎαžŸαžŠαŸ‚αž›αž‘αžΆαž€αŸ‹αž‘αž„αž“αžΉαž„αž€αžΆαžšαžŠαŸ†αž‘αžΎαž„ αž“αž·αž„αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαŸ” αž’αžαž·αžαž·αž‡αž“αž’αŸ†αž’αžΆαž…αž™αž›αŸ‹αžƒαžΎαž‰αžαžΆ αžœαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αžŽαŸ‚αž“αžΆαŸ†αž±αŸ’αž™αžŠαŸ†αž‘αžΎαž„αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸ CB αž•αŸ’αž‘αžΆαž›αŸ‹αžαŸ’αž›αž½αž“αžšαž”αžŸαŸ‹αž–αž½αž€αž‚αŸαž“αŸ…αž―αž€αž“αŸ’αž›αŸ‚αž„αžšαž”αžŸαŸ‹αž–αž½αž€αž‚αŸαŸ” αž™αžΎαž„αž”αžΆαž“αž”αŸ’αžšαžΎαžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαžŸαŸ’αžšαžŠαŸ€αž„αž‚αŸ’αž“αžΆαž“αŸ…αž€αŸ’αž“αž»αž„αž•αž›αž·αžαž•αž› SaaS αž–αž–αž€αžšαž”αžŸαŸ‹αž™αžΎαž„αŸ” 1c αžŸαŸ’αžšαžŸαŸ‹ - αžœαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž•αž›αž·αžαž‡αžΆαž•αž›αž·αžαž•αž›αžŠαŸ‚αž›αž•αž›αž·αžαž™αŸ‰αžΆαž„αž…αŸ’αžšαžΎαž“αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžŠαŸ†αž‘αžΎαž„αž“αŸ…αž€αž“αŸ’αž›αŸ‚αž„αžšαž”αžŸαŸ‹αž’αžαž·αžαž·αž‡αž“ αž αžΎαž™αž€αŸαžαŸ’αžšαžΌαžœαž”αžΆαž“αžŠαžΆαž€αŸ‹αž±αŸ’αž™αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž€αŸ’αž“αž»αž„αž–αž–αž€αžšαž”αžŸαŸ‹αž™αžΎαž„αž•αž„αžŠαŸ‚αžšαŸ” https://1cfresh.com/.

αž€αž˜αŸ’αž˜αžœαž·αž’αžΈ

αžŠαžΎαž˜αŸ’αž”αžΈαž…αŸ‚αž€αž…αžΆαž™αž”αž“αŸ’αž‘αž»αž€ αž“αž·αž„αž€αžΆαžšαž’αžαŸ‹αž±αž“αž…αŸ†αž–αŸ„αŸ‡αž€αŸ†αž αž»αžŸ αž™αžΎαž„αž“αžΉαž„αžŠαžΆαž€αŸ‹αž–αž„αŸ’αžšαžΆαž™αž€αž˜αŸ’αž˜αžœαž·αž’αžΈ Java αž˜αž½αž™αž˜αž·αž“αž˜αŸ‚αž“αž‘αŸ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž˜αžΆαž“αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‡αžΆαž…αŸ’αžšαžΎαž“αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž§αž”αž€αžšαžŽαŸαž•αŸ’αž‘αž»αž€αžαž»αž›αŸ’αž™αž—αžΆαž–αž“αŸ…αž–αžΈαž˜αž»αžαž–αž½αž€αž‚αŸαŸ” αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαž€αžΆαžšαž•αŸ’αž‘αŸαžšαžŸαžΆαžšαž–αžΈ node αž‘αŸ… node αžŸαžΌαž˜αž”αŸ’αžšαžΎ Publish/subscribe αž“αŸ…αž€αŸ’αž“αž»αž„ HazelcastαŸ”

αž€αžΆαžšαž‘αŸ†αž“αžΆαž€αŸ‹αž‘αŸ†αž“αž„αžšαžœαžΆαž„αž’αžαž·αžαž·αž‡αž“ αž“αž·αž„αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαž‚αžΊαžαžΆαž˜αžšαž™αŸˆ websocket αŸ” αžœαžΆαžŸαž˜αž›αŸ’αž’αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž–αŸαž›αžœαŸαž›αžΆαž–αž·αžαŸ”

αžƒαŸ’αž›αžΆαŸ†αž„αžŸαž˜αŸ’αž„αžΆαžαŸ‹αžŠαŸ‚αž›αž”αžΆαž“αž…αŸ‚αž€αž…αžΆαž™

αž™αžΎαž„αž”αžΆαž“αž‡αŸ’αžšαžΎαžŸαžšαžΎαžŸαžšαžœαžΆαž„ Redis, Hazelcast αž“αž·αž„ Ehcache αŸ” αžœαžΆαž‡αžΆαž†αŸ’αž“αžΆαŸ† 2015 αŸ” Redis αž‘αžΎαž”αžαŸ‚αž”αž‰αŸ’αž…αŸαž‰αž“αžΌαžœαž…αž„αŸ’αž€αŸ„αž˜αžαŸ’αž˜αžΈ (αžαŸ’αž˜αžΈαž–αŸαž€αž‚αž½αžšαž±αŸ’αž™αžαŸ’αž›αžΆαž…) αž˜αžΆαž“ Sentinel αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αžΆαžšαžšαžΉαžαž”αž“αŸ’αžαžΉαž„αž‡αžΆαž…αŸ’αžšαžΎαž“αŸ” Ehcache αž˜αž·αž“αžŠαžΉαž„αž–αžΈαžšαž”αŸ€αž”αž”αŸ’αžšαž˜αžΌαž›αž•αŸ’αžαž»αŸ†αž‘αŸ…αž‡αžΆαž…αž„αŸ’αž€αŸ„αž˜αž‘αŸ (αž˜αž»αžαž„αžΆαžšαž“αŸαŸ‡αž”αžΆαž“αž”αž„αŸ’αž αžΆαž‰αžαŸ’αž›αž½αž“αž“αŸ…αž–αŸαž›αž€αŸ’αžšαŸ„αž™)αŸ” αž™αžΎαž„αž”αžΆαž“αžŸαž˜αŸ’αžšαŸαž…αž…αž·αžαŸ’αžαžŸαžΆαž€αž›αŸ’αž”αž„αžœαžΆαž‡αžΆαž˜αž½αž™ Hazelcast 3.4 αŸ”
Hazelcast αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαž˜αžΌαž›αž•αŸ’αžαž»αŸ†αž‡αžΆαž…αž„αŸ’αž€αŸ„αž˜αž…αŸαž‰αž–αžΈαž”αŸ’αžšαž’αž”αŸ‹αŸ” αž“αŸ…αž€αŸ’αž“αž»αž„αžšαž”αŸ€αž” node αžαŸ‚αž˜αž½αž™ αžœαžΆαž˜αž·αž“αž˜αžΆαž“αž”αŸ’αžšαž™αŸ„αž‡αž“αŸαžαŸ’αž›αžΆαŸ†αž„αž‘αŸ αž αžΎαž™αž’αžΆαž…αž”αŸ’αžšαžΎαž”αžΆαž“αžαŸ‚αž‡αžΆαžƒαŸ’αž›αžΆαŸ†αž„αžŸαž˜αŸ’αž„αžΆαžαŸ‹αž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡ - αžœαžΆαž˜αž·αž“αžŠαžΉαž„αž–αžΈαžšαž”αŸ€αž”αž”αŸ„αŸ‡αž…αŸ„αž›αž‘αž·αž“αŸ’αž“αž“αŸαž™αž‘αŸ…αžŒαžΈαžŸαž‘αŸ αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αž”αžΆαžαŸ‹αž”αž„αŸ‹αžαŸ’αž“αžΆαŸ†αž„αžαŸ‚αž˜αž½αž™ αž’αŸ’αž“αž€αž“αžΉαž„αž”αžΆαžαŸ‹αž”αž„αŸ‹αž‘αž·αž“αŸ’αž“αž“αŸαž™αŸ” αž™αžΎαž„αžŠαžΆαž€αŸ‹αž–αž„αŸ’αžšαžΆαž™ Hazelcasts αž‡αžΆαž…αŸ’αžšαžΎαž“ αžŠαŸ‚αž›αžšαžœαžΆαž„αž™αžΎαž„αž”αž˜αŸ’αžšαž»αž„αž‘αž»αž€αž‘αž·αž“αŸ’αž“αž“αŸαž™αžŸαŸ†αžαžΆαž“αŸ‹αŸ” αž™αžΎαž„αž˜αž·αž“αž”αž˜αŸ’αžšαž»αž„αž‘αž»αž€αžƒαŸ’αž›αžΆαŸ†αž„αžŸαž˜αŸ’αž„αžΆαžαŸ‹αž‘αŸ - αž™αžΎαž„αž˜αž·αž“αžαŸ’αžœαž›αŸ‹αž–αžΈαžœαžΆαž‘αŸαŸ”

αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž–αž½αž€αž™αžΎαž„ Hazelcast αž‚αžΊαŸ–

  • αž€αžΆαžšαž•αŸ’αž‘αž»αž€αžœαž‚αŸ’αž‚αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αŸ” αžœαžΆαžαŸ’αžšαžΌαžœαž€αžΆαžšαž–αŸαž›αž™αžΌαžšαžŠαžΎαž˜αŸ’αž”αžΈαž…αžΌαž›αž‘αŸ…αž€αžΆαž“αŸ‹ database αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ session αžšαžΆαž›αŸ‹αž–αŸαž› αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž™αžΎαž„αžŠαžΆαž€αŸ‹ session αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„ HazelcastαŸ”
  • αžƒαŸ’αž›αžΆαŸ†αž„β€‹αžŸαž˜αŸ’αž„αžΆαžαŸ‹αŸ” αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αž€αŸ†αž–αž»αž„αžŸαŸ’αžœαŸ‚αž„αžšαž€αž‘αž˜αŸ’αžšαž„αŸ‹αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹ αžŸαžΌαž˜αž–αž·αž“αž·αžαŸ’αž™αž˜αžΎαž›αžƒαŸ’αž›αžΆαŸ†αž„αžŸαž˜αŸ’αž„αžΆαžαŸ‹αŸ” αž”αžΆαž“αžŸαžšαžŸαŸαžšαžŸαžΆαžšαžαŸ’αž˜αžΈ - αžŠαžΆαž€αŸ‹αžœαžΆαž“αŸ…αž€αŸ’αž“αž»αž„αžƒαŸ’αž›αžΆαŸ†αž„αžŸαž˜αŸ’αž„αžΆαžαŸ‹αŸ”
  • αž”αŸ’αžšαž’αžΆαž“αž”αž‘αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž‘αŸ†αž“αžΆαž€αŸ‹αž‘αŸ†αž“αž„αžšαžœαžΆαž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαŸ” αžαŸ’αž“αžΆαŸ†αž„αž”αž„αŸ’αž€αžΎαžαž–αŸ’αžšαžΉαžαŸ’αžαž·αž€αžΆαžšαžŽαŸαž˜αž½αž™ αž αžΎαž™αžŠαžΆαž€αŸ‹αžœαžΆαž“αŸ…αž€αŸ’αž“αž»αž„αž”αŸ’αžšαž’αžΆαž“αž”αž‘ Hazelcast αŸ” αžαŸ’αž“αžΆαŸ†αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž•αŸ’αžŸαŸαž„αž‘αŸ€αžαžŠαŸ‚αž›αž”αžΆαž“αž‡αžΆαžœαž”αŸ’αžšαž’αžΆαž“αž”αž‘αž“αŸαŸ‡αž‘αž‘αž½αž› αž“αž·αž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž–αŸ’αžšαžΉαžαŸ’αžαž·αž€αžΆαžšαžŽαŸαŸ”
  • αž€αžΆαžšαž…αžΆαž€αŸ‹αžŸαŸ„αž…αž„αŸ’αž€αŸ„αž˜αŸ” αž§αž‘αžΆαž αžšαžŽαŸ αž™αžΎαž„αž”αž„αŸ’αž€αžΎαžαž€αžΆαžšαž–αž·αž—αžΆαž€αŸ’αžŸαžΆαžŠαŸ„αž™αž”αŸ’αžšαžΎαž‚αž“αŸ’αž›αžΉαŸ‡αž–αž·αžŸαŸαžŸαž˜αž½αž™ (αž€αžΆαžšαž–αž·αž—αžΆαž€αŸ’αžŸαžΆαž―αž€αžαŸ’αžαž‡αž“αž€αŸ’αž“αž»αž„αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™ 1C)αŸ–

conversationKeyChecker.check("Π‘Π•ΠΠ—ΠžΠšΠžΠ›ΠžΠΠšΠ");

      doInClusterLock("Π‘Π•ΠΠ—ΠžΠšΠžΠ›ΠžΠΠšΠ", () -> {

          conversationKeyChecker.check("Π‘Π•ΠΠ—ΠžΠšΠžΠ›ΠžΠΠšΠ");

          createChannel("Π‘Π•ΠΠ—ΠžΠšΠžΠ›ΠžΠΠšΠ");
      });

αž™αžΎαž„β€‹αž”αžΆαž“β€‹αž–αž·αž“αž·αžαŸ’αž™β€‹αž˜αžΎαž›β€‹αžαžΆβ€‹αž‚αŸ’αž˜αžΆαž“β€‹αž†αžΆαž“αŸ‚αž›β€‹αž‘αŸαŸ” αž™αžΎαž„αž”αžΆαž“αž™αž€αžŸαŸ„ αž–αž·αž“αž·αžαŸ’αž™αžœαžΆαž˜αŸ’αžαž„αž‘αŸ€αž αž“αž·αž„αž”αž„αŸ’αž€αžΎαžαžœαžΆαŸ” αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αž˜αž·αž“αž–αž·αž“αž·αžαŸ’αž™αž˜αžΎαž›αžŸαŸ„αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž…αžΆαž€αŸ‹αžŸαŸ„αž‘αŸ αž“αŸ„αŸ‡αžœαžΆαž˜αžΆαž“αž±αž€αžΆαžŸαžŠαŸ‚αž›αžαŸ’αžŸαŸ‚αžŸαŸ’αžšαž‘αžΆαž™αž•αŸ’αžŸαŸαž„αž‘αŸ€αžαž”αžΆαž“αž–αž·αž“αž·αžαŸ’αž™αž“αŸ…αž–αŸαž›αž“αŸ„αŸ‡ αž αžΎαž™αž₯αž‘αžΌαžœαž“αŸαŸ‡αž“αžΉαž„αž–αŸ’αž™αžΆαž™αžΆαž˜αž”αž„αŸ’αž€αžΎαžαž€αžΆαžšαž–αž·αž—αžΆαž€αŸ’αžŸαžΆαžŠαžΌαž…αž‚αŸ’αž“αžΆ - αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžœαžΆαž˜αžΆαž“αžšαž½αž…αž αžΎαž™αŸ” αž’αŸ’αž“αž€αž˜αž·αž“αž’αžΆαž…αž…αžΆαž€αŸ‹αžŸαŸ„αžŠαŸ„αž™αž”αŸ’αžšαžΎ java Lock αžŠαŸ‚αž›αž’αŸ’αžœαžΎαžŸαž˜αž€αžΆαž›αž€αž˜αŸ’αž˜ αž¬αž’αž˜αŸ’αž˜αžαžΆαž”αžΆαž“αž‘αŸαŸ” αžαžΆαž˜αžšαž™αŸˆαž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™ - αžœαžΆαž™αžΊαž αž αžΎαž™αžœαžΆαž‡αžΆαž€αžΆαžšαž’αžΆαžŽαž·αžαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™ αžαžΆαž˜αžšαž™αŸˆ Hazelcast - αž“αŸ„αŸ‡αž αžΎαž™αž‡αžΆαž’αŸ’αžœαžΈαžŠαŸ‚αž›αž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαž€αžΆαžšαŸ”

αž€αžΆαžšαž‡αŸ’αžšαžΎαžŸαžšαžΎαžŸ DBMS

αž™αžΎαž„αž˜αžΆαž“αž”αž‘αž–αž·αžŸαŸ„αž’αž“αŸαž™αŸ‰αžΆαž„αž‘αžΌαž›αŸ†αž‘αžΌαž›αžΆαž™ αž“αž·αž„αž‡αŸ„αž‚αž‡αŸαž™αž€αŸ’αž“αž»αž„αž€αžΆαžšαž’αŸ’αžœαžΎαž€αžΆαžšαž‡αžΆαž˜αž½αž™ PostgreSQL αž“αž·αž„αžŸαž αž€αžΆαžšαž‡αžΆαž˜αž½αž™αž’αŸ’αž“αž€αž’αž—αž·αžœαžŒαŸ’αžαž“αŸ DBMS αž“αŸαŸ‡αŸ”

αžœαžΆαž˜αž·αž“αž„αžΆαž™αžŸαŸ’αžšαž½αž›αž‘αŸαž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αŸ’αžšαž»αž˜ PostgreSQL - αž˜αžΆαž“ XL, XC, αžŸαŸŠαžΈαžαžΌαžŸαž”αŸ‰αž»αž“αŸ’αžαŸ‚αž‡αžΆαž‘αžΌαž‘αŸ… αž‘αžΆαŸ†αž„αž“αŸαŸ‡αž˜αž·αž“αž˜αŸ‚αž“αž‡αžΆ NoSQLs αžŠαŸ‚αž›αž’αŸ’αžœαžΎαž˜αžΆαžαŸ’αžšαžŠαŸ’αž‹αžΆαž“αž…αŸαž‰αž–αžΈαž”αŸ’αžšαž’αž”αŸ‹αž“αŸ„αŸ‡αž‘αŸαŸ” αž™αžΎαž„αž˜αž·αž“αž”αžΆαž“αž…αžΆαžαŸ‹αž‘αž»αž€ NoSQL αž‡αžΆαž€αž“αŸ’αž›αŸ‚αž„αž•αŸ’αž‘αž»αž€αžŸαŸ†αžαžΆαž“αŸ‹αž“αŸ„αŸ‡αž‘αŸ αžœαžΆαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαžΆαž“αŸ‹αž αžΎαž™αžŠαŸ‚αž›αž™αžΎαž„αž™αž€ Hazelcast αžŠαŸ‚αž›αž™αžΎαž„αž˜αž·αž“αž”αžΆαž“αž’αŸ’αžœαžΎαž€αžΆαžšαž‡αžΆαž˜αž½αž™αž–αžΈαž˜αž»αž“αž˜αž€αŸ”

αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαž€αžΆαžšαž’αŸ’αžœαžΎαž˜αžΆαžαŸ’αžšαžŠαŸ’αž‹αžΆαž“αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™αž‘αŸ†αž“αžΆαž€αŸ‹αž‘αŸ†αž“αž„ αž“αŸ„αŸ‡αž˜αžΆαž“αž“αŸαž™αžαžΆ αž€αžΆαžšαž€αžΆαžαŸ‹. αžŠαžΌαž…αžŠαŸ‚αž›αž’αŸ’αž“αž€αž”αžΆαž“αžŠαžΉαž„αž αžΎαž™αžαžΆαž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αžΆαžš sharding αž™αžΎαž„αž”αŸ‚αž„αž…αŸ‚αž€αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™αž‘αŸ…αž‡αžΆαž•αŸ’αž“αŸ‚αž€αžŠαžΆαž…αŸ‹αžŠαŸ„αž™αž‘αŸ‚αž€αžŠαžΎαž˜αŸ’αž”αžΈαž±αŸ’αž™αž–αž½αž€αžœαžΆαž“αžΈαž˜αž½αž™αŸ—αž’αžΆαž…αžŠαžΆαž€αŸ‹αž“αŸ…αž›αžΎαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαžŠαžΆαž…αŸ‹αžŠαŸ„αž™αž‘αŸ‚αž€αŸ”

αž€αŸ†αžŽαŸ‚αžŠαŸ†αž”αžΌαž„αž“αŸƒαž€αžΆαžšαž”αŸ‚αž„αž…αŸ‚αž€αžšαž”αžŸαŸ‹αž™αžΎαž„αžŸαž“αŸ’αž˜αžαžαžΆαž˜αžΆαž“αž›αž‘αŸ’αž’αž—αžΆαž–αž…αŸ‚αž€αž…αžΆαž™αžαžΆαžšαžΆαž„αž“αžΈαž˜αž½αž™αŸ—αž“αŸƒαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžšαž”αžŸαŸ‹αž™αžΎαž„αž†αŸ’αž›αž„αž€αžΆαžαŸ‹αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαž•αŸ’αžŸαŸαž„αŸ—αž‚αŸ’αž“αžΆαž€αŸ’αž“αž»αž„αžŸαž˜αžΆαž˜αžΆαžαŸ’αžšαž•αŸ’αžŸαŸαž„αŸ—αž‚αŸ’αž“αžΆαŸ” αž˜αžΆαž“αžŸαžΆαžšαž‡αžΆαž…αŸ’αžšαžΎαž“αž“αŸ…αž›αžΎαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸ A - αžŸαžΌαž˜αž™αžΎαž„αž•αŸ’αž›αžΆαžŸαŸ‹αž‘αžΈαž•αŸ’αž“αŸ‚αž€αž“αŸƒαžαžΆαžšαžΆαž„αž“αŸαŸ‡αž‘αŸ…αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸ BαŸ” αž€αžΆαžšαžŸαž˜αŸ’αžšαŸαž…αž…αž·αžαŸ’αžαž“αŸαŸ‡αž‚αŸ’αžšαžΆαž“αŸ‹αžαŸ‚αžŸαŸ’αžšαŸ‚αž€αž’αŸ†αž–αžΈαž€αžΆαžšαž”αž„αŸ’αž€αžΎαž“αž”αŸ’αžšαžŸαž·αž‘αŸ’αž’αž—αžΆαž–αž˜αž»αž“αž’αžΆαž™αž» αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž™αžΎαž„αž”αžΆαž“αžŸαž˜αŸ’αžšαŸαž…αž…αž·αžαŸ’αžαžŠαžΆαž€αŸ‹αž€αž˜αŸ’αžšαž·αžαžαŸ’αž›αž½αž“αž™αžΎαž„αž‘αŸ…αž“αžΉαž„αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž–αž αž»αž—αžαž·αž€αŸˆαŸ”

αž’αŸ’αž“αž€αž’αžΆαž…αž’αžΆαž“αž’αŸ†αž–αžΈαž’αŸ’αž“αž€αž‡αž½αž›αž…αŸ’αžšαžΎαž“αž§αž‘αžΆαž αžšαžŽαŸαž“αŸ…αž›αžΎαž‚αŸαž αž‘αŸ†αž–αŸαžš αž‘αž·αž“αŸ’αž“αž“αŸαž™ Citus.

SV αž˜αžΆαž“αž‚αŸ„αž›αž‚αŸ†αž“αž·αžαž“αŸƒαž€αž˜αŸ’αž˜αžœαž·αž’αžΈ αž“αž·αž„αž’αžαž·αžαž·αž‡αž“αŸ” αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‚αžΊαž‡αžΆαž€αžΆαžšαžŠαŸ†αž‘αžΎαž„αž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹αž“αŸƒαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž’αžΆαž‡αžΈαžœαž€αž˜αŸ’αž˜ αžŠαžΌαž…αž‡αžΆ ERP ឬ Accounting αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹ αž“αž·αž„αž‘αž·αž“αŸ’αž“αž“αŸαž™αž’αžΆαž‡αžΈαžœαž€αž˜αŸ’αž˜αžšαž”αžŸαŸ‹αžœαžΆαŸ” αž’αžαž·αžαž·αž‡αž“αž‚αžΊαž‡αžΆαžŸαŸ’αžαžΆαž”αŸαž“ αž¬αž”αž»αž‚αŸ’αž‚αž›αžŠαŸ‚αž›αž‡αŸ†αž“αž½αžŸαž²αŸ’αž™αž–αžΆαž€αŸ’αž™αžŸαž»αŸ†αžαŸ’αžšαžΌαžœαž”αžΆαž“αž…αž»αŸ‡αžˆαŸ’αž˜αŸ„αŸ‡αž“αŸ…αž€αŸ’αž“αž»αž„αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸ SV αŸ” αž’αžαž·αžαž·αž‡αž“αž’αžΆαž…αž˜αžΆαž“αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‡αžΆαž…αŸ’αžšαžΎαž“αžŠαŸ‚αž›αž”αžΆαž“αž…αž»αŸ‡αžˆαŸ’αž˜αŸ„αŸ‡ αž αžΎαž™αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‘αžΆαŸ†αž„αž“αŸαŸ‡αž’αžΆαž…αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαžŸαžΆαžšαž‚αŸ’αž“αžΆαž‘αŸ…αžœαž·αž‰αž‘αŸ…αž˜αž€αŸ” αž’αžαž·αžαž·αž‡αž“αž”αžΆαž“αž€αŸ’αž›αžΆαž™αž‡αžΆαž’αŸ’αž“αž€αž‡αž½αž›αž“αŸ…αž€αŸ’αž“αž»αž„αž”αŸ’αžšαž–αŸαž“αŸ’αž’αžšαž”αžŸαŸ‹αž™αžΎαž„αŸ” αžŸαžΆαžšαž–αžΈαž’αžαž·αžαž·αž‡αž“αž‡αžΆαž…αŸ’αžšαžΎαž“αž’αžΆαž…αž˜αžΆαž“αž‘αžΈαžαžΆαŸ†αž„αž“αŸ…αž€αŸ’αž“αž»αž„αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™αž‡αžΆαž€αŸ‹αžŸαŸ’αžαŸ‚αž„αž˜αž½αž™αŸ” αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž™αžΎαž„αžƒαžΎαž‰αžαžΆαž’αžαž·αžαž·αž‡αž“αž”αžΆαž“αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž”αž„αŸ’αž€αžΎαžαž…αžšαžΆαž…αžšαž…αŸ’αžšαžΎαž“ αž™αžΎαž„αž•αŸ’αž›αžΆαžŸαŸ‹αž‘αžΈαžœαžΆαž‘αŸ…αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™αž‡αžΆαž€αŸ‹αžŸαŸ’αžαŸ‚αž„αžŠαžΆαž…αŸ‹αžŠαŸ„αž™αž‘αŸ‚αž€ (αž¬αžŸαžΌαž˜αŸ’αž”αžΈαžαŸ‚αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™αžŠαžΆαž…αŸ‹αžŠαŸ„αž™αž‘αŸ‚αž€)αŸ”

αž™αžΎαž„β€‹αž˜αžΆαž“β€‹αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“β€‹αž‘αž·αž“αŸ’αž“αž“αŸαž™β€‹αžŸαŸ†αžαžΆαž“αŸ‹β€‹αžŠαŸ‚αž›β€‹αžαžΆαžšαžΆαž„β€‹αž€αŸ†αžŽαžαŸ‹β€‹αž•αŸ’αž›αžΌαžœβ€‹αžαŸ’αžšαžΌαžœβ€‹αž”αžΆαž“β€‹αžšαž€αŸ’αžŸαžΆβ€‹αž‘αž»αž€β€‹αž‡αžΆαž˜αž½αž™β€‹αž“αžΉαž„β€‹αž–αŸαžαŸŒαž˜αžΆαž“β€‹αž’αŸ†αž–αžΈβ€‹αž‘αžΈαžαžΆαŸ†αž„β€‹αž“αŸƒβ€‹αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“β€‹αž‘αž·αž“αŸ’αž“αž“αŸαž™β€‹αž’αžαž·αžαž·αž‡αž“β€‹αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αŸ”

αžšαž”αŸ€αž” αž“αž·αž„αž˜αžΌαž›αž αŸαžαž»αžŠαŸ‚αž›αž™αžΎαž„αžŸαžšαžŸαŸαžšαžŸαŸαžœαžΆαž€αž˜αŸ’αž˜αžŠαŸ‚αž›αž’αžΆαž…αž’αŸ’αžœαžΎαž˜αžΆαžαŸ’αžšαžŠαŸ’αž‹αžΆαž“αž”αžΆαž“αžαŸ’αž–αžŸαŸ‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ 1C: αžŸαž αž‚αŸ’αžšαžΆαžŸαŸ– Java, PostgreSQL, Hazelcast

αžŠαžΎαž˜αŸ’αž”αžΈαž€αžΆαžšαž–αžΆαžšαž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™αž…αž˜αŸ’αž”αž„αž–αžΈαž€αžΆαžšαž‡αžΆαž”αŸ‹αž‚αžΆαŸ†αž„ αž™αžΎαž„αžšαž€αŸ’αžŸαžΆαž‘αž»αž€αžαžΆαžšαžΆαž„αž•αŸ’αž›αžΌαžœ (αž“αž·αž„αž‘αž·αž“αŸ’αž“αž“αŸαž™αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž€αžΆαžšαž‰αžΉαž€αž‰αžΆαž”αŸ‹αž•αŸ’αžŸαŸαž„αž‘αŸ€αž) αž“αŸ…αž€αŸ’αž“αž»αž„αžƒαŸ’αž›αžΆαŸ†αž„αžŸαž˜αŸ’αž„αžΆαžαŸ‹αŸ”

αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž‡αžΆαžœαž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž™αžΊαž αž™αžΎαž„αž“αžΉαž„αž€αžΆαžαŸ‹αžœαžΆαž‡αžΆαž—αžΆαž‚αžαžΆαžŸαž“αŸ…αžαžΆαž„αž€αŸ’αž“αž»αž„αŸ” αž“αŸ…αž›αžΎαž‚αž˜αŸ’αžšαŸ„αž„αž•αŸ’αžŸαŸαž„αž‘αŸ€αžαžŠαŸ‚αž›αž™αžΎαž„αž”αŸ’αžšαžΎ pg_pathman.

αžŠαŸ„αž™αžŸαžΆαžšαž€αžΆαžšαž”αžΆαžαŸ‹αž”αž„αŸ‹αžŸαžΆαžšαžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž‚αžΊαž˜αž·αž“αž›αŸ’αž’ αž™αžΎαž„αžšαž€αŸ’αžŸαžΆαž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™αžšαž”αžŸαŸ‹αž™αžΎαž„αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αžΆαžšαž…αž˜αŸ’αž›αž„αŸ” αž€αžΆαžšαžšαž½αž˜αž”αž‰αŸ’αž…αžΌαž›αž‚αŸ’αž“αžΆαž“αŸƒαž€αžΆαžšαž…αž˜αŸ’αž›αž„αžαžΆαž˜αžŸαž˜αž€αžΆαž›αž€αž˜αŸ’αž˜ αž“αž·αž„αž’αžŸαž˜αž€αžΆαž›αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž’αŸ’αž“αž€αž’αžΆαž“αžΆαžαŸ’αž›αž½αž“αž’αŸ’αž“αž€αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαž”αžΆαžαŸ‹αž”αž„αŸ‹αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™αžŸαŸ†αžαžΆαž“αŸ‹αŸ” αž€αžΆαžšαž”αžΆαžαŸ‹αž”αž„αŸ‹αžŸαžΆαžšαž“αžΉαž„αž€αžΎαžαž‘αžΎαž„αž›αž»αŸ‡αžαŸ’αžšαžΆαžαŸ‚αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™αž…αž˜αŸ’αž”αž„ αž“αž·αž„αž€αžΆαžšαž…αž˜αŸ’αž›αž„αžαžΆαž˜αžŸαž˜αž€αžΆαž›αž€αž˜αŸ’αž˜αžšαž”αžŸαŸ‹αžœαžΆαž”αžšαžΆαž‡αŸαž™αž€αŸ’αž“αž»αž„αž–αŸαž›αžŠαŸ†αžŽαžΆαž›αž‚αŸ’αž“αžΆαŸ”

αž”αŸ’αžšαžŸαž·αž“αž”αžΎβ€‹αž€αžΆαžšαž…αž˜αŸ’αž›αž„β€‹αžŠαŸ‚αž›β€‹αž’αŸ’αžœαžΎαžŸαž˜αž€αžΆαž›αž€αž˜αŸ’αž˜β€‹αžαŸ’αžšαžΌαžœαž”αžΆαž“β€‹αž”αžΆαžαŸ‹αž”αž„αŸ‹ αž“αŸ„αŸ‡β€‹αž€αžΆαžšαž…αž˜αŸ’αž›αž„β€‹αž’αžŸαž˜αž€αžΆαž›β€‹αž“αžΉαž„β€‹αž€αŸ’αž›αžΆαž™αž‡αžΆβ€‹αžŸαž˜αž€αžΆαž›αž€αž˜αŸ’αž˜αŸ”
αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™αž…αž˜αŸ’αž”αž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αžΆαžαŸ‹αž”αž„αŸ‹ αž€αžΆαžšαž…αž˜αŸ’αž›αž„αžŸαž˜αž€αžΆαž›αž€αž˜αŸ’αž˜αž€αŸ’αž›αžΆαž™αž‡αžΆαž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™αžŸαŸ†αžαžΆαž“αŸ‹ αž αžΎαž™αž€αžΆαžšαž…αž˜αŸ’αž›αž„αž’αžŸαž˜αž€αžΆαž›αž“αžΉαž„αž€αŸ’αž›αžΆαž™αž‡αžΆαž€αžΆαžšαž…αž˜αŸ’αž›αž„αžŸαž˜αž€αžΆαž›αž€αž˜αŸ’αž˜αŸ”

Elasticsearch αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαžŸαŸ’αžœαŸ‚αž„αžšαž€

αž…αžΆαž”αŸ‹αžαžΆαŸ†αž„αž–αžΈαž€αŸ’αž“αž»αž„αž…αŸ†αžŽαŸ„αž˜αžšαž”αžŸαŸ‹αž•αŸ’αžŸαŸαž„αž‘αŸ€αž SV αž€αŸαž‡αžΆαž’αŸ’αž“αž€αž“αžΆαŸ†αžŸαžΆαžšαžŠαŸ‚αžš αžœαžΆαž‘αžΆαž˜αž‘αžΆαžšαž€αžΆαžšαžŸαŸ’αžœαŸ‚αž„αžšαž€αžšαž αŸαžŸ αž„αžΆαž™αžŸαŸ’αžšαž½αž› αž“αž·αž„αž’αžΆαž…αž”αžαŸ‹αž”αŸ‚αž“αž”αžΆαž“ αžŠαŸ„αž™αž‚αž·αžαž‚αžΌαžšαž–αžΈαžšαžΌαž”αžœαž·αž‘αŸ’αž™αžΆ αžŠαŸ„αž™αž”αŸ’αžšαžΎαž€αžΆαžšαž•αŸ’αž‚αžΌαž•αŸ’αž‚αž„αž˜αž·αž“αž…αŸ’αž”αžΆαžŸαŸ‹αž›αžΆαžŸαŸ‹αŸ” αž™αžΎαž„αž”αžΆαž“αžŸαž˜αŸ’αžšαŸαž…αž…αž·αžαŸ’αžαž˜αž·αž“αž”αž„αŸ’αž€αžΎαžαž€αž„αŸ‹αž‘αžΎαž„αžœαž·αž‰ αž αžΎαž™αž”αŸ’αžšαžΎαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αžŸαŸ’αžœαŸ‚αž„αžšαž€αž₯αžαž‚αž·αžαžαŸ’αž›αŸƒ Elasticsearch αžŠαŸ‚αž›αž”αž„αŸ’αž€αžΎαžαž‘αžΎαž„αžŠαŸ„αž™αž•αŸ’αž’αŸ‚αž€αž›αžΎαž”αžŽαŸ’αžŽαžΆαž›αŸαž™ αž›αžΌαžŸαž·αž“. αž™αžΎαž„αž€αŸαžŠαžΆαž€αŸ‹αž–αž„αŸ’αžšαžΆαž™ Elasticsearch αž“αŸ…αž€αŸ’αž“αž»αž„αž…αž„αŸ’αž€αŸ„αž˜ (មេ - αž‘αž·αž“αŸ’αž“αž“αŸαž™ - αž‘αž·αž“αŸ’αž“αž“αŸαž™) αžŠαžΎαž˜αŸ’αž”αžΈαž›αž»αž”αž”αŸ†αž”αžΆαžαŸ‹αž”αž‰αŸ’αž αžΆαž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαž˜αžΆαž“αž€αžΆαžšαž”αžšαžΆαž‡αŸαž™αž“αŸƒαžαŸ’αž“αžΆαŸ†αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαŸ”

αž“αŸ…αž›αžΎ github αž™αžΎαž„αž”αžΆαž“αžšαž€αžƒαžΎαž‰ αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‡αŸ†αž“αž½αž™ morphology αžšαž”αžŸαŸ‹αžšαž»αžŸαŸ’αžŸαŸŠαžΈ αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ Elasticsearch αž αžΎαž™αž”αŸ’αžšαžΎαžœαžΆαŸ” αž“αŸ…αž€αŸ’αž“αž»αž„αžŸαž“αŸ’αž‘αžŸαŸ’αžŸαž“αŸ Elasticsearch αž™αžΎαž„αžšαž€αŸ’αžŸαžΆαž‘αž»αž€αž«αžŸαž–αžΆαž€αŸ’αž™ (αžŠαŸ‚αž›αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‡αŸ†αž“αž½αž™αž€αŸ†αžŽαžαŸ‹) αž“αž·αž„ N-grams αŸ” αž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž”αž‰αŸ’αž…αžΌαž›αž’αžαŸ’αžαž”αž‘αžŠαžΎαž˜αŸ’αž”αžΈαžŸαŸ’αžœαŸ‚αž„αžšαž€ αž™αžΎαž„αžšαž€αž˜αžΎαž›αž’αžαŸ’αžαž”αž‘αžŠαŸ‚αž›αž”αžΆαž“αžœαžΆαž™αž€αŸ’αž“αž»αž„αž…αŸ†αžŽαŸ„αž˜ N-grams αŸ” αž“αŸ…αž–αŸαž›αžšαž€αŸ’αžŸαžΆαž‘αž»αž€αž€αŸ’αž“αž»αž„αž›αž·αž”αž·αž€αŸ’αžšαž˜ αž–αžΆαž€αŸ’αž™ "αž’αžαŸ’αžαž”αž‘" αž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ†αž”αŸ‚αž€αž‘αŸ…αž‡αžΆ N-grams αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αŸ–

[αž‘αžΆαŸ†αž„αž“αŸ„αŸ‡, tek, tex, αž’αžαŸ’αžαž”αž‘, αž’αžαŸ’αžαž”αž‘, ek, ធតីត, ext, αž’αžαŸ’αžαž”αž‘, ks, kst, ksty, st, sty, αž’αŸ’αž“αž€],

αž αžΎαž™αž«αžŸαž“αŸƒαž–αžΆαž€αŸ’αž™ "αž’αžαŸ’αžαž”αž‘" αž€αŸαž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αžšαž€αŸ’αžŸαžΆαž‘αž»αž€αž•αž„αžŠαŸ‚αžšαŸ” αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž“αŸαŸ‡αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž’αŸ’αž“αž€αžŸαŸ’αžœαŸ‚αž„αžšαž€αž“αŸ…αžŠαžΎαž˜ αž€αžŽαŸ’αžαžΆαž› αž“αž·αž„αž“αŸ…αž…αž»αž„αž”αž‰αŸ’αž…αž”αŸ‹αž“αŸƒαž–αžΆαž€αŸ’αž™αŸ”

αžšαžΌαž”αž—αžΆαž–αž’αŸ†

αžšαž”αŸ€αž” αž“αž·αž„αž˜αžΌαž›αž αŸαžαž»αžŠαŸ‚αž›αž™αžΎαž„αžŸαžšαžŸαŸαžšαžŸαŸαžœαžΆαž€αž˜αŸ’αž˜αžŠαŸ‚αž›αž’αžΆαž…αž’αŸ’αžœαžΎαž˜αžΆαžαŸ’αžšαžŠαŸ’αž‹αžΆαž“αž”αžΆαž“αžαŸ’αž–αžŸαŸ‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ 1C: αžŸαž αž‚αŸ’αžšαžΆαžŸαŸ– Java, PostgreSQL, Hazelcast
αž’αŸ’αžœαžΎαž˜αŸ’αžαž„αž‘αŸ€αžαž“αžΌαžœαžšαžΌαž”αž—αžΆαž–αž–αžΈαžŠαžΎαž˜αž’αžαŸ’αžαž”αž‘ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αžΆαžšαž–αž“αŸ’αž™αž›αŸ‹αŸ–

  • Balancer αž›αžΆαžαžαŸ’αžšαžŠαžΆαž„αž“αŸ…αž›αžΎαž’αŸŠαžΈαž“αž’αžΊαžŽαž·αž; αž™αžΎαž„αž˜αžΆαž“ nginx αžœαžΆαž’αžΆαž…αž‡αžΆαžŽαžΆαž˜αž½αž™αŸ”
  • αž€αž˜αŸ’αž˜αžœαž·αž’αžΈ Java αž‘αžΆαž€αŸ‹αž‘αž„αž‚αŸ’αž“αžΆαž‘αŸ…αžœαž·αž‰αž‘αŸ…αž˜αž€αžαžΆαž˜αžšαž™αŸˆ Hazelcast αŸ”
  • αžŠαžΎαž˜αŸ’αž”αžΈαž’αŸ’αžœαžΎαž€αžΆαžšαž‡αžΆαž˜αž½αž™αž”αžŽαŸ’αžαžΆαž‰ socket αž™αžΎαž„αž”αŸ’αžšαžΎ αžŸαž»αž‘αŸ’αž’αŸ”.
  • αž€αž˜αŸ’αž˜αžœαž·αž’αžΈ Java αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŸαžšαžŸαŸαžšαž€αŸ’αž“αž»αž„ Java 8 αž αžΎαž™αž˜αžΆαž“αž”αžŽαŸ’αžαž»αŸ† αž’αžΌαžŸαŸŠαžΈαž‡αžΈ. αž•αŸ‚αž“αž€αžΆαžšαžšαž½αž˜αž˜αžΆαž“αž€αžΆαžšαž’αŸ’αžœαžΎαž…αŸ†αžŽαžΆαž€αžŸαŸ’αžšαž»αž€αž‘αŸ… Java 10 αž“αž·αž„αž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž‘αŸ…αž˜αŸ‰αžΌαžŒαž»αž›αŸ”

αž€αžΆαžšαž’αž—αž·αžœαžŒαŸ’αžαž“αŸαž“αž·αž„αž€αžΆαžšαž’αŸ’αžœαžΎαžαŸαžŸαŸ’αž

αž“αŸ…αž€αŸ’αž“αž»αž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž“αŸƒαž€αžΆαžšαž”αž„αŸ’αž€αžΎαž αž“αž·αž„αžŸαžΆαž€αž›αŸ’αž”αž„ SV αž™αžΎαž„αž”αžΆαž“αž‡αž½αž”αž”αŸ’αžšαž‘αŸ‡αž“αžΌαžœαž›αž€αŸ’αžαžŽαŸˆαž–αž·αžŸαŸαžŸαž‚αž½αžšαž±αŸ’αž™αž…αžΆαž”αŸ‹αž’αžΆαžšαž˜αŸ’αž˜αžŽαŸαž˜αž½αž™αž…αŸ†αž“αž½αž“αž“αŸƒαž•αž›αž·αžαž•αž›αžŠαŸ‚αž›αž™αžΎαž„αž”αŸ’αžšαžΎαŸ”

αž•αŸ’αž‘αž»αž€αž€αžΆαžšαž’αŸ’αžœαžΎαžαŸαžŸαŸ’αž αž“αž·αž„αž€αžΆαžšαž›αŸαž…αž’αŸ’αž›αžΆαž™αž’αž„αŸ’αž‚αž…αž„αž…αžΆαŸ†

αž€αžΆαžšαž…αŸαž‰αž•αŸ’αžŸαžΆαž™ SV αž“αžΈαž˜αž½αž™αŸ—αž–αžΆαž€αŸ‹αž–αŸαž“αŸ’αž’αž“αžΉαž„αž€αžΆαžšαž’αŸ’αžœαžΎαžαŸαžŸαŸ’αžαž•αŸ’αž‘αž»αž€αŸ” αžœαžΆαž‡αŸ„αž‚αž‡αŸαž™αž“αŸ…αž–αŸαž›αŸ–

  • αž€αžΆαžšαž’αŸ’αžœαžΎαžαŸαžŸαŸ’αžαž“αŸαŸ‡αž”αžΆαž“αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž’αžŸαŸ‹αžšαž™αŸˆαž–αŸαž›αž‡αžΆαž…αŸ’αžšαžΎαž“αžαŸ’αž„αŸƒαž αžΎαž™αž˜αž·αž“αž˜αžΆαž“αž€αžΆαžšαž”αžšαžΆαž‡αŸαž™αž“αŸƒαžŸαŸαžœαžΆαž€αž˜αŸ’αž˜αž‘αŸαŸ”
  • αž–αŸαž›αžœαŸαž›αžΆαž†αŸ’αž›αžΎαž™αžαž”αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαž‚αž“αŸ’αž›αžΉαŸ‡αž˜αž·αž“αž›αžΎαžŸαž–αžΈαž€αž˜αŸ’αžšαž·αžαžŠαŸ‚αž›αž„αžΆαž™αžŸαŸ’αžšαž½αž›αž“αŸ„αŸ‡αž‘αŸαŸ”
  • αž€αžΆαžšαž…αž»αŸ‡αžαŸ’αžŸαŸ„αž™αž“αŸƒαž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαž”αžΎαž”αŸ’αžšαŸ€αž”αž’αŸ€αž”αž‘αŸ…αž“αžΉαž„αž€αŸ†αžŽαŸ‚αž˜αž»αž“αž‚αžΊαž˜αž·αž“αž›αžΎαžŸαž–αžΈ 10%

αž™αžΎαž„αž”αŸ†αž–αŸαž‰αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™αžŸαžΆαž€αž›αŸ’αž”αž„αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž‘αž·αž“αŸ’αž“αž“αŸαž™ - αžŠαžΎαž˜αŸ’αž”αžΈαž’αŸ’αžœαžΎαžŠαžΌαž…αž“αŸαŸ‡αž™αžΎαž„αž‘αž‘αž½αž›αž”αžΆαž“αž–αŸαžαŸŒαž˜αžΆαž“αž’αŸ†αž–αžΈαž’αžαž·αžαž·αž‡αž“αžŸαž€αž˜αŸ’αž˜αž”αŸ†αž•αž»αžαž–αžΈαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαž•αž›αž·αžαž€αž˜αŸ’αž˜ αž‚αž»αžŽαž›αŸαžαžšαž”αžŸαŸ‹αžœαžΆαžŠαŸ„αž™ 5 (αž…αŸ†αž“αž½αž“αžŸαžΆαžš αž€αžΆαžšαž–αž·αž—αžΆαž€αŸ’αžŸαžΆ αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹) αž αžΎαž™αžŸαžΆαž€αž›αŸ’αž”αž„αžœαžΆαžαžΆαž˜αžœαž·αž’αžΈαž“αŸ„αŸ‡αŸ”

αž™αžΎαž„αž’αž“αž»αžœαžαŸ’αžαž€αžΆαžšαž’αŸ’αžœαžΎαžαŸαžŸαŸ’αžαž•αŸ’αž‘αž»αž€αž“αŸƒαž”αŸ’αžšαž–αŸαž“αŸ’αž’αž’αž“αŸ’αžαžšαž€αž˜αŸ’αž˜αž€αŸ’αž“αž»αž„αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž…αŸ†αž“αž½αž“αž”αžΈαŸ–

  1. αž€αžΆαžšαž’αŸ’αžœαžΎαžαŸαžŸαŸ’αžαž—αžΆαž–αžαžΆαž“αžαžΉαž„
  2. αž€αžΆαžšαžαž—αŸ’αž‡αžΆαž”αŸ‹αžαŸ‚αž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡
  3. αž€αžΆαžšαž…αž»αŸ‡αžˆαŸ’αž˜αŸ„αŸ‡αž’αžαž·αžαž·αž‡αž“

αž€αŸ’αž“αž»αž„αž’αŸ†αž‘αž»αž„αž–αŸαž›αž’αŸ’αžœαžΎαžαŸαžŸαŸ’αžαž—αžΆαž–αžαžΆαž“αžαžΉαž„ αž™αžΎαž„αž”αžΎαž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžαŸ’αžŸαŸ‚αžŸαŸ’αžšαž‘αžΆαž™αž‡αžΆαž…αŸ’αžšαžΎαž“αžšαž™ αž αžΎαž™αž–αž½αž€αž‚αŸαž•αŸ’αž‘αž»αž€αž”αŸ’αžšαž–αŸαž“αŸ’αž’αžŠαŸ„αž™αž˜αž·αž“αžˆαž”αŸ‹αŸ– αž€αžΆαžšαžŸαžšαžŸαŸαžšαžŸαžΆαžš αž”αž„αŸ’αž€αžΎαžαž€αžΆαžšαž–αž·αž—αžΆαž€αŸ’αžŸαžΆ αž‘αž‘αž½αž›αž”αž‰αŸ’αž‡αžΈαžŸαžΆαžšαŸ” αž™αžΎαž„αž€αŸ’αž›αŸ‚αž„αž’αŸ’αžœαžΎαžŸαž€αž˜αŸ’αž˜αž—αžΆαž–αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž’αž˜αŸ’αž˜αžαžΆ (αž‘αž‘αž½αž›αž”αžΆαž“αž”αž‰αŸ’αž‡αžΈαžŸαžΆαžšαžŠαŸ‚αž›αž˜αž·αž“αž‘αžΆαž“αŸ‹αž’αžΆαž“αžšαž”αžŸαŸ‹αžαŸ’αž‰αž»αŸ† αžŸαžšαžŸαŸαžšαž‘αŸ…αž“αžšαžŽαžΆαž˜αŸ’αž“αžΆαž€αŸ‹) αž“αž·αž„αžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž€αž˜αŸ’αž˜αžœαž·αž’αžΈ (αž”αž‰αŸ’αž‡αžΌαž“αž€αž‰αŸ’αž…αž”αŸ‹αž“αŸƒαž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž•αŸ’αžŸαŸαž„ αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αžΆαžšαž‡αžΌαž“αžŠαŸ†αžŽαžΉαž„)

αž§αž‘αžΆαž αžšαžŽαŸ αž“αŸαŸ‡β€‹αž‡αžΆβ€‹αž•αŸ’αž“αŸ‚αž€β€‹αž“αŸƒβ€‹αž€αžΆαžšβ€‹αž’αŸ’αžœαžΎβ€‹αžαŸαžŸαŸ’αžβ€‹αžŸαŸ’αžαŸ’αžšαŸαžŸβ€‹αž˜αžΎαž›β€‹αž‘αŸ…β€‹αžŠαžΌαž…β€‹αž‡αžΆαŸ–

  • αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž…αžΌαž›
    • αžŸαŸ’αž“αžΎαžŸαž»αŸ†αž€αžΆαžšαž–αž·αž—αžΆαž€αŸ’αžŸαžΆαžŠαŸ‚αž›αž˜αž·αž“αž‘αžΆαž“αŸ‹αž’αžΆαž“αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αŸ”
    • 50% αž‘αŸ†αž“αž„αž‡αžΆαž’αžΆαž“αžŸαžΆαžš
    • 50% αž‘αŸ†αž“αž„αž‡αžΆαž“αžΉαž„αž•αŸ’αž‰αžΎαžŸαžΆαžš
    • αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž”αž“αŸ’αž‘αžΆαž”αŸ‹αŸ–
      • αž˜αžΆαž“αž±αž€αžΆαžŸ 20% αž€αŸ’αž“αž»αž„αž€αžΆαžšαž”αž„αŸ’αž€αžΎαžαž€αžΆαžšαž–αž·αž—αžΆαž€αŸ’αžŸαžΆαžαŸ’αž˜αžΈαŸ”
      • αž‡αŸ’αžšαžΎαžŸαžšαžΎαžŸαž€αžΆαžšαž–αž·αž—αžΆαž€αŸ’αžŸαžΆαžŽαžΆαž˜αž½αž™αžšαž”αžŸαŸ‹αžœαžΆαžŠαŸ„αž™αž…αŸƒαžŠαž“αŸ’αž™
      • αž…αžΌαž›αž‘αŸ…αžαžΆαž„αž€αŸ’αž“αž»αž„
      • αžŸαŸ’αž“αžΎαžŸαž»αŸ†αžŸαžΆαžš αž‘αž˜αŸ’αžšαž„αŸ‹αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹
      • αž”αž„αŸ’αž€αžΎαžαžŸαžΆαžšαž…αŸ†αž“αž½αž“αž”αŸ’αžšαžΆαŸ†αž•αŸ’αž‰αžΎαž‘αŸ…αž€αžΆαž“αŸ‹αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž…αŸƒαžŠαž“αŸ’αž™αž–αžΈαž€αžΆαžšαž–αž·αž—αžΆαž€αŸ’αžŸαžΆαž“αŸαŸ‡αŸ”
      • αž‘αž»αž€αž€αžΆαžšαž–αž·αž—αžΆαž€αŸ’αžŸαžΆ
      • αž’αŸ’αžœαžΎαž˜αŸ’αžαž„αž‘αŸ€αž 20 αžŠαž„
      • αž…αŸαž‰ αžαŸ’αžšαž‘αž”αŸ‹αž‘αŸ…αžŠαžΎαž˜αžŸαŸ’αž‚αŸ’αžšαžΈαž”αžœαž·αž‰αŸ”

    • chatbot αž…αžΌαž›αž‘αŸ…αž€αŸ’αž“αž»αž„αž”αŸ’αžšαž–αŸαž“αŸ’αž’ (αžαŸ’αžšαžΆαž”αŸ‹αžαžΆαž˜αž€αžΆαžšαž•αŸ’αž‰αžΎαžŸαžΆαžšαž–αžΈαž€αžΌαžŠαž€αž˜αŸ’αž˜αžœαž·αž’αžΈ)
      • αž˜αžΆαž“αž±αž€αžΆαžŸ 50% αž“αŸƒαž€αžΆαžšαž”αž„αŸ’αž€αžΎαžαž†αžΆαž“αŸ‚αž›αžαŸ’αž˜αžΈαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž‘αž·αž“αŸ’αž“αž“αŸαž™ (αž€αžΆαžšαž–αž·αž—αžΆαž€αŸ’αžŸαžΆαž–αž·αžŸαŸαžŸ)
      • 50% αž‘αŸ†αž“αž„αž‡αžΆαžŸαžšαžŸαŸαžšαžŸαžΆαžšαž‘αŸ…αž€αžΆαž“αŸ‹αž”αžŽαŸ’αžαžΆαž‰αžŽαžΆαž˜αž½αž™αžŠαŸ‚αž›αž˜αžΆαž“αžŸαŸ’αžšαžΆαž”αŸ‹

αžŸαŸαžŽαžΆαžšαžΈαž™αŸ‰αžΌ "αž€αžΆαžšαžαž—αŸ’αž‡αžΆαž”αŸ‹αžαŸ‚αž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡" αž”αžΆαž“αž”αž„αŸ’αž αžΆαž‰αžαŸ’αž›αž½αž“αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž αŸαžαž»αž•αž›αž˜αž½αž™αŸ” αž˜αžΆαž“αžŸαŸ’αžαžΆαž“αž—αžΆαž–αž˜αž½αž™αŸ– αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž”αžΆαž“αž—αŸ’αž‡αžΆαž”αŸ‹αž”αŸ’αžšαž–αŸαž“αŸ’αž’ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž˜αž·αž“αž‘αžΆαž“αŸ‹αž”αžΆαž“αž…αžΌαž›αžšαž½αž˜αŸ” αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž˜αŸ’αž“αžΆαž€αŸ‹αŸ—αž”αžΎαž€αž€αž»αŸ†αž–αŸ’αž™αžΌαž‘αŸαžšαž“αŸ…αž˜αŸ‰αŸ„αž„ 09:00 αž–αŸ’αžšαžΉαž€ αž”αž„αŸ’αž€αžΎαžαž€αžΆαžšαžαž—αŸ’αž‡αžΆαž”αŸ‹αž‘αŸ…αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸ αž αžΎαž™αž“αŸ…αžŸαŸ’αž„αŸ€αž˜αŸ” αž”αž»αžšαžŸαž‘αžΆαŸ†αž„αž“αŸαŸ‡αž˜αžΆαž“αž‚αŸ’αžšαŸ„αŸ‡αžαŸ’αž“αžΆαž€αŸ‹ αž˜αžΆαž“αž–αž½αž€αž‚αŸαž‡αžΆαž…αŸ’αžšαžΎαž“ - αž€αž‰αŸ’αž…αž”αŸ‹αžαŸ‚αž˜αž½αž™αž‚αžαŸ‹αžŠαŸ‚αž›αž–αž½αž€αž‚αŸαž˜αžΆαž“αž‚αžΊ PING/PONG αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž–αž½αž€αž‚αŸαžšαž€αŸ’αžŸαžΆαž€αžΆαžšαž—αŸ’αž‡αžΆαž”αŸ‹αž‘αŸ…αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸ (αž–αž½αž€αž‚αŸαž˜αž·αž“αž’αžΆαž…αžšαž€αŸ’αžŸαžΆαžœαžΆαž”αžΆαž“αž‘αŸ - αž…αž»αŸ‡αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž˜αžΆαž“αžŸαžΆαžšαžαŸ’αž˜αžΈ) αŸ” αž€αžΆαžšαž’αŸ’αžœαžΎαžαŸαžŸαŸ’αžαž“αŸαŸ‡αž”αž„αŸ’αž€αžΎαžαž‘αžΎαž„αžœαž·αž‰αž“αžΌαžœαžŸαŸ’αžαžΆαž“αž—αžΆαž–αžŠαŸ‚αž›αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž”αŸ‚αž”αž“αŸαŸ‡αž˜αž½αž™αž…αŸ†αž“αž½αž“αž’αŸ†αž–αŸ’αž™αžΆαž™αžΆαž˜αž…αžΌαž›αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž€αŸ’αž“αž»αž„αžšαž™αŸˆαž–αŸαž›αž€αž“αŸ’αž›αŸ‡αž˜αŸ‰αŸ„αž„αŸ” αžœαžΆαžŸαŸ’αžšαžŠαŸ€αž„αž‘αŸ…αž“αžΉαž„αž€αžΆαžšαž’αŸ’αžœαžΎαžαŸαžŸαŸ’αžαžŸαŸ’αžαŸ’αžšαŸαžŸ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž€αžΆαžšαž•αŸ’αžαŸ„αžαž’αžΆαžšαž˜αŸ’αž˜αžŽαŸαžšαž”αžŸαŸ‹αžœαžΆαž…αŸ’αž”αžΆαžŸαŸ‹αžŽαžΆαžŸαŸ‹αž›αžΎαž€αžΆαžšαž”αž‰αŸ’αž…αžΌαž›αžŠαŸ†αž”αžΌαž„αž“αŸαŸ‡ - αžŠαžΎαž˜αŸ’αž”αžΈαž€αž»αŸ†αž±αŸ’αž™αž˜αžΆαž“αž€αžΆαžšαž”αžšαžΆαž‡αŸαž™ (αž˜αž“αž»αžŸαŸ’αžŸαž˜αŸ’αž“αžΆαž€αŸ‹αž˜αž·αž“αž”αŸ’αžšαžΎαž”αŸ’αžšαž–αŸαž“αŸ’αž’ αž αžΎαž™αžœαžΆαž”αžΆαž“αž’αŸ’αž›αžΆαž€αŸ‹αž…αž»αŸ‡αžšαž½αž…αž‘αŸ…αž αžΎαž™ - αžœαžΆαž–αž·αž”αžΆαž€αž€αŸ’αž“αž»αž„αž€αžΆαžšαž‚αž·αžαž–αžΈαž’αŸ’αžœαžΈαžŠαŸ‚αž›αž’αžΆαž€αŸ’αžšαž€αŸ‹αž‡αžΆαž„αž“αŸαŸ‡) αŸ”

αžŸαŸ’αž‚αŸ’αžšαžΈαž”αž…αž»αŸ‡αžˆαŸ’αž˜αŸ„αŸ‡αž’αžαž·αžαž·αž‡αž“αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž–αžΈαž€αžΆαžšαž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αžŠαŸ†αž”αžΌαž„αŸ” αž™αžΎαž„αž”αžΆαž“αž’αŸ’αžœαžΎαžαŸαžŸαŸ’αžαžŸαŸ’αžαŸ’αžšαŸαžŸ αž αžΎαž™αž”αŸ’αžšαžΆαž€αžŠαžαžΆαž”αŸ’αžšαž–αŸαž“αŸ’αž’αž˜αž·αž“αžαž™αž…αž»αŸ‡αž’αŸ†αž‘αž»αž„αž–αŸαž›αž†αŸ’αž›αžΎαž™αž†αŸ’αž›αž„αŸ” αž”αŸ‰αž»αž“αŸ’αžαŸ‚β€‹αž’αŸ’αž“αž€β€‹αž”αŸ’αžšαžΎβ€‹αž”αžΆαž“β€‹αž˜αž€β€‹αžŠαž›αŸ‹ αž αžΎαž™β€‹αž€αžΆαžšβ€‹αž…αž»αŸ‡β€‹αžˆαŸ’αž˜αŸ„αŸ‡β€‹αž”αžΆαž“β€‹αž…αžΆαž”αŸ‹β€‹αž•αŸ’αžαžΎαž˜β€‹αž”αžšαžΆαž‡αŸαž™β€‹αžŠαŸ„αž™β€‹αžŸαžΆαžšβ€‹αž’αžŸαŸ‹β€‹αž–αŸαž›αŸ” αž“αŸ…αž–αŸαž›αž…αž»αŸ‡αžˆαŸ’αž˜αŸ„αŸ‡αž™αžΎαž„αž”αŸ’αžšαžΎ / dev / αž…αŸƒαžŠαž“αŸ’αž™αžŠαŸ‚αž›αž‘αžΆαž€αŸ‹αž‘αž„αž“αžΉαž„ entropy αž“αŸƒαž”αŸ’αžšαž–αŸαž“αŸ’αž’αŸ” αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαž˜αž·αž“αž˜αžΆαž“αž–αŸαž›αžœαŸαž›αžΆαžŠαžΎαž˜αŸ’αž”αžΈαž€αž€αž€αž»αž‰ entropy αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαžΆαž“αŸ‹αž‘αŸ αž αžΎαž™αž“αŸ…αž–αŸαž›αžŠαŸ‚αž› SecureRandom αžαŸ’αž˜αžΈαžαŸ’αžšαžΌαžœαž”αžΆαž“αžŸαŸ’αž“αžΎαžŸαž»αŸ† αžœαžΆαž”αž„αŸ’αž€αž€αžšαž™αŸˆαž–αŸαž›αžšαžΆαž”αŸ‹αžŸαž·αž”αžœαž·αž“αžΆαž‘αžΈαŸ” αž˜αžΆαž“αžœαž·αž’αžΈαž‡αžΆαž…αŸ’αžšαžΎαž“αž…αŸαž‰αž–αžΈαžŸαŸ’αžαžΆαž“αž—αžΆαž–αž“αŸαŸ‡ αž§αž‘αžΆαž αžšαžŽαŸαŸ– αž”αŸ’αžαžΌαžšαž‘αŸ… /dev/urandom αžŠαŸ‚αž›αž˜αž·αž“αžŸαžΌαžœαž˜αžΆαž“αžŸαž»αžœαžαŸ’αžαž·αž—αžΆαž– αžŠαŸ†αž‘αžΎαž„αž”αž“αŸ’αž‘αŸ‡αž–αž·αžŸαŸαžŸαžŠαŸ‚αž›αž”αž„αŸ’αž€αžΎαž entropy αž”αž„αŸ’αž€αžΎαžαž›αŸαžαž…αŸƒαžŠαž“αŸ’αž™αž‡αžΆαž˜αž»αž“ αž αžΎαž™αžšαž€αŸ’αžŸαžΆαž‘αž»αž€αž–αž½αž€αžœαžΆαž€αŸ’αž“αž»αž„αž’αžΆαž„αŸ” αž™αžΎαž„αž”αžΆαž“αž”αž·αž‘αž‡αžΆαž”αžŽαŸ’αžαŸ„αŸ‡αž’αžΆαžŸαž“αŸ’αž“αž“αžΌαžœαž”αž‰αŸ’αž αžΆαž‡αžΆαž˜αž½αž™αž“αžΉαž„αž’αžΆαž„ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž…αžΆαž”αŸ‹αžαžΆαŸ†αž„αž–αžΈαž–αŸαž›αž“αŸ„αŸ‡αž˜αž€ αž™αžΎαž„αž€αŸ†αž–αž»αž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αžΆαžšαž’αŸ’αžœαžΎαžαŸαžŸαŸ’αžαžŠαžΆαž…αŸ‹αžŠαŸ„αž™αž‘αŸ‚αž€αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž…αž»αŸ‡αžˆαŸ’αž˜αŸ„αŸ‡αž’αŸ’αž“αž€αž‡αžΆαžœαžαŸ’αž˜αžΈαŸ”

αž™αžΎαž„αž”αŸ’αžšαžΎαž‡αžΆαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž”αž„αŸ’αž€αžΎαžαž”αž“αŸ’αž‘αž»αž€ JMeter. αžœαžΆαž˜αž·αž“αžŠαžΉαž„αž–αžΈαžšαž”αŸ€αž”αž’αŸ’αžœαžΎαž€αžΆαžšαž‡αžΆαž˜αž½αž™ websocket αžœαžΆαžαŸ’αžšαžΌαžœαž€αžΆαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‡αŸ†αž“αž½αž™αŸ” αžŠαŸ†αž”αžΌαž„αž€αŸ’αž“αž»αž„αž›αž‘αŸ’αž’αž•αž›αžŸαŸ’αžœαŸ‚αž„αžšαž€αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžŸαŸ†αžŽαž½αžš "jmeter websocket" αž‚αžΊαŸ– αž’αžαŸ’αžαž”αž‘αž–αžΈ BlazeMeterαžŠαŸ‚αž›αžŽαŸ‚αž“αžΆαŸ† αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‡αŸ†αž“αž½αž™αžŠαŸ„αž™ Maciej Zaleski.

αž“αŸ„αŸ‡αž αžΎαž™αž‡αžΆαž€αž“αŸ’αž›αŸ‚αž„αžŠαŸ‚αž›αž™αžΎαž„αžŸαž˜αŸ’αžšαŸαž…αž…αž·αžαŸ’αžαž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αŸ”

αžŸαŸ’αž‘αžΎαžšαžαŸ‚αž—αŸ’αž›αžΆαž˜αŸ—αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž€αžΆαžšαž’αŸ’αžœαžΎαžαŸαžŸαŸ’αžαž’αŸ’αž„αž“αŸ‹αž’αŸ’αž„αžš αž™αžΎαž„αž”αžΆαž“αžšαž€αžƒαžΎαž‰αžαžΆ JMeter αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž›αŸαž…αž’αŸ’αž›αžΆαž™αž€αžΆαžšαž…αž„αž…αžΆαŸ†αŸ”

αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‡αŸ†αž“αž½αž™αž‚αžΊαž‡αžΆαžšαžΏαž„αž’αŸ†αžŠαžΆαž…αŸ‹αžŠαŸ„αž™αž‘αŸ‚αž€αž˜αž½αž™αžŠαŸ‚αž›αž˜αžΆαž“αž•αŸ’αž€αžΆαž™ 176 αžœαžΆαž˜αžΆαž“ 132 αžŸαž˜αž“αŸ…αž›αžΎ github αŸ” αž’αŸ’αž“αž€αž“αž·αž–αž“αŸ’αž’αžαŸ’αž›αž½αž“αž―αž„αž˜αž·αž“αž”αžΆαž“αž”αŸ’αžαŸαž‡αŸ’αž‰αžΆαž…αž·αžαŸ’αžαž…αŸ†αž–αŸ„αŸ‡αžœαžΆαž‘αŸαž…αžΆαž”αŸ‹αžαžΆαŸ†αž„αž–αžΈαž†αŸ’αž“αžΆαŸ† 2015 (αž™αžΎαž„αž”αžΆαž“αž™αž€αžœαžΆαž“αŸ…αž†αŸ’αž“αžΆαŸ† 2015 αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αžœαžΆαž˜αž·αž“αž”αž„αŸ’αž€αž±αŸ’αž™αž˜αžΆαž“αž€αžΆαžšαžŸαž„αŸ’αžŸαŸαž™αž‘αŸ) αž”αž‰αŸ’αž αžΆ github αž‡αžΆαž…αŸ’αžšαžΎαž“αž‘αžΆαž€αŸ‹αž‘αž„αž“αžΉαž„αž€αžΆαžšαž›αŸαž…αž’αŸ’αž›αžΆαž™αž’αž„αŸ’αž‚αž…αž„αž…αžΆαŸ† 7 αžŸαŸ†αžŽαžΎαž‘αžΆαž‰αžŠαŸ‚αž›αž˜αž·αž“αž”αž·αž‘αŸ”
αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αžŸαž˜αŸ’αžšαŸαž…αž…αž·αžαŸ’αžαž’αŸ’αžœαžΎαž€αžΆαžšαž’αŸ’αžœαžΎαžαŸαžŸαŸ’αžαž•αŸ’αž‘αž»αž€αžŠαŸ„αž™αž”αŸ’αžšαžΎαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‡αŸ†αž“αž½αž™αž“αŸαŸ‡ αžŸαžΌαž˜αž™αž€αž…αž·αžαŸ’αžαž‘αž»αž€αžŠαžΆαž€αŸ‹αž›αžΎαž€αžΆαžšαž–αž·αž—αžΆαž€αŸ’αžŸαžΆαžαžΆαž„αž€αŸ’αžšαŸ„αž˜αŸ–

  1. αž“αŸ…αž€αŸ’αž“αž»αž„αž”αžšαž·αž™αžΆαž€αžΆαžŸαž–αž αž»αžαŸ’αžŸαŸ‚ αž”αž‰αŸ’αž‡αžΈ LinkedList αž’αž˜αŸ’αž˜αžαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹ αž αžΎαž™αž›αž‘αŸ’αž’αž•αž›αž‚αžΊ NPE αž“αŸ…αž€αŸ’αž“αž»αž„αž–αŸαž›αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαŸ” αž“αŸαŸ‡αž’αžΆαž…αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž”αžΆαž“αžŠαŸ„αž™αž€αžΆαžšαž”αŸ’αžαžΌαžšαž‘αŸ… ConcurrentLinkedDeque αž¬αžŠαŸ„αž™αž”αŸ’αž›αž»αž€αžŠαŸ‚αž›αž”αžΆαž“αž’αŸ’αžœαžΎαžŸαž˜αž€αžΆαž›αž€αž˜αŸ’αž˜αŸ” αž™αžΎαž„αž‡αŸ’αžšαžΎαžŸαžšαžΎαžŸαž‡αž˜αŸ’αžšαžΎαžŸαžŠαŸ†αž”αžΌαž„αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžαŸ’αž›αž½αž“αž™αžΎαž„ (https://github.com/maciejzaleski/JMeter-WebSocketSampler/issues/43).
  2. αž€αžΆαžšαž›αŸαž…αž’αŸ’αž›αžΆαž™αž’αž„αŸ’αž‚αž…αž„αž…αžΆαŸ†; αž“αŸ…αž–αŸαž›αž•αŸ’αžαžΆαž…αŸ‹αž‘αŸ†αž“αžΆαž€αŸ‹αž‘αŸ†αž“αž„αž–αŸαžαŸŒαž˜αžΆαž“αž€αžΆαžšαžαž—αŸ’αž‡αžΆαž”αŸ‹αž˜αž·αž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αž›αž»αž”αž‘αŸ (https://github.com/maciejzaleski/JMeter-WebSocketSampler/issues/44).
  3. αž“αŸ…αž€αŸ’αž“αž»αž„αžšαž”αŸ€αž”αžŸαŸ’αž‘αŸ’αžšαžΈαž˜ (αž“αŸ…αž–αŸαž›αžŠαŸ‚αž› websocket αž˜αž·αž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž·αž‘αž“αŸ…αž…αž»αž„αž”αž‰αŸ’αž…αž”αŸ‹αž“αŸƒαž‚αŸ†αžšαžΌ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαž“αŸ…αž–αŸαž›αž€αŸ’αžšαŸ„αž™αž“αŸ…αž€αŸ’αž“αž»αž„αž•αŸ‚αž“αž€αžΆαžš) αž›αŸ†αž“αžΆαŸ†αž†αŸ’αž›αžΎαž™αžαž”αž˜αž·αž“αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž‘αŸ (https://github.com/maciejzaleski/JMeter-WebSocketSampler/issues/19).

αž“αŸαŸ‡β€‹αž‚αžΊβ€‹αž‡αžΆβ€‹αž•αŸ’αž“αŸ‚αž€β€‹αž˜αž½αž™β€‹αž€αŸ’αž“αž»αž„β€‹αž…αŸ†αžŽαŸ„αž˜β€‹αž’αŸ’αž“αž€β€‹αž“αŸ…β€‹αž›αžΎ githubαŸ” αž’αŸ’αžœαžΈαžŠαŸ‚αž›αž™αžΎαž„αž”αžΆαž“αž’αŸ’αžœαžΎαŸ–

  1. αž”αžΆαž“αž™αž€ αž•αŸ’αž›αžΌαžœαž”αŸ†αž”αŸ‚αž€ Elyran Kogan (@elyrank) - αžœαžΆαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž”αž‰αŸ’αž αžΆ 1 αž“αž·αž„ 3
  2. αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž”αž‰αŸ’αž αžΆ ្
  3. αž”αžΆαž“β€‹αž’αŸ’αžœαžΎβ€‹αž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“αž—αžΆαž–β€‹αž–αŸ’αžšαž›αžΆαž“β€‹αž–αžΈ 9.2.14 αž‘αŸ… 9.3.12
  4. αž‘αž˜αŸ’αžšαž„αŸ‹β€‹αž€αžΆαž›αž”αžšαž·αž…αŸ’αž†αŸαž‘β€‹αžŸαžΆαž˜αž‰αŸ’αž‰β€‹αžšαž»αŸ†β€‹αž€αŸ’αž“αž»αž„ ThreadLocal; SimpleDateFormat αž˜αž·αž“αž˜αžΆαž“αžŸαž»αžœαžαŸ’αžαž·αž—αžΆαž–αžαŸ’αžŸαŸ‚αžŸαŸ’αžšαž‘αžΆαž™ αžŠαŸ‚αž›αž“αžΆαŸ†αž‘αŸ…αžŠαž›αŸ‹ NPE αž“αŸ…αž–αŸαž›αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš
  5. αž‡αž½αžŸαž‡αž»αž›αž€αžΆαžšαž›αŸαž…αž’αŸ’αž›αžΆαž™αž’αž„αŸ’αž‚αž…αž„αž…αžΆαŸ†αž•αŸ’αžŸαŸαž„αž‘αŸ€αž (αž€αžΆαžšαžαž—αŸ’αž‡αžΆαž”αŸ‹αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž·αž‘αž˜αž·αž“αžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœαž“αŸ…αž–αŸαž›αž•αŸ’αžαžΆαž…αŸ‹)

αž αžΎαž™αž“αŸ…αžαŸ‚αž αžΌαžš!

αž€αžΆαžšαž…αž„αž…αžΆαŸ†αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž’αžŸαŸ‹αž˜αž·αž“αž˜αŸ‚αž“αž€αŸ’αž“αž»αž„αž˜αž½αž™αžαŸ’αž„αŸƒαž‘αŸ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž‡αžΆαž–αžΈαžšαŸ” αž˜αž·αž“αž˜αžΆαž“αž–αŸαž›αžœαŸαž›αžΆαž“αŸ…αžŸαž›αŸ‹αž‘αŸ αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž αžΎαž™ αž™αžΎαž„αž”αžΆαž“αžŸαž˜αŸ’αžšαŸαž…αž…αž·αžαŸ’αžαž”αžΎαž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžαŸ’αžŸαŸ‚αžŸαŸ’αžšαž‘αžΆαž™αžαž·αž…αž‡αžΆαž„αž˜αž»αž“ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž“αŸ…αž›αžΎαž—αŸ’αž“αžΆαž€αŸ‹αž„αžΆαžšαž…αŸ†αž“αž½αž“αž”αž½αž“αŸ” αž“αŸαŸ‡αž‚αž½αžšαžαŸ‚αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαžΆαž“αŸ‹αž™αŸ‰αžΆαž„αž αŸ„αž…αžŽαžΆαžŸαŸ‹αž˜αž½αž™αžŸαž”αŸ’αžαžΆαž αŸαŸ”

αž–αžΈαžšαžαŸ’αž„αŸƒαž”αžΆαž“αž€αž“αŸ’αž›αž„αž•αž»αžαž‘αŸ…...

αž₯αž‘αžΌαžœαž“αŸαŸ‡ Hazelcast αž€αŸ†αž–αž»αž„αž’αžŸαŸ‹αž€αžΆαžšαž…αž„αž…αžΆαŸ†αž αžΎαž™αŸ” αž€αŸ†αžŽαžαŸ‹αž αŸαžαž»αž”αžΆαž“αž”αž„αŸ’αž αžΆαž‰αžαžΆαž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž€αžΆαžšαž’αŸ’αžœαžΎαžαŸαžŸαŸ’αžαž–αžΈαžšαž”αžΈαžαŸ’αž„αŸƒ Hazelcast αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αžαŸ’αž’αžΌαž‰αžαŸ’αž’αŸ‚αžšαž’αŸ†αž–αžΈαž€αžΆαžšαžαŸ’αžœαŸ‡αž€αžΆαžšαž…αž„αž…αžΆαŸ†αž αžΎαž™αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž–αŸαž›αžαŸ’αž›αŸ‡αž…αž„αŸ’αž€αŸ„αž˜αž”αžΆαž“αžŠαž½αž›αžšαž›αŸ†αž αžΎαž™αžαŸ’αž“αžΆαŸ†αž„αž“αŸ…αžαŸ‚αž”αž“αŸ’αžαžŸαŸ’αž›αžΆαž”αŸ‹αž˜αŸ’αžαž„αž˜αž½αž™αŸ—αŸ” αž™αžΎαž„αž”αžΆαž“αž—αŸ’αž‡αžΆαž”αŸ‹ JVisualVM αž‘αŸ… hazelcast αž αžΎαž™αž”αžΆαž“αžƒαžΎαž‰ "αž€αžΆαžšαž˜αžΎαž›αžƒαžΎαž‰αž€αžΎαž“αž‘αžΎαž„" - αžœαžΆαž‡αžΆαž‘αŸ€αž„αž‘αžΆαžαŸ‹αž αŸ…αžαžΆ GC αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž˜αž·αž“αž’αžΆαž…αžŸαž˜αŸ’αž’αžΆαžαž’αž„αŸ’αž‚αž…αž„αž…αžΆαŸ†αž”αžΆαž“αž‘αŸαŸ”

αžšαž”αŸ€αž” αž“αž·αž„αž˜αžΌαž›αž αŸαžαž»αžŠαŸ‚αž›αž™αžΎαž„αžŸαžšαžŸαŸαžšαžŸαŸαžœαžΆαž€αž˜αŸ’αž˜αžŠαŸ‚αž›αž’αžΆαž…αž’αŸ’αžœαžΎαž˜αžΆαžαŸ’αžšαžŠαŸ’αž‹αžΆαž“αž”αžΆαž“αžαŸ’αž–αžŸαŸ‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ 1C: αžŸαž αž‚αŸ’αžšαžΆαžŸαŸ– Java, PostgreSQL, Hazelcast

αžœαžΆαž”αŸ’αžšαŸ‚αžαžΆαž“αŸ…αž€αŸ’αž“αž»αž„ hazelcast 3.4 αž“αŸ…αž–αŸαž›αž›αž»αž”αž•αŸ‚αž“αž‘αžΈ / multiMap (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)αŸ”

αž€αžΆαžšαž”αž„αŸ’αž€αžΎαžαž’αžαŸ’αžαžŸαž‰αŸ’αž‰αžΆαžŽαž”αŸαžŽαŸ’αžŽ

αž™αžΎαž„αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž›αŸαžαžŸαž˜αŸ’αž‚αžΆαž›αŸ‹αž…αŸ†αž“αž½αž“αž‚αžαŸ‹αŸ” αžŸαžΌαž˜αžŸαŸ’αžšαž˜αŸƒαžαžΆαž™αžΎαž„αžαŸ’αžšαžΌαžœαž€αžΆαžš Long αž˜αž½αž™αž•αŸ’αžŸαŸαž„αž‘αŸ€αžαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αž„αŸ’αž‚αž—αžΆαž–αžαŸ’αž˜αžΈαŸ” αž›αŸ†αžŠαžΆαž”αŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™αž‚αžΊαž˜αž·αž“αžŸαž˜αžšαž˜αŸ’αž™ αžαžΆαžšαžΆαž„αž–αžΆαž€αŸ‹αž–αŸαž“αŸ’αž’αž“αžΉαž„αž€αžΆαžšαž”αŸ†αž”αŸ‚αž€ - αžœαžΆαž”αŸ’αžšαŸ‚αžαžΆαž˜αžΆαž“αžŸαžΆαžš ID=1 αž€αŸ’αž“αž»αž„ DB1 αž“αž·αž„αžŸαžΆαžš ID=1 αž€αŸ’αž“αž»αž„ DB2 αž’αŸ’αž“αž€αž˜αž·αž“αž’αžΆαž…αžŠαžΆαž€αŸ‹αž›αŸαžαžŸαž˜αŸ’αž‚αžΆαž›αŸ‹αž“αŸαŸ‡αž“αŸ…αž€αŸ’αž“αž»αž„ Elasticsearch αž¬αž“αŸ…αž€αŸ’αž“αž»αž„ Hazelcast αž”αžΆαž“αž‘αŸ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž’αŸ’αžœαžΈαžŠαŸ‚αž›αž’αžΆαž€αŸ’αžšαž€αŸ‹αž”αŸ†αž•αž»αžαž“αŸ„αŸ‡αž‚αžΊαž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αž…αž„αŸ‹αž”αž‰αŸ’αž…αžΌαž›αž‚αŸ’αž“αžΆαž“αžΌαžœαž‘αž·αž“αŸ’αž“αž“αŸαž™αž–αžΈαž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™αž–αžΈαžšαž…αžΌαž›αž‘αŸ…αž€αŸ’αž“αž»αž„αž˜αž½αž™ (αž§αž‘αžΆαž αžšαžŽαŸ αž€αžΆαžšαžŸαž˜αŸ’αžšαŸαž…αžαžΆαž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™αž˜αž½αž™αž‚αžΊαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαžΆαž“αŸ‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αžαž·αžαž·αž‡αž“αž‘αžΆαŸ†αž„αž“αŸαŸ‡)αŸ” αž’αŸ’αž“αž€αž’αžΆαž…αž”αž“αŸ’αžαŸ‚αž˜ AtomicLongs αž‡αžΆαž…αŸ’αžšαžΎαž“αž‘αŸ… Hazelcast αž αžΎαž™αžšαž€αŸ’αžŸαžΆαž”αž‰αŸ’αž‡αžšαž“αŸ…αž‘αžΈαž“αŸ„αŸ‡ αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαž“αŸƒαž€αžΆαžšαž‘αž‘αž½αž›αž”αžΆαž“αž›αŸαžαžŸαž˜αŸ’αž‚αžΆαž›αŸ‹αžαŸ’αž˜αžΈαž‚αžΊαž€αžΎαž“αž‘αžΎαž„αž αžΎαž™αž‘αž‘αž½αž›αž”αžΆαž“ αž”αžΌαž€αž“αžΉαž„αž–αŸαž›αžœαŸαž›αžΆαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαžŸαŸ’αž“αžΎαžŸαž»αŸ†αž‘αŸ… Hazelcast αŸ” αž”αŸ‰αž»αž“αŸ’αžαŸ‚ Hazelcast αž˜αžΆαž“αž’αŸ’αžœαžΈαžŠαŸ‚αž›αž›αŸ’αž’αž”αŸ†αž•αž»αž - FlakeIdGenerator αŸ” αž“αŸ…αž–αŸαž›αž‘αžΆαž€αŸ‹αž‘αž„αž’αžαž·αžαž·αž‡αž“αž“αžΈαž˜αž½αž™αŸ— αž–αž½αž€αž‚αŸαžαŸ’αžšαžΌαžœαž”αžΆαž“αž•αŸ’αžαž›αŸ‹αž‡αž½αžšαž›αŸαžαžŸαž˜αŸ’αž‚αžΆαž›αŸ‹ αž§αž‘αžΆαž αžšαžŽαŸ αž‘αžΈαž˜αž½αž™ - αž–αžΈ 1 αžŠαž›αŸ‹ 10, αž‘αžΈαž–αžΈαžš - αž–αžΈ 000 αžŠαž›αŸ‹ 10 αž αžΎαž™αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž“αŸ…αž›αžΎαŸ” αž₯αž‘αžΌαžœαž“αŸαŸ‡ αž’αžαž·αžαž·αž‡αž“αž’αžΆαž…αž…αŸαž‰αž§αž”αž€αžšαžŽαŸαž€αŸ†αžŽαžαŸ‹αž’αžαŸ’αžαžŸαž‰αŸ’αž‰αžΆαžŽαžαŸ’αž˜αžΈαžŠαŸ„αž™αžαŸ’αž›αž½αž“αž―αž„αžšαž αžΌαžαžŠαž›αŸ‹αž‡αž½αžšαžŠαŸ‚αž›αž…αŸαž‰αž±αŸ’αž™αžœαžΆαž”αž‰αŸ’αž…αž”αŸ‹αŸ” αžœαžΆαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž™αŸ‰αžΆαž„αž†αžΆαž”αŸ‹αžšαž αŸαžŸ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž“αŸ…αž–αŸαž›αž’αŸ’αž“αž€αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‘αžΎαž„αžœαž·αž‰ (αž“αž·αž„αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž—αŸ’αž‰αŸ€αžœ Hazelcast) αž›αŸ†αžŠαžΆαž”αŸ‹αžαŸ’αž˜αžΈαž˜αž½αž™αž“αžΉαž„αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜ - αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž€αžΆαžšαžšαŸ†αž›αž„αŸ”αž›αŸ” αž›αžΎαžŸαž–αžΈαž“αŸαŸ‡αž‘αŸ€αž αž’αŸ’αž“αž€αž’αž—αž·αžœαžŒαŸ’αžαž“αŸαž–αž·αžαž‡αžΆαž˜αž·αž“αž™αž›αŸ‹αž–αžΈαž˜αžΌαž›αž αŸαžαž»αžŠαŸ‚αž›αž›αŸαžαžŸαž˜αŸ’αž‚αžΆαž›αŸ‹αž˜αžΆαž“αž…αŸ†αž“αž½αž“αž‚αžαŸ‹ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž˜αžΆαž“αž—αžΆαž–αž˜αž·αž“αžŸαŸŠαžΈαžŸαž„αŸ’αžœαžΆαž€αŸ‹αž‚αŸ’αž“αžΆαŸ” αž™αžΎαž„αž”αžΆαž“αžαŸ’αž›αžΉαž„αž’αŸ’αžœαžΈαŸ—αž‚αŸ’αžšαž”αŸ‹αž™αŸ‰αžΆαž„ αž αžΎαž™αž”αŸ’αžαžΌαžšαž‘αŸ… UUIDsαŸ”

αž“αž·αž™αžΆαž™αž’αžΈαž‰αŸ’αž…αžΉαž„αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αŸ’αž“αž€αžŠαŸ‚αž›αž…αž„αŸ‹αž’αŸ’αžœαžΎαžŠαžΌαž… Twitter αž˜αžΆαž“αž”αžŽαŸ’αžŽαžΆαž›αŸαž™ Snowcast αž”αŸ‚αž”αž“αŸαŸ‡ - αž“αŸαŸ‡αž‚αžΊαž‡αžΆαž€αžΆαžšαž’αž“αž»αžœαžαŸ’αž Snowflake αž“αŸ…αž›αžΎ Hazelcast αŸ” αž’αŸ’αž“αž€αž’αžΆαž…αž˜αžΎαž›αžœαžΆαž“αŸ…αž‘αžΈαž“αŸαŸ‡αŸ–

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 αŸ” αž§αž‘αžΆαž αžšαžŽαŸ αž™αžΎαž„αž˜αžΆαž“αžαŸ’αž“αžΆαž€αŸ‹ Application αž™αžΎαž„αž…αž„αŸ‹αžšαž€αŸ’αžŸαžΆαž‘αž»αž€ αž“αž·αž„αž’αžΆαž“αžœαžΆαŸ” αžšαž€αŸ’αžŸαžΆαž‘αž»αž€αŸ–

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 αžαŸ’αž˜αžΈαž€αŸ†αž‘αž»αž„αž–αŸαž›αž’αžΆαž”αŸ‹αžŠαŸαž node-by-node αž‘αŸαŸ” αž“αŸ…αž…αŸ†αžŽαž»αž…αž“αŸαŸ‡ αž™αžΎαž„αž”αžΆαž“αžŸαž˜αŸ’αžšαŸαž…αž…αž·αžαŸ’αžαžαžΆαž™αžΎαž„αž’αžΆαž…αžšαžŸαŸ‹αž“αŸ…αžŠαŸ„αž™αž˜αž·αž“αž…αžΆαŸ†αž”αžΆαž…αŸ‹αžŸαŸ’αžœαŸ‚αž„αžšαž€αž›αž·αž”αž·αž€αŸ’αžšαž˜αŸ” αž™αŸ‰αžΆαž„αžŽαžΆαž˜αž·αž‰ αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αž”αŸ’αžšαžΎ 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 - αž›αŸ’αž’ αž–αžΈαžšαž‘αŸ…αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™ - αž’αžΆαž€αŸ’αžšαž€αŸ‹

αž€αžΆαžšαž…αžΌαž›αž‘αŸ…αž€αžΆαž“αŸ‹αžƒαŸ’αž›αžΆαŸ†αž„αžŸαž˜αŸ’αž„αžΆαžαŸ‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž‘αž·αž“αŸ’αž“αž“αŸαž™αž‚αžΊαžαŸ‚αž„αžαŸ‚αž”αŸ’αžšαžŸαžΎαžšαž‡αžΆαž„αž€αžΆαžšαž…αžΌαž›αž‘αŸ…αž€αžΆαž“αŸ‹αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž’αŸ’αž“αž€αž€αŸαž˜αž·αž“αž…αž„αŸ‹αžšαž€αŸ’αžŸαžΆαž‘αž»αž€αž€αŸ†αžŽαžαŸ‹αžαŸ’αžšαžΆαžŠαŸ‚αž›αž˜αž·αž“αž”αŸ’αžšαžΎαž•αž„αžŠαŸ‚αžšαŸ” αž™αžΎαž„αž‘αž»αž€αž€αžΆαžšαžŸαž˜αŸ’αžšαŸαž…αž…αž·αžαŸ’αžαž’αŸ†αž–αžΈαž’αŸ’αžœαžΈαžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž‘αž»αž€αž€αŸ’αž“αž»αž„αžƒαŸ’αž›αžΆαŸ†αž„αžšαž αžΌαžαžŠαž›αŸ‹αžŠαŸ†αžŽαžΆαž€αŸ‹αž€αžΆαž›αž…αž»αž„αž€αŸ’αžšαŸ„αž™αž“αŸƒαž€αžΆαžšαž’αž—αž·αžœαžŒαŸ’αžαž“αŸαŸ” αž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αž˜αž»αžαž„αžΆαžšαžαŸ’αž˜αžΈαžαŸ’αžšαžΌαžœαž”αžΆαž“αžŸαžšαžŸαŸαžšαž€αžΌαžŠ αž™αžΎαž„αž”αžΎαž€αž€αžΆαžšαž€αžαŸ‹αžαŸ’αžšαžΆαžŸαŸ†αžŽαž½αžšαž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„ PostgreSQL (log_min_duration_statement αž‘αŸ… 0) αž αžΎαž™αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αžΆαžšαž’αŸ’αžœαžΎαžαŸαžŸαŸ’αžαž•αŸ’αž‘αž»αž€αžšαž™αŸˆαž–αŸαž› 20 αž“αžΆαž‘αžΈαŸ” αžŠαŸ„αž™αž”αŸ’αžšαžΎαž€αŸ†αžŽαžαŸ‹αž αŸαžαž»αžŠαŸ‚αž›αž”αžΆαž“αž”αŸ’αžšαž˜αžΌαž› αž§αž”αž€αžšαžŽαŸαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αžŠαžΌαž…αž‡αžΆ pgFouine αž“αž·αž„ pgBadger αž’αžΆαž…αž”αž„αŸ’αž€αžΎαžαžšαž”αžΆαž™αž€αžΆαžšαžŽαŸαžœαž·αž—αžΆαž‚αž”αžΆαž“αŸ” αž“αŸ…αž€αŸ’αž“αž»αž„αžšαž”αžΆαž™αž€αžΆαžšαžŽαŸ αž™αžΎαž„αžŸαŸ’αžœαŸ‚αž„αžšαž€αžŸαŸ†αžŽαž½αžšαž™αžΊαž αž“αž·αž„αž‰αžΉαž€αž‰αžΆαž”αŸ‹αž‡αžΆαž…αž˜αŸ’αž”αž„αŸ” αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžŸαŸ†αžŽαž½αžšαž™αžΊαž αž™αžΎαž„αž”αž„αŸ’αž€αžΎαžαž•αŸ‚αž“αž€αžΆαžšαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž· (αž–αž“αŸ’αž™αž›αŸ‹) αž αžΎαž™αžœαžΆαž™αžαž˜αŸ’αž›αŸƒαžαžΆαžαžΎαžŸαŸ†αžŽαž½αžšαž”αŸ‚αž”αž“αŸαŸ‡αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž–αž“αŸ’αž›αžΏαž“αžŠαŸ‚αžšαž¬αž‘αŸαŸ” αžŸαŸ†αžŽαžΎαž‰αžΉαž€αž‰αžΆαž”αŸ‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž‘αž·αž“αŸ’αž“αž“αŸαž™αž”αž‰αŸ’αž…αžΌαž›αžŠαžΌαž…αž‚αŸ’αž“αžΆαžŸαž˜αž›αŸ’αž’αž‘αŸ…αž€αŸ’αž“αž»αž„αžƒαŸ’αž›αžΆαŸ†αž„αžŸαž˜αŸ’αž„αžΆαžαŸ‹αŸ” αž™αžΎαž„αž–αŸ’αž™αžΆαž™αžΆαž˜αžšαž€αŸ’αžŸαžΆαžŸαŸ†αžŽαž½αžš "αžšαžΆαž”αžŸαŸ’αž˜αžΎ" αž˜αž½αž™αžαžΆαžšαžΆαž„αž€αŸ’αž“αž»αž„αž˜αž½αž™αžŸαŸ†αžŽαž½αžšαŸ”

αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαŸ”

SV αž‡αžΆαžŸαŸαžœαžΆαž€αž˜αŸ’αž˜αž’αž“αž‘αžΆαž‰αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŠαžΆαž€αŸ‹αž±αŸ’αž™αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž“αŸ…αž“αž·αž‘αžΆαžƒαžšαžŠαžΌαžœαž†αŸ’αž“αžΆαŸ† 2017 αž αžΎαž™αž‡αžΆαž•αž›αž·αžαž•αž›αžŠαžΆαž…αŸ‹αžŠαŸ„αž™αž‘αŸ‚αž€ SV αžαŸ’αžšαžΌαžœαž”αžΆαž“αž…αŸαž‰αž•αŸ’αžŸαžΆαž™αž“αŸ…αžαŸ‚αžœαž·αž…αŸ’αž†αž·αž€αžΆ αž†αŸ’αž“αžΆαŸ† 2017 (αž“αŸ…αž–αŸαž›αž“αŸ„αŸ‡αž“αŸ…αž€αŸ’αž“αž»αž„αžŸαŸ’αžαžΆαž“αž—αžΆαž–αž€αŸ†αžŽαŸ‚αž”αŸ‚αžαžΆ)αŸ”

αž€αŸ’αž“αž»αž„αžšαž™αŸˆαž–αŸαž›αž‡αžΆαž„αž˜αž½αž™αž†αŸ’αž“αžΆαŸ†αž“αŸƒαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαž“αŸαŸ‡ αž˜αž·αž“αž˜αžΆαž“αž”αž‰αŸ’αž αžΆαž’αŸ’αž„αž“αŸ‹αž’αŸ’αž„αžšαž“αŸ…αž€αŸ’αž“αž»αž„αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαž“αŸƒαžŸαŸαžœαžΆαž€αž˜αŸ’αž˜αž’αž“αž‘αžΆαž‰ CB αž‘αŸαŸ” αž™αžΎαž„αžαŸ’αžšαž½αžαž–αž·αž“αž·αžαŸ’αž™αžŸαŸαžœαžΆαž’αž“αž‘αžΆαž‰αžαžΆαž˜αžšαž™αŸˆ Zabbixαž”αŸ’αžšαž˜αžΌαž›αž“αž·αž„αžŠαžΆαž€αŸ‹αž–αž„αŸ’αžšαžΆαž™αž–αžΈ αž«αžŸαŸ’αžŸαžΈ.

αž€αžΆαžšαž…αŸ‚αž€αž…αžΆαž™αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸ SV αžαŸ’αžšαžΌαžœαž”αžΆαž“αž•αŸ’αž‚αžαŸ‹αž•αŸ’αž‚αž„αŸ‹αž‡αžΆαž‘αž˜αŸ’αžšαž„αŸ‹αž€αž‰αŸ’αž…αž”αŸ‹αžŠαžΎαž˜αŸ– RPM, DEB, MSI αŸ” αž”αžΌαž€αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ Windows αž™αžΎαž„αž•αŸ’αžαž›αŸ‹αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžŠαŸ†αž‘αžΎαž„αžαŸ‚αž˜αž½αž™αž€αŸ’αž“αž»αž„αž‘αž˜αŸ’αžšαž„αŸ‹αž“αŸƒ EXE αžαŸ‚αž˜αž½αž™αžŠαŸ‚αž›αžŠαŸ†αž‘αžΎαž„ server, Hazelcast αž“αž·αž„ Elasticsearch αž“αŸ…αž›αžΎαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αžαŸ‚αž˜αž½αž™αŸ” αžŠαŸ†αž”αžΌαž„αž‘αžΎαž™ αž™αžΎαž„αž”αžΆαž“αžŸαŸ†αžŠαŸ…αž‘αŸ…αž›αžΎαž€αŸ†αžŽαŸ‚αž“αŸƒαž€αžΆαžšαžŠαŸ†αž‘αžΎαž„αž“αŸαŸ‡αžαžΆαž‡αžΆαž€αŸ†αžŽαŸ‚ "αžŸαžΆαž€αž›αŸ’αž”αž„" αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž₯αž‘αžΌαžœαž“αŸαŸ‡αžœαžΆαž”αžΆαž“αž€αŸ’αž›αžΆαž™αž‘αŸ…αž‡αžΆαž…αŸ’αž”αžΆαžŸαŸ‹αžαžΆαž“αŸαŸ‡αž‚αžΊαž‡αžΆαž‡αž˜αŸ’αžšαžΎαžŸαž“αŸƒαž€αžΆαžšαžŠαžΆαž€αŸ‹αž–αž„αŸ’αžšαžΆαž™αžŠαŸαž–αŸαž‰αž“αž·αž™αž˜αž”αŸ†αž•αž»αžαŸ”

αž”αŸ’αžšαž—αž–: www.habr.com

αž”αž“αŸ’αžαŸ‚αž˜αž˜αžαž·αž™αŸ„αž”αž›αŸ‹