αž€αžΆαžšαžŠαžΆαž€αŸ‹αž–αž„αŸ’αžšαžΆαž™ Apache Ignite ZeroαŸ– αž–αž·αžαž‡αžΆαžŸαžΌαž“αŸ’αž™αž˜αŸ‚αž“αž‘αŸ?

αž€αžΆαžšαžŠαžΆαž€αŸ‹αž–αž„αŸ’αžšαžΆαž™ Apache Ignite ZeroαŸ– αž–αž·αžαž‡αžΆαžŸαžΌαž“αŸ’αž™αž˜αŸ‚αž“αž‘αŸ?

αž™αžΎαž„αž‡αžΆαž•αŸ’αž“αŸ‚αž€αž’αž—αž·αžœαžŒαŸ’αžαž“αŸαž”αž…αŸ’αž…αŸαž€αžœαž·αž‘αŸ’αž™αžΆαž“αŸƒαž”αžŽαŸ’αžαžΆαž‰αž›αž€αŸ‹αžšαžΆαž™αŸ” αžαŸ’αž„αŸƒαž˜αž½αž™ αž’αŸ’αž“αž€αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž€αŸ†αžŽαžαŸ‹αž—αžΆαžšαž€αž·αž…αŸ’αž…αž”αž„αŸ’αž€αžΎαž“αž›αŸ’αž”αžΏαž“αž“αŸƒαž€αžΆαžšαž‚αžŽαž“αžΆαžαŸ’αž“αžΆαžαž’αŸ†αžŠαŸ„αž™αž”αŸ’αžšαžΎ Apache Ignite αžšαž½αž˜αž‡αžΆαž˜αž½αž™αž“αžΉαž„ MSSQL αž αžΎαž™αž”αžΆαž“αž”αž„αŸ’αž αžΆαž‰αž‚αŸαž αž‘αŸ†αž–αŸαžšαž˜αž½αž™αžŠαŸ‚αž›αž˜αžΆαž“αžšαžΌαž”αž—αžΆαž–αžŸαŸ’αž’αžΆαžαŸ— αž“αž·αž„αž§αž‘αžΆαž αžšαžŽαŸαž“αŸƒαž€αžΌαžŠ Java αŸ” αžαŸ’αž‰αž»αŸ†αž…αžΌαž›αž…αž·αžαŸ’αžαž‚αŸαž αž‘αŸ†αž–αŸαžšαž“αŸαŸ‡αž—αŸ’αž›αžΆαž˜αŸ— αž€αžΆαžšαžŠαžΆαž€αŸ‹αž–αž„αŸ’αžšαžΆαž™αžŸαžΌαž“αŸ’αž™αž€αžΆαžšαž–αž·αž–αžŽαŸŒαž“αžΆαžŠαŸ‚αž›αžŸαž“αŸ’αž™αžΆαžαžΆαž˜αžΆαž“αž’αž–αŸ’αž—αžΌαžαž αŸαžαž»αŸ– αž’αŸ’αž“αž€αž˜αž·αž“αž…αžΆαŸ†αž”αžΆαž…αŸ‹αžŠαžΆαž€αŸ‹αž€αžΌαžŠ Java ឬ Scala αžŠαŸ„αž™αžŠαŸƒαž“αŸ…αž›αžΎαžαŸ’αž“αžΆαŸ†αž„αž“αžΈαž˜αž½αž™αŸ—αž€αŸ’αž“αž»αž„αž€αŸ’αžšαž‘αžΆαž…αžαŸ’αžšαž„αŸ’αž‚ αž αžΎαž™αžŠαžΆαž€αŸ‹αž–αž„αŸ’αžšαžΆαž™αžœαžΆαž‘αžΎαž„αžœαž·αž‰αžšαžΆαž›αŸ‹αž–αŸαž›αžŠαŸ‚αž›αžœαžΆαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαŸ” αž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αž€αžΆαžšαž„αžΆαžšαžšαžΈαž€αž…αž˜αŸ’αžšαžΎαž“ αžœαžΆαž”αžΆαž“αž”αž„αŸ’αž αžΆαž‰αžαžΆ Zero Deployment αž˜αžΆαž“αž€αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹ αž›αž€αŸ’αžαžŽαŸˆαž–αž·αžŸαŸαžŸαžŠαŸ‚αž›αžαŸ’αž‰αž»αŸ†αž…αž„αŸ‹αž…αŸ‚αž€αžšαŸ†αž›αŸ‚αž€αŸ” αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αž€αžΆαžšαž€αžΆαžαŸ‹αž‚αžΊαž‡αžΆαž‚αŸ†αž“αž·αž αž“αž·αž„αž–αŸαžαŸŒαž˜αžΆαž“αž›αž˜αŸ’αž’αž·αžαž“αŸƒαž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαŸ”

1. αžŸαŸαž…αž€αŸ’αžαžΈαžαŸ’αž›αŸ‚αž„αž€αžΆαžšαžŽαŸαž’αŸ†αž–αžΈαž”αž‰αŸ’αž αžΆ

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

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

2. αž€αžΆαžšαžŸαž·αž€αŸ’αžŸαžΆαž’αž€αŸ’αžŸαžšαžŸαž·αž›αŸ’αž”αŸ

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

αž˜αžΆαžαŸ’αžšαžΆ 2016 αž€αžΆαžšαžŽαŸ‚αž“αžΆαŸ† Apache IgniteαŸ– αž‡αŸ†αž αžΆαž“αžŠαŸ†αž”αžΌαž„ αž˜αžΆαž“αžαŸ†αžŽαž—αŸ’αž‡αžΆαž”αŸ‹αž‘αŸ…αž€αžΆαž“αŸ‹αž―αž€αžŸαžΆαžšαž“αŸƒαž‚αž˜αŸ’αžšαŸ„αž„ Apache Ignite αž αžΎαž™αž“αŸ…αž–αŸαž›αž‡αžΆαž˜αž½αž™αž‚αŸ’αž“αžΆαž“αŸ„αŸ‡αž˜αžΆαž“αž€αžΆαžšαžŸαŸ’αžαžΈαž”αž“αŸ’αž‘αŸ„αžŸαž…αŸ†αž–αŸ„αŸ‡αž—αžΆαž–αž˜αž·αž“αž…αŸ’αž”αžΆαžŸαŸ‹αž›αžΆαžŸαŸ‹αž“αŸƒαž―αž€αžŸαžΆαžšαž“αŸαŸ‡αŸ” αžαŸ’αž‰αž»αŸ†αž’αžΆαž“αž‘αžΎαž„αžœαž·αž‰αž–αžΈαžšαž”αžΈαžŠαž„ αž—αžΆαž–αž…αŸ’αž”αžΆαžŸαŸ‹αž›αžΆαžŸαŸ‹αž˜αž·αž“αž˜αž€αž‘αŸαŸ” αžαŸ’αž‰αž»αŸ†αž™αŸ„αž„αž‘αŸ…αž€αžΆαžšαž”αž„αŸ’αžšαŸ€αž“αž•αŸ’αž›αžΌαžœαž€αžΆαžš αž€αžΆαžšαž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜, αžŠαŸ‚αž›
αžŸαž“αŸ’αž™αžΆαžŠαŸ„αž™αžŸαž»αž‘αž·αžŠαŸ’αž‹αž·αž“αž·αž™αž˜αžαžΆ "αž’αŸ’αž“αž€αž“αžΉαž„αž€αŸ’αžšαŸ„αž€αž‘αžΎαž„αž αžΎαž™αžšαžαŸ‹αž™αŸ‰αžΆαž„αžŸαŸ’αžœαžΆαž αžΆαž”αŸ‹!" αžαŸ’αž‰αž»αŸ†αž€αŸ†αž–αž»αž„αžŸαŸ’αžœαŸ‚αž„αžšαž€αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αž’αžαŸαžšαž”αžšαž·αžŸαŸ’αžαžΆαž“ αžŠαŸ„αž™αž˜αžΎαž›αžœαžΈαžŠαŸαž’αžΌ Apache Ignite Essentials αž…αŸ†αž“αž½αž“αž–αžΈαžš αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžœαžΆαž˜αž·αž“αž˜αžΆαž“αž”αŸ’αžšαž™αŸ„αž‡αž“αŸαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αž·αž…αŸ’αž…αž€αžΆαžšαž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹αžšαž”αžŸαŸ‹αžαŸ’αž‰αž»αŸ†αž‘αŸαŸ” αžαŸ’αž‰αž»αŸ†αž”αžΎαž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš Ignite αžŠαŸ„αž™αž‡αŸ„αž‚αž‡αŸαž™αž–αžΈαž”αž“αŸ’αž‘αžΆαžαŸ‹αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαž‡αžΆαž˜αž½αž™αž“αžΉαž„αž―αž€αžŸαžΆαžšαžŸαŸ’αžαž„αŸ‹αžŠαžΆαžš β€œexample-ignite.xml” αžŠαŸ„αž™αž”αž„αŸ’αž€αžΎαžαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžŠαŸ†αž”αžΌαž„ αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‚αžŽαž“αžΆ αžŠαŸ„αž™αž”αŸ’αžšαžΎ Maven αŸ” αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžŠαŸ†αžŽαžΎαžšαž€αžΆαžš αž“αž·αž„αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹ Zero Deployment αž–αž·αžαž‡αžΆαžŸαŸ’αžšαžŸαŸ‹αžŸαŸ’αž’αžΆαžαž˜αŸ‚αž“!

αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αž’αžΆαž“αž”αž“αŸ’αžαŸ‚αž˜ αž αžΎαž™αž“αŸ…αž‘αžΈαž“αŸ„αŸ‡αž§αž‘αžΆαž αžšαžŽαŸαž—αŸ’αž›αžΆαž˜αŸ—αž”αŸ’αžšαžΎ affinityKey (αž”αž„αŸ’αž€αžΎαžαž˜αž»αž“αžαžΆαž˜αžšαž™αŸˆαžŸαŸ†αžŽαž½αžš SQL) αž αžΎαž™αžαŸ‚αž˜αž‘αžΆαŸ†αž„αž”αŸ’αžšαžΎ BinaryObject αž’αžΆαžαŸŒαž€αŸ†αž”αžΆαŸ†αž„αŸ–

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

αžαŸ’αž‰αž»αŸ†β€‹αž’αžΆαž“β€‹αžœαžΆ αž”αž“αŸ’αžαž·αž…αŸ– αž‘αŸ’αžšαž„αŸ‹αž‘αŸ’αžšαžΆαž™αž‚αŸ„αž›αž–αžΈαžš - αž’αŸ’αžœαžΈαž˜αž½αž™αžŠαžΌαž…αž‡αžΆαž€αžΆαžšαž†αŸ’αž›αž»αŸ‡αž”αž‰αŸ’αž…αžΆαŸ†αž„ αž€αžΆαžšαž…αžΌαž›αž”αŸ’αžšαžΎαžœαžΆαž›αž“αŸƒαžœαžαŸ’αžαž»αžαžΆαž˜αžˆαŸ’αž˜αŸ„αŸ‡αŸ” αž’αžΆαž…β€‹αž’αžΆαž“β€‹αžαž˜αŸ’αž›αŸƒβ€‹αž“αŸƒβ€‹αžœαžΆαž›β€‹αž˜αž½αž™β€‹αžŠαŸ„αž™β€‹αž˜αž·αž“β€‹αž…αžΆαŸ†αž”αžΆαž…αŸ‹β€‹αž”αŸ†αž•αŸ’αž›αžΆαž‰β€‹αžœαžαŸ’αžαž»β€‹αž‘αžΆαŸ†αž„αžŸαŸ’αžšαž»αž„ (αžšαž€αŸ’αžŸαžΆβ€‹αž‘αž»αž€β€‹αž€αžΆαžšβ€‹αž…αž„αž…αžΆαŸ†)αŸ” αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž αŸαžαž»αž’αŸ’αžœαžΈαž”αžΆαž“αž‡αžΆ BinaryObject αž”αŸ’αžšαžΎαž‡αŸ†αž“αž½αžŸ Person αž…αžΆαž”αŸ‹αžαžΆαŸ†αž„αž–αžΈαž˜αžΆαž“ Zero Deployment? αž αŸαžαž»αž’αŸ’αžœαžΈαž”αžΆαž“αž‡αžΆ IgniteCache αž•αŸ’αž‘αŸαžšαž‘αŸ… IgniteCache ? αžœαžΆαž˜αž·αž“αž‘αžΆαž“αŸ‹αž…αŸ’αž”αžΆαžŸαŸ‹αž“αŸ…αž‘αžΎαž™αž‘αŸαŸ”

αžαŸ’αž‰αž»αŸ†αž€αŸ†αž–αž»αž„αž”αž„αŸ’αž€αžΎαžαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž€αž»αŸ†αž–αŸ’αž™αžΌαž‘αŸαžšαž‘αžΎαž„αžœαž·αž‰ αžŠαžΎαž˜αŸ’αž”αžΈαž²αŸ’αž™αžŸαž˜αž“αžΉαž„αž€αžšαžŽαžΈαžšαž”αžŸαŸ‹αžαŸ’αž‰αž»αŸ†αŸ” αž‚αž“αŸ’αž›αžΉαŸ‡αžŸαŸ†αžαžΆαž“αŸ‹αž“αŸƒαžαžαž…αŸ†αžŽαž»αž…αž›αž€αŸ‹αž€αŸ’αž“αž»αž„ MSSQL αžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αŸ†αžŽαžαŸ‹αž‡αžΆ [id] [int] NOT NULL αžαŸ’αž‰αž»αŸ†αž”αž„αŸ’αž€αžΎαžαžƒαŸ’αž›αžΆαŸ†αž„αžŸαž˜αŸ’αž„αžΆαžαŸ‹αžŠαŸ„αž™αž—αžΆαž–αžŸαŸ’αžšαžŠαŸ€αž„αž‚αŸ’αž“αžΆ

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

αž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹ xml αžαŸ’αž‰αž»αŸ†αž”αž„αŸ’αž αžΆαž‰αžαžΆαžƒαŸ’αž›αžΆαŸ†αž„αžŸαž˜αŸ’αž„αžΆαžαŸ‹αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ‚αž„αž…αŸ‚αž€

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

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

αžαŸ’αž‰αž»αŸ†αž€αŸ†αž–αž»αž„αž’αžΆαž“αž˜αŸαžšαŸ€αž“ αž€αž˜αŸ’αž˜αžœαž·αž’αžΈ Ignite Compute αžŠαŸ†αž”αžΌαž„, αžαŸ’αž‰αž»αŸ†αž’αŸ’αžœαžΎαžœαžΆαžŠαŸ„αž™αž€αžΆαžšαž”αŸ’αžšαŸ€αž”αž’αŸ€αž”αŸ” αž“αŸ…αž›αžΎαžαŸ’αž“αžΆαŸ†αž„αž…αž„αŸ’αž€αŸ„αž˜αž“αžΈαž˜αž½αž™αŸ— αžαŸ’αž‰αž»αŸ†αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš IgniteRunnable() αž’αŸ’αžœαžΈαž˜αž½αž™αžŠαžΌαž…αž“αŸαŸ‡αŸ–

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

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

αžαŸ’αž‰αž»αŸ†αž”αžΎαž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαžŸαžΆαž€αž›αŸ’αž”αž„ CentOs αž–αžΈαžš αž”αž‰αŸ’αž‡αžΆαž€αŸ‹αž’αžΆαžŸαž™αžŠαŸ’αž‹αžΆαž“ IP αž€αŸ’αž“αž»αž„ default-config.xml αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž›αžΎαž“αžΈαž˜αž½αž™αŸ—

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

αžαŸ’αž“αžΆαŸ†αž„ Ignite αž‘αžΆαŸ†αž„αž–αžΈαžšαž€αŸ†αž–αž»αž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš αž αžΎαž™αž’αžΆαž…αž˜αžΎαž›αžƒαžΎαž‰αž‚αŸ’αž“αžΆαž‘αŸ…αžœαž·αž‰αž‘αŸ…αž˜αž€αŸ” αžαŸ’αž‰αž»αŸ†αž”αž‰αŸ’αž‡αžΆαž€αŸ‹αž’αžΆαžŸαž™αžŠαŸ’αž‹αžΆαž“αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž€αžΆαžšαž“αŸ…αž€αŸ’αž“αž»αž„ xml config αž“αŸƒαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž’αžαž·αžαž·αž‡αž“ αžœαžΆαž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜ αž”αž“αŸ’αžαŸ‚αž˜αžαŸ’αž“αžΆαŸ†αž„αž‘αžΈαž”αžΈαž‘αŸ… topology αž αžΎαž™αž—αŸ’αž›αžΆαž˜αŸ—αž“αŸ„αŸ‡αž˜αžΆαž“αžαŸ’αž“αžΆαŸ†αž„αž–αžΈαžšαž˜αŸ’αžαž„αž‘αŸ€αžαŸ” αž€αŸ†αžŽαžαŸ‹αž αŸαžαž»αž”αž„αŸ’αž αžΆαž‰ β€œClassNotFoundException: model.SalesPoint” αž“αŸ…αž€αŸ’αž“αž»αž„αž”αž“αŸ’αž‘αžΆαžαŸ‹

SalesPoint sp=salesPointCache.get(spId);

StackOverflow αž“αž·αž™αžΆαž™αžαžΆαž αŸαžαž»αž•αž›αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αŸ†αž αž»αžŸαž‚αžΊαžαžΆαž˜αž·αž“αž˜αžΆαž“αžαŸ’αž“αžΆαž€αŸ‹ SalesPoint αž•αŸ’αž‘αžΆαž›αŸ‹αžαŸ’αž›αž½αž“αž“αŸ…αž›αžΎαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸ CentOs αž‘αŸαŸ” αž™αžΎαž„β€‹αž”αžΆαž“β€‹αž˜αž€β€‹αžŠαž›αŸ‹αŸ” αžαžΎαž’αŸ’αžœαžΎαžŠαžΌαž…αž˜αŸ’αžαŸαž…αž’αŸ†αž–αžΈ "αž’αŸ’αž“αž€αž˜αž·αž“αž…αžΆαŸ†αž”αžΆαž…αŸ‹αž”αŸ’αžšαžΎαž€αžΌαžŠ Java αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αžŠαŸ„αž™αžŠαŸƒαž“αŸ…αž›αžΎαžαŸ’αž“αžΆαŸ†αž„αž“αžΈαž˜αž½αž™αŸ—" αž αžΎαž™αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž“αŸ…αž›αžΎ? ឬ "αž€αžΌαžŠ Java αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€" αž˜αž·αž“αž˜αŸ‚αž“αž’αŸ†αž–αžΈ SalesPoint αž‘αŸ?

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

Valentin Kulichenko, αžŸαŸ’αžαžΆαž”αžαŸ’αž™αž€αžšαž“αžΆαŸ†αž˜αž»αžαž“αŸ…αž”αŸ’αžšαž–αŸαž“αŸ’αž’ GridGain, αž…αž˜αŸ’αž›αžΎαž™ αž“αŸ…αž›αžΎ StackOverflow, αžαŸ‚αž˜αŸαžŸαžΆ 2016:

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

αž˜αžαž·β€‹αž˜αžΆαž“β€‹αžŸαž·αž‘αŸ’αž’αž·β€‹αž’αŸ†αžŽαžΆαž…β€‹αž˜αž½αž™β€‹αž•αŸ’αžŸαŸαž„β€‹αž‘αŸ€αžβ€‹: αžŠαŸαž“αžΈαžŸ αž˜αŸ‰αžΆαžŠαžΆ, αž“αžΆαž™αž€αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž•αž›αž·αžαž•αž›, αž”αŸ’αžšαž–αŸαž“αŸ’αž’ GridGain αŸ”

αž’αžαŸ’αžαž”αž‘αž’αŸ†αž–αžΈ Habre αž’αŸ†αž–αžΈαžŸαŸαžœαžΆαž˜αžΈαž€αŸ’αžšαžΌ αž™αŸ„αž„αž’αžαŸ’αžαž”αž‘αž”αžΈαžŠαŸ„αž™ Denis Magda: αžŸαŸαžœαžΆαž˜αžΈαž€αŸ’αžšαžΌαž•αŸ’αž“αŸ‚αž€ I, αžŸαŸαžœαžΆαž˜αžΈαž€αŸ’αžšαžΌαž•αŸ’αž“αŸ‚αž€αž‘αžΈ II, αžŸαŸαžœαžΆαž˜αžΈαž€αŸ’αžšαžΌαž•αŸ’αž“αŸ‚αž€ III ្០៑៦-αŸ’αŸ αŸ‘αŸ§αŸ” αž“αŸ…αž€αŸ’αž“αž»αž„αž’αžαŸ’αžαž”αž‘αž‘αžΈαž–αžΈαžš Denis αžŸαŸ’αž“αžΎαž±αŸ’αž™αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αžαŸ’αž“αžΆαŸ†αž„αž…αž„αŸ’αž€αŸ„αž˜αžαžΆαž˜αžšαž™αŸˆ MaintenanceServiceNodeStartup.jar αŸ” αž’αŸ’αž“αž€αž€αŸαž’αžΆαž…αž”αŸ’αžšαžΎαž€αžΆαžšαž”αžΎαž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž‡αžΆαž˜αž½αž™αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’ xml αž“αž·αž„αž”αž“αŸ’αž‘αžΆαžαŸ‹αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαžŠαžΆαž€αŸ‹αžαŸ’αž“αžΆαž€αŸ‹αž•αŸ’αž‘αžΆαž›αŸ‹αžαŸ’αž›αž½αž“αžŠαŸ„αž™αžŠαŸƒαž“αŸ…αž›αžΎαžαŸ’αž“αžΆαŸ†αž„αž…αž„αŸ’αž€αŸ„αž˜αž“αžΈαž˜αž½αž™αŸ—αžŠαŸ‚αž›αž”αžΆαž“αžŠαžΆαž€αŸ‹αž–αž„αŸ’αžšαžΆαž™αŸ–

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

αž‡αžΆαž€αžΆαžšαž–αž·αž αž“αŸ„αŸ‡αž αžΎαž™αž‡αžΆαžœαžΆαŸ” αž“αŸ…αž‘αžΈαž“αŸαŸ‡αžœαžΆαž”αŸ’αžšαŸ‚αž…αŸαž‰ αž αŸαžαž»αž’αŸ’αžœαžΈαž”αžΆαž“αž‡αžΆαž‘αž˜αŸ’αžšαž„αŸ‹αž‚αŸ„αž›αž–αžΈαžšαžŠαŸαž’αžΆαžαŸŒαž€αŸ†αž”αžΆαŸ†αž„αž“αŸαŸ‡!

3.SingleJar

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

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

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

4 - αžŸαŸαž…αž€αŸ’αžαžΈβ€‹αžŸαž“αŸ’αž“αž·αžŠαŸ’αž‹αžΆαž“

αž€αžΆαžšαžαž·αŸ‡αžŠαŸ€αž›αžŠαŸ†αž”αžΌαž„αžŠαŸ‚αž›αž”αžΆαž“αž‡αž½αž”αž”αŸ’αžšαž‘αŸ‡αž’αŸ†αž–αžΈαž—αžΆαž–αž˜αž·αž“αž…αŸ’αž”αžΆαžŸαŸ‹αž›αžΆαžŸαŸ‹αž“αŸƒαž―αž€αžŸαžΆαžšαž‚αž˜αŸ’αžšαŸ„αž„ Apache Ignite αž”αŸ’αžšαŸ‚αž‘αŸ…αž‡αžΆαž˜αžΆαž“αž—αžΆαž–αž™αž»αžαŸ’αžαž·αž’αž˜αŸŒ αž˜αžΆαž“αž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαžαž·αž…αžαž½αž…αž…αžΆαž”αŸ‹αžαžΆαŸ†αž„αž–αžΈαž†αŸ’αž“αžΆαŸ† 2016 αŸ” αžœαžΆαž˜αž·αž“αž„αžΆαž™αžŸαŸ’αžšαž½αž›αž‘αŸαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αŸ’αž“αž€αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αžŠαŸ†αž”αžΌαž„αž€αŸ’αž“αž»αž„αž€αžΆαžšαž”αŸ’αžšαž˜αžΌαž›αž•αŸ’αžαž»αŸ†αž‚αŸ†αžšαžΌαž˜αž»αžαž„αžΆαžšαžŠαŸ„αž™αž•αŸ’αž’αŸ‚αž€αž›αžΎαž‚αŸαž αž‘αŸ†αž–αŸαžš αž“αž·αž„/αž¬αžƒαŸ’αž›αžΆαŸ†αž„αŸ”

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

αžαŸ’αž‰αž»αŸ†αžŸαž„αŸ’αžƒαžΉαž˜αžαžΆαž”αž‘αž–αž·αžŸαŸ„αž’αž“αŸαžšαž”αžŸαŸ‹αžαŸ’αž‰αž»αŸ†αž“αžΉαž„αž˜αžΆαž“αž”αŸ’αžšαž™αŸ„αž‡αž“αŸαž…αŸ†αž–αŸ„αŸ‡αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹ Apache Ignite αžαŸ’αž˜αžΈαŸ”

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

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