موږ د پرچون شبکې د ټیکنالوژۍ پراختیا څانګه یو. یوه ورځ، مدیریت د MSSQL سره په ګډه د Apache Ignite په کارولو سره د لوی کچې محاسبې ګړندۍ کولو دنده وټاکه، او د جاوا کوډ د ښکلي انځورونو او مثالونو سره یوه ویب پاڼه وښودله. ما سمدلاسه سایټ خوښ کړ
1. د ستونزې بیان
د ستونزې جوهر په لاندې ډول دی. دلته د SalesPoint د پلور ټکي لارښود او د Sku (Stock Keeping Unit) محصول لارښود شتون لري. د پلور نقطه د "کوچني" او "لوی" ارزښتونو سره د "د پلورنځي ډول" ځانګړتیا لري. یو ترتیب (د پلور د نقطې د محصولاتو لیست) د پلور هرې نقطې سره وصل دی (د DBMS څخه بار شوی) او معلومات چمتو شوي چې له ټاکلې نیټې څخه ټاکل شوي محصول
له ترتیب څخه ایستل شوی یا په ترتیب کې اضافه شوی.
دا اړینه ده چې د پلور پوائنټونو ویشل شوې زیرمه تنظیم کړئ او د یوې میاشتې دمخه د وصل شوي محصولاتو په اړه معلومات پکې ذخیره کړئ. د جنګي سیسټم سره مطابقت د Ignite پیرودونکي نوډ ته اړتیا لري ترڅو ډاټا بار کړي، د فورمې مجموعه محاسبه کړي (د پلورنځي ډول، د محصول کوډ، ورځ، شمیره_of_sales_points) او دا بیرته DBMS ته اپلوډ کړئ.
2. د ادب مطالعه
زه تر اوسه کومه تجربه نه لرم، نو زه د ډنډ څخه نڅا پیل کوم. دا د خپرونو د بیاکتنې څخه دی.
ماده 2016
په خوشبینه توګه ژمنه کوي "تاسو به په یوه وخت کې راپورته شئ او په منډه کېږئ!" زه د چاپیریال متغیر تنظیمات په ګوته کوم ، د اپاچي Ignite Essentials دوه ویډیوګانې ګورم ، مګر دا زما د ځانګړي دندې لپاره خورا ګټور ندي. ما په بریالیتوب سره Ignite د معیاري فایل "example-ignite.xml" سره د کمانډ لاین څخه پیل کړ، د لومړي غوښتنلیک په جوړولو سره
ما نور لوستل ، او هلته مثال سمدلاسه affinityKey کاروي (مخکې د SQL پوښتنې له لارې رامینځته شوی) ، او حتی پراسرار BinaryObject کاروي:
IgniteCache<BinaryObject, BinaryObject> people
= ignite.cache("Person").withKeepBinary();
ما دا لوستل
زه زما د قضیې سره سم د کمپیوټر غوښتنلیک بیا جوړوم. په MSSQL کې د پلور د پوائنټ ډایرکټر لومړنۍ کیلي د [id] [int] نه 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>
د پلور د نقطې له مخې ویشل فرض کوي چې اړین مجموعه به د پلور پوائنټ کیچ ریکارډونو لپاره په هر کلستر نوډ کې رامینځته شي چې هلته شتون لري ، وروسته له دې چې د پیرودونکي نوډ به وروستۍ مجموعه ترسره کړي.
زه درسونه لولم
@Override
public void run() {
SalesPoint sp=salesPointCache.get(spId);
sp.calculateSalesPointCount();
..
}
زه د راټولولو او اپلوډ کولو منطق اضافه کوم او دا د ټیسټ ډیټا سیټ کې پرمخ وړم. هر څه په محلي توګه د پراختیایي سرور په اړه کار کوي.
زه دوه د CentOs ازموینې سرورونه پیلوم، IP پتې په ډیفالټ-config.xml کې مشخص کړئ، په هر یو کې اجرا کړئ
./bin/ignite.sh config/default-config.xml
دواړه Ignite نوډونه روان دي او یو بل لیدلی شي. زه د مراجعینو غوښتنلیک په xml ترتیب کې اړین پتې مشخص کوم، دا پیل کیږي، ټوپولوژي ته دریم نوډ اضافه کوي او سمدلاسه بیا دوه نوډونه شتون لري. لاګ په لیکه کې "ClassNotFoundException: model.SalesPoint" ښیې
SalesPoint sp=salesPointCache.get(spId);
StackOverflow وايي چې د تېروتنې دلیل دا دی چې د CentOs سرورونو کې د ګمرکي SalesPoint ټولګي شتون نلري. موږ را رسیدلي یو. څنګه "تاسو اړتیا نلرئ په هر نوډ کې خپل جاوا کوډ په لاسي ډول ځای په ځای کړئ" او داسې نور؟ یا "ستاسو جاوا کوډ" د SalesPoint په اړه نه دی؟
ما شاید یو څه له لاسه ورکړی وي - زه بیا لټون پیلوم، لوستل او بیا لټون کول. یو څه وروسته، زه احساس کوم چې ما د موضوع په اړه هرڅه لوستلي دي، نور هیڅ شی نشته. پداسې حال کې چې ما لټون کاوه، ما ځینې په زړه پورې تبصرې وموندلې.
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.
بل مستند نظر:
د هابري په اړه مقاله
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
ډینس زما په شخصي درجه بندي کې لومړی ځای نیولی، IMHO د ټولو موجودو ګټورو زده کړو. په هغه کې
زه دا په ورته ډول ترسره کوم او یو واحد جار فایل ترلاسه کوم چې د کمانډ لاین دلیل پورې اړه لري "ډیټا نوډ" یا "کلینټ نوډ" لانچ کوي. مجلس پیل او کار کوي. د صفر ګومارنې ماتې شوې.
د ټیسټ ډیټا میګابایټ څخه لسګونه ګیګابایټ جنګي ډیټا ته لیږد وښودله چې د بائنری بڼه د یو دلیل لپاره شتون لري. دا اړینه وه چې په نوډونو کې د حافظې مصرف اصلاح کړئ ، او دا هغه ځای دی چې BinaryObject خورا ګټور ثابت شو.
4. نتيجه
د اپاچي Ignite پروژې اسنادو د مبهمتوب په اړه لومړۍ ملامتي سمه ثابته شوه؛ د 2016 راهیسې لږ بدلون راغلی. د پیل کونکي لپاره دا اسانه نده چې د ویب پا andې او / یا ذخیره کولو پراساس د فعالیت پروټوټایپ راټول کړي.
د ترسره شویو کارونو د پایلو پراساس، تاثر دا و چې د صفر ډیپلومینټ کار کوي، مګر یوازې د سیسټم په کچه. د دې په څیر یو څه: BinaryObject د دودیز ټولګیو سره کار کولو لپاره د لرې پرتو کلستر نوډونو ښوولو لپاره کارول کیږي؛ صفر ګومارنه - داخلي میکانیزم
اپاچی پخپله جلا کوي او په ټول کلستر کې د سیسټم توکي توزیع کوي.
زه امید لرم چې زما تجربه به د نوي اپاچي Ignite کاروونکو لپاره ګټوره وي.
سرچینه: www.habr.com