د خلاصې سرچینې ډیټا هب: د لینکډین میټاډاټا لټون او کشف پلیټ فارم
د هغه معلوماتو موندل چې تاسو ورته اړتیا لرئ ژر تر ژره د هر شرکت لپاره اړین دي چې د ډیټا لخوا پرمخ وړل شوي پریکړې کولو لپاره په لوی مقدار ډیټا تکیه کوي. دا نه یوازې د ډیټا کاروونکو تولید باندې اغیزه کوي (د تحلیل کونکو ، د ماشین زده کړې پراختیا کونکو ، ډیټا ساینس پوهانو ، او ډیټا انجینرانو په شمول) ، بلکه دا په پای محصولاتو مستقیم اغیزه هم لري چې د کیفیت ماشین زده کړې (ML) پایپ لاین پورې اړه لري. سربیره پردې ، د ماشین زده کړې پلیټ فارمونو پلي کولو یا رامینځته کولو په لور تمایل په طبیعي ډول دا پوښتنه راپورته کوي: د داخلي ځانګړتیاو ، ماډلونو ، میټریکونو ، ډیټاسیټونو او نورو موندلو لپاره ستاسو میتود څه دی؟
پدې مقاله کې به موږ د دې په اړه وغږیږو چې څنګه موږ د خلاص جواز لاندې د معلوماتو سرچینه خپره کړه
چیرته اوس یو ډیټا هب دی!
د LinkedIn میټاډاټا ټیم دمخه وړاندې شوی
د خلاصې سرچینې لارې چارې
چیرته هاؤس، د لینکډین اصلي پورټل د معلوماتو موندلو لپاره او له کوم ځای څخه راځي، د داخلي پروژې په توګه پیل شوی؛ د میټاډاټا ټیم دا خلاص کړ
لومړی هڅه: "لومړی خلاص سرچینه"
موږ په پیل کې د "خلاصې سرچینې لومړی" پرمختیا ماډل تعقیب کړ، چیرې چې ډیری پراختیا د خلاصې سرچینې ذخیره کې واقع کیږي او د داخلي ګمارلو لپاره بدلونونه رامینځته کیږي. د دې تګلارې سره ستونزه دا ده چې کوډ تل د GitHub ته فشار ورکول کیږي مخکې لدې چې دا په بشپړ ډول داخلي بیاکتنه وشي. تر هغه چې د خلاصې سرچینې ذخیره څخه بدلونونه رامینځته نشي او نوی داخلي ګمارل کیږي ، موږ به د تولید کومه مسله ونه موندلو. د ضعیف ګمارنې په صورت کې، د مجرم پیژندل هم خورا ستونزمن وو ځکه چې په بستونو کې بدلونونه راوستل شوي.
برسیره پردې، دې ماډل د ټیم تولید کم کړ کله چې نوي ځانګړتیاوې رامینځته کړي چې چټک تکرار ته اړتیا لري، ځکه چې دا ټول بدلونونه اړ کړي چې لومړی د خلاصې سرچینې ذخیره ته واړول شي او بیا داخلي ذخیره ته واړول شي. د پروسس کولو وخت کمولو لپاره، اړین اصلاحات یا بدلون لومړی په داخلي زیرمه کې ترسره کیدی شي، مګر دا یوه لویه ستونزه شوه کله چې دا بدلونونه بیرته د خلاصې سرچینې ذخیره کې یوځای کولو لپاره راغلل ځکه چې دوه زیرمې له همغږۍ څخه بهر وې.
دا ماډل د ګډو پلیټ فارمونو، کتابتونونو، یا زیربناوو پروژو لپاره پلي کول خورا اسانه دي په پرتله د بشپړ ځانګړي دودیز ویب غوښتنلیکونو لپاره. برسیره پردې، دا ماډل د هغو پروژو لپاره مثالی دی چې د لومړۍ ورځې څخه خلاصې سرچینې پیل کوي، مګر چیرته هاوس د بشپړ داخلي ویب غوښتنلیک په توګه جوړ شوی و. دا واقعیا ستونزمنه وه چې ټول داخلي انحصارونه په بشپړ ډول خلاص کړئ ، نو موږ اړتیا درلوده چې داخلي فورک وساتو ، مګر د داخلي فورک ساتل او ډیری خلاصې سرچینې رامینځته کول خورا کار نه و.
دوهمه هڅه: "لومړی داخلي"
** د دویمې هڅې په توګه، موږ د "داخلي لومړي" پراختیا ماډل ته لاړ، چیرې چې ډیری پرمختګ په کور کې واقع کیږي او په منظم ډول د خلاصې سرچینې کوډ کې بدلونونه راځي. که څه هم دا ماډل زموږ د کارونې قضیې لپاره غوره دی، دا اصلي ستونزې لري. په مستقیم ډول د خلاصې سرچینې ذخیره ته ټول توپیرونه فشار ورکول او بیا وروسته د ادغام شخړو حل کولو هڅه کول یو اختیار دی ، مګر دا وخت نیسي. په ډیری قضیو کې پراختیا کونکي هڅه کوي هرکله چې دوی د دوی کوډ بیاکتنه وکړي دا کار ونه کړي. د پایلې په توګه، دا به په کم وخت کې، په بستونو کې ترسره شي، او په دې توګه وروسته د انضمام شخړو حل کول خورا ستونزمن کوي.
دریم ځل دا کار وکړ!
پورته ذکر شوي دوه ناکامې هڅې د دې لامل شوې چې د چیرې هاوس ګیټ هب ذخیره د اوږدې مودې لپاره له نیټې پاتې وي. ټیم د محصول ب featuresو او جوړښت ته وده ورکولو ته دوام ورکړ ، ترڅو د LinkedIn لپاره د WhereHows داخلي نسخه د خلاصې سرچینې نسخې څخه خورا پرمختللې شوه. دا حتی یو نوی نوم درلود - DataHub. د پخوانیو ناکامو هڅو پراساس، ټیم پریکړه وکړه چې د توزیع وړ، اوږدمهاله حل رامینځته کړي.
د هرې نوې خلاصې سرچینې پروژې لپاره، د LinkedIn د خلاصې سرچینې ټیم د پراختیا ماډل ته مشوره ورکوي او ملاتړ کوي په کوم کې چې د پروژې ماډلونه په بشپړه توګه په خلاصې سرچینې کې رامینځته شوي. نسخه شوي اثار په عامه ذخیره کې ځای په ځای شوي او بیا د داخلي لینکډین آثارو په کارولو سره بیرته چیک شوي
په هرصورت، یو بالغ شاته پای غوښتنلیک لکه ډیټا هب به دې حالت ته د رسیدو لپاره د پام وړ وخت ته اړتیا ولري. دا د خلاصې سرچینې د بشپړ کاري پلي کولو امکان هم مخنیوی کوي مخکې لدې چې ټول داخلي انحصارونه په بشپړ ډول خلاص شوي وي. له همدې امله موږ داسې وسیلې رامینځته کړې چې موږ سره مرسته کوي د خلاصې سرچینې مرستې ګړندۍ او د ډیر کم درد سره. دا حل د میټاډاټا ټیم (DataHub پراختیا کونکي) او د خلاصې سرچینې ټولنې دواړو ته ګټه رسوي. لاندې برخې به د دې نوې طریقې په اړه بحث وکړي.
د خلاصې سرچینې خپرولو اتوماتیک
د خلاصې سرچینې ډیټا هب ته د میټاډاټا ټیم وروستۍ تګلاره د یوې وسیلې رامینځته کول دي چې په اوتومات ډول داخلي کوډبیس او د خلاصې سرچینې ذخیره ترکیب کوي. د دې وسیلې د لوړې کچې ځانګړتیاوې عبارت دي له:
- د لینکډین کوډ له خلاصې سرچینې سره همغږي کړئ، ورته
rsync . - د جواز سرلیک نسل، ورته ورته
اپاچي موږک . - په اتوماتيک ډول د داخلي ژمنې لاګونو څخه د خلاصې سرچینې ژمنې لاګونه رامینځته کړئ.
- د داخلي بدلونونو مخه ونیسئ چې د خلاصې سرچینې جوړونه ماتوي
د انحصار ازموینه .
لاندې فرعي برخې به پورته ذکر شوي دندې ته پام وکړي کوم چې په زړه پوري ستونزې لري.
د سرچینې کوډ همغږي کول
د ډیټا هب د خلاصې سرچینې نسخې برخلاف ، کوم چې یو واحد GitHub ذخیره ده ، د ډیټا هب لینک شوي نسخه د ډیری ذخیره کولو ترکیب دی (د داخلي په نوم یادیږي)
شکل 1: د ذخیره کولو تر مینځ همغږي کول LinkedIn DataHub او یو واحد ذخیره DataHub خلاص سرچینه
د اتوماتیک جوړونې، فشار، او د کار فلو ملاتړ کولو لپاره، زموږ نوې وسیله په اوتومات ډول د هرې سرچینې فایل سره سم د فایل کچې نقشه جوړوي. په هرصورت، د تولک کټ ابتدايي ترتیب ته اړتیا لري او کاروونکي باید د لوړې کچې ماډل نقشه چمتو کړي لکه څنګه چې لاندې ښودل شوي.
{
"datahub-dao": [
"${datahub-frontend}/datahub-dao"
],
"gms/impl": [
"${dataset-gms}/impl",
"${user-gms}/impl"
],
"metadata-dao": [
"${metadata-models}/metadata-dao"
],
"metadata-builders": [
"${metadata-models}/metadata-builders"
]
}
د ماډل کچې نقشه کول یو ساده JSON دی چې کلیدونه د خلاصې سرچینې ذخیره کې د هدف ماډلونه دي او ارزښتونه د LinkedIn ذخیره کې د سرچینې ماډلونو لیست دي. د خلاصې سرچینې ذخیره کې هر هدف ماډل د هرې سرچینې ماډلونو لخوا تغذیه کیدی شي. د سرچینې ماډلونو کې د ذخیره کولو داخلي نومونو ښودلو لپاره، وکاروئ
{
"${metadata-models}/metadata-builders/src/main/java/com/linkedin/Foo.java":
"metadata-builders/src/main/java/com/linkedin/Foo.java",
"${metadata-models}/metadata-builders/src/main/java/com/linkedin/Bar.java":
"metadata-builders/src/main/java/com/linkedin/Bar.java",
"${metadata-models}/metadata-builders/build.gradle": null,
}
د فایل کچه نقشه کول په اتوماتيک ډول د وسیلو لخوا رامینځته کیږي؛ په هرصورت، دا د کارونکي لخوا په لاسي ډول هم تازه کیدی شي. دا د خلاصې سرچینې ذخیره کې فایل ته د LinkedIn سرچینې فایل 1: 1 نقشه ده. د فایل اتحادیې د دې اتوماتیک رامینځته کولو سره تړلي ډیری مقررات شتون لري:
- په خلاصې سرچینې کې د هدف ماډل لپاره د ډیری سرچینو ماډلونو په حالت کې ، شخړې رامینځته کیدی شي ، د مثال په توګه ورته
FQCN له یو څخه ډیرو سرچینو ماډلونو کې شتون لري. د شخړو د حل ستراتیژۍ په توګه، زموږ وسیلې د "وروستۍ بریا" اختیار ته ډیفالټ کوي. - "null" پدې مانا ده چې د سرچینې فایل د خلاصې سرچینې ذخیره برخه نه ده.
- د هرې خلاصې سرچینې سپارلو یا استخراج وروسته، دا نقشه په اوتومات ډول تازه کیږي او یو سنیپ شاټ رامینځته کیږي. دا اړینه ده چې د وروستي عمل راهیسې د سرچینې کوډ څخه اضافه او حذف کول وپیژني.
د ژمنې لاګ جوړول
د خلاصې سرچینې ژمنې لپاره د ژمنې لاګونه هم په اتوماتيک ډول د داخلي زیرمو د ژمنې لاګونو یوځای کولو سره رامینځته کیږي. لاندې زموږ د وسیلې لخوا رامینځته شوي د ژمنې لاګ جوړښت ښودلو لپاره نمونه کمیټ لاګ دی. یوه ژمنه په واضح ډول په ګوته کوي چې د سرچینې ذخیره کولو کومې نسخې پدې ژمنې کې بسته شوي او د ژمنې لاګ لنډیز وړاندې کوي. دا یو وګورئ
metadata-models 29.0.0 -> 30.0.0
Added aspect model foo
Fixed issue bar
dataset-gms 2.3.0 -> 2.3.4
Added rest.li API to serve foo aspect
MP_VERSION=dataset-gms:2.3.4
MP_VERSION=metadata-models:30.0.0
د انحصار ازموینه
LinkedIn لري
دا یو ګټور میکانیزم دی چې د هر ډول داخلي ژمنې مخنیوي کې مرسته کوي چې د خلاصې سرچینې جوړښت ماتوي او د ژمنې په وخت کې کشف کوي. له دې پرته، دا به خورا ستونزمن وي چې معلومه کړي چې کوم داخلي ژمنې د خلاصې سرچینې ذخیره جوړول ناکامه کړي، ځکه چې موږ د ډیټا هب خلاصې سرچینې ذخیره کې داخلي بدلونونه بسته کوو.
د خلاصې سرچینې ډیټا هب او زموږ د تولید نسخه ترمینځ توپیر
تر دې وخته، موږ د ډیټا هب ذخیره کولو دوه نسخو همغږي کولو لپاره زموږ د حل په اړه بحث کړی، مګر موږ لاهم هغه دلیلونه ندي په ګوته کړي چې ولې موږ په لومړي ځای کې دوه مختلف پرمختیایي جریانونو ته اړتیا لرو. پدې برخه کې، موږ به د DataHub عامه نسخه او په LinkedIn سرورونو کې د تولید نسخه ترمنځ توپیرونه لیست کړو، او د دې توپیرونو دلیلونه تشریح کړو.
د توپیر یوه سرچینه د دې حقیقت څخه رامینځته کیږي چې زموږ د تولید نسخه په کوډ باندې انحصار لري چې لاهم خلاص سرچینه نه ده ، لکه د لینکډین اولاد (د لینکډین داخلي انحصار انجیکشن چوکاټ). اولاد په پراخه کچه په داخلي کوډبیسونو کې کارول کیږي ځکه چې دا د متحرک ترتیب اداره کولو لپاره غوره طریقه ده. مګر دا خلاص سرچینه نه ده؛ نو موږ د خلاصې سرچینې ډیټا هب لپاره د خلاصې سرچینې بدیل موندلو ته اړتیا درلوده.
نور لاملونه هم شته. لکه څنګه چې موږ د لینکډین اړتیاو لپاره د میټاډاټا ماډل ته توسیعونه رامینځته کوو ، دا توسیعونه عموما د لینکډین لپاره خورا ځانګړي دي او ممکن په مستقیم ډول په نورو چاپیریالونو کې پلي نشي. د مثال په توګه، موږ د ګډون کونکي IDs او د ورته میټاډاټا نورو ډولونو لپاره خورا ځانګړي لیبلونه لرو. نو، موږ اوس دا توسیعونه د ډیټا هب د خلاصې سرچینې میټاډاټا ماډل څخه خارج کړي دي. لکه څنګه چې موږ د ټولنې سره ښکیل یو او د دوی اړتیاوې درک کوو، موږ به د اړتیا په صورت کې د دې تمدیدونو په عام خلاصې سرچینې نسخو کار وکړو.
د خلاصې سرچینې ټولنې لپاره د کارولو اسانتیا او اسانه موافقت هم د ډیټا هب د دوه نسخو ترمینځ ځینې توپیرونه هڅولي. د جریان پروسس کولو زیربنا کې توپیر د دې ښه مثال دی. که څه هم زموږ داخلي نسخه د مدیریت شوي جریان پروسس کولو چوکاټ کاروي، موږ د پرانیستې سرچینې نسخې لپاره د جوړ شوي (استیناد) جریان پروسس کولو لپاره غوره کړی ځکه چې دا د بل زیربنا انحصار رامینځته کولو مخه نیسي.
د توپیر بله بیلګه د ډیری GMSs پرځای د خلاصې سرچینې پلي کولو کې د واحد GMS (عمومي میټاډاټا سټور) درلودل دي. GMA (عمومي میټاډاټا آرکیټیکچر) د ډیټا هب لپاره د شاته پای جوړښت نوم دی ، او GMS د GMA په شرایطو کې د میټاډاټا پلورنځی دی. GMA یو ډیر انعطاف منونکی جوړښت دی چې تاسو ته اجازه درکوي هر ډیټا جوړښت (د بیلګې په توګه ډیټاسیټونه ، کارونکي او نور) په خپل میټاډاټا پلورنځي کې توزیع کړئ ، یا ډیری ډیټا جوړښتونه په یو واحد میټاډاټا پلورنځي کې ذخیره کړئ تر هغه چې راجسټري پکې د ډیټا جوړښت نقشه ولري. GMS تازه شوی. د کارونې اسانتیا لپاره، موږ یو واحد GMS مثال غوره کړ چې د خلاصې سرچینې ډیټا هب کې ټول مختلف ډیټا جوړښتونه ذخیره کوي.
د دوو تطبیقونو ترمنځ د توپیرونو بشپړ لیست په لاندې جدول کې وړاندې شوی.
د تولیداتو ځانګړتیاوی
LinkedIn DataHub
د خلاصې سرچینې ډیټا هب
د ملاتړ شوي ډیټا جوړښتونه
1) ډیټا سیټونه 2) کاروونکي 3) میټریک 4) ML ځانګړتیاوې 5) چارټونه 6) ډشبورډونه
1) ډیټاسیټس 2) کاروونکي
د ډیټاسیټونو لپاره د میټاډاټا سرچینې ملاتړ شوي
1)
Hive Kafka RDBMS
Pub-sub
ملغلره کافکا
جریان پروسس کول
اداره
امبیډ شوی (مستقیم)
د انحصار انجکشن او متحرک ترتیب
LinkedIn اولادونه
د اوزار جوړول
Ligradle (د لینکډین داخلي ګرډل ریپر)
CI / CD
CRT (د لینکډین داخلي CI/CD)
د میټاډاټا پلورنځی
توزیع شوي ډیری GMS: 1) ډیټاسیټ GMS 2) د کارونکي GMS 3) میټریک GMS 4) فیچر GMS 5) چارټ/ډشبورډ GMS
د دې لپاره واحد GMS: 1) ډیټاسیټس 2) کاروونکي
په ډاکر کانټینرونو کې کوچني خدمتونه
شکل 2: معمارۍ DataHub *خلاصه سرچینه*
تاسو کولی شئ په پورته عکس کې د ډیټا هب د لوړې کچې جوړښت وګورئ. د زیربناوو برخو سربیره، دا څلور مختلف ډاکر کانټینرونه لري:
datahub-gms: د میټاډاټا ذخیره کولو خدمت
datahub-frontend: غوښتنلیک
datahub-mce-consumer: غوښتنلیک
datahub-mae-consumer: غوښتنلیک
د خلاصې سرچینې ذخیره کولو اسناد او
په ډیټا هب کې CI/CD خلاص سرچینه ده
د خلاصې سرچینې ډیټا هب ذخیره کاروي
د ډیټا هب خلاصې سرچینې ذخیره کولو ته د هرې ژمنې سره ، د ډاکر ټول عکسونه په اوتومات ډول جوړ شوي او د "وروستي" ټاګ سره ډاکر هب ته ځای په ځای شوي. که د ډاکر هب د ځینې سره تنظیم شوی وي
د ډیټا هب کارول
- د خلاصې سرچینې ذخیره کلون کړئ او د ګړندي پیل لپاره د چمتو شوي ډاکر - کمپوز سکریپټ په کارولو سره ټول ډاکر کانټینرونه د ډاکر - کمپوز سره پرمخ وړئ.
- د کمانډ لاین وسیلې په کارولو سره په ذخیره کې چمتو شوي نمونې ډیټا ډاونلوډ کړئ چې چمتو شوی هم دی.
- په خپل براوزر کې ډیټا هب براوز کړئ.
په فعاله توګه تعقیب شوی
د راتلونکي لپاره پلانونه
اوس مهال، د خلاصې سرچینې ډیټا هب لپاره هر زیربنا یا مایکرو سرویس د ډاکر کانټینر په توګه جوړ شوی، او ټول سیسټم د کارولو سره تنظیم شوی.
موږ دا پلان هم لرو چې په عامه کلاوډ خدمت کې د ډیټا هب ځای په ځای کولو لپاره د ټرنکي حل چمتو کړو لکه
په نهایت کې ، د خلاصې سرچینې ټولنې کې د ډیټا هب له ټولو لومړیو اخیستونکو څخه مننه چې د ډیټا هب الفا درجه یې کړې او موږ سره یې د مسلو پیژندلو او د اسنادو ښه کولو کې مرسته کړې.
سرچینه: www.habr.com