DataHub кушодаасос: Платформаи ҷустуҷӯ ва кашфи метамаълумоти LinkedIn
Ҷустуҷӯи маълумоте, ки ба шумо зуд лозим аст, барои ҳар як ширкате муҳим аст, ки барои қабули қарорҳои ба маълумот асосёфта ба миқдори зиёди маълумот такя мекунад. Ин на танҳо ба маҳсулнокии корбарони додаҳо (аз ҷумла таҳлилгарон, таҳиягарони омӯзиши мошинсозӣ, олимони маълумот ва муҳандисони додаҳо) таъсир мерасонад, балки инчунин ба маҳсулоти ниҳоӣ, ки аз лӯлаи омӯзиши босифат (ML) вобастаанд, таъсири мустақим дорад. Илова бар ин, тамоюли татбиқ ё сохтани платформаҳои омӯзиши мошинсозӣ табиатан саволеро ба миён меорад: усули шумо барои дар дохили худ кашф кардани хусусиятҳо, моделҳо, ченакҳо, маҷмӯи додаҳо ва ғайра чист?
Дар ин мақола мо дар бораи он сӯҳбат хоҳем кард, ки чӣ гуна мо як манбаи маълумотро таҳти иҷозатномаи кушода нашр кардем
WhereHow ҳоло як DataHub аст!
Гурӯҳи метамаълумоти LinkedIn қаблан пешниҳод карда шуд
Равишҳои кушодаасос
WhereHows, портали аслии LinkedIn барои дарёфти маълумот ва аз куҷо пайдо шудани он ҳамчун лоиҳаи дохилӣ оғоз ёфт; дастаи метадаълумот онро кушод
Кӯшиши аввал: "Аввал манбаи кушода"
Мо дар аввал модели таҳияи "аввал манбаи кушода"-ро пайгирӣ кардем, ки дар он бештари рушд дар анбори кушодаасос сурат мегирад ва барои густариши дохилӣ тағйирот ворид карда мешавад. Мушкилоти ин равиш дар он аст, ки код ҳамеша пеш аз баррасии пурраи дохилӣ ба GitHub интиқол дода мешавад. То он даме, ки тағирот аз анбори кушодаасос ва ҷойгиркунии нави дохилӣ ворид карда нашавад, мо ҳеҷ гуна мушкилоти истеҳсолиро намеёбем. Дар сурати суст ҷойгиркунӣ, муайян кардани гунаҳкор низ хеле душвор буд, зеро тағирот ба гурӯҳҳо ворид карда шуд.
Илова бар ин, ин модел маҳсулнокии дастаро ҳангоми таҳияи хусусиятҳои нав, ки такрори зудро талаб мекард, коҳиш дод, зеро он маҷбур мекард, ки ҳама тағиротҳо аввал ба анбори кушодаасос ворид карда шаванд ва сипас ба анбори дохилӣ интиқол дода шаванд. Барои кам кардани вақти коркард, ислоҳ ё тағироти заруриро метавон аввал дар анбори дохилӣ анҷом дод, аммо вақте ки сухан дар бораи дубора муттаҳид кардани ин тағиротҳо ба репозиторийҳои кушодаасос омад, зеро ин ду анбор ҳамоҳанг набуданд.
Татбиқи ин модел барои платформаҳои муштарак, китобхонаҳо ё лоиҳаҳои инфрасохторӣ нисбат ба веб-барномаҳои мукаммали фармоишӣ хеле осонтар аст. Илова бар ин, ин модел барои лоиҳаҳое, ки аз рӯзи аввал сарчашмаи кушодаро оғоз мекунанд, беҳтарин аст, аммо WhereHows ҳамчун як барномаи комилан дохилии веб сохта шудааст. Воқеан ҳам абстракт кардани ҳама вобастагии дохилиро комилан душвор буд, аз ин рӯ ба мо лозим буд, ки чароғи дохилиро нигоҳ дорем, аммо нигоҳ доштани чангак дарунӣ ва таҳияи асосан манбаи кушода комилан натиҷа надод.
Кӯшиши дуюм: "Аввал ботин"
**Ҳамчун кӯшиши дуюм, мо ба модели "аввали дохилӣ"-и рушд гузаштем, ки дар он бештари рушд дар дохили хона сурат мегирад ва мунтазам ба рамзи кушодаасос тағйирот ворид карда мешавад. Гарчанде ки ин модел барои истифодаи мо беҳтарин мувофиқ аст, он дорои мушкилоти хос аст. Бевосита интиқол додани ҳама фарқиятҳо ба анбори сарчашмаи кушода ва сипас кӯшиши ҳалли ихтилофҳои якҷоякунӣ як вариант аст, аммо ин вақтро мегирад. Таҳиягарон дар аксари ҳолатҳо мекӯшанд, ки ҳар дафъае, ки рамзи худро аз назар гузаронанд, ин корро накунанд. Дар натиҷа, ин хеле камтар, дар гурӯҳҳо анҷом дода мешавад ва аз ин рӯ, ҳалли низоъҳои якҷоякуниро дертар мушкилтар мекунад.
Бори сеюм кор кард!
Ду кӯшиши ноком, ки дар боло зикр шуд, боиси он гардид, ки анбори WhereHow GitHub муддати тӯлонӣ кӯҳна монд. Даста такмил додани хусусиятҳо ва меъмории маҳсулотро идома дод, то версияи дохилии WhereHows барои LinkedIn нисбат ба версияи кушодаасос пешрафтатар гардад. Он ҳатто номи нав дошт - DataHub. Дар асоси кӯшишҳои қаблии ноком, даста тасмим гирифт, ки як ҳалли миқёспазир ва дарозмуддат таҳия кунад.
Барои ҳар як лоиҳаи нави кушодаасос, дастаи кушодаи LinkedIn модели рушдро маслиҳат медиҳад ва дастгирӣ мекунад, ки дар он модулҳои лоиҳа пурра дар сарчашмаи кушода таҳия карда мешаванд. Артефактҳои версиявӣ ба анбори ҷамъиятӣ ҷойгир карда мешаванд ва сипас бо истифода аз артефакти дохилии LinkedIn дубора тафтиш карда мешаванд.
Аммо, як барномаи баркамол ба монанди DataHub барои расидан ба ин ҳолат вақти зиёдеро талаб мекунад. Ин инчунин имкони манбаи кушодаи татбиқи пурраи корнро пеш аз он ки ҳама вобастагии дохилӣ пурра абстракт карда шаванд, манъ мекунад. Аз ин рӯ, мо асбобҳоеро таҳия кардем, ки ба мо кӯмак мекунанд, ки саҳми кушодаасосро зудтар ва бо дард камтар созем. Ин ҳалли ҳам ба гурӯҳи метамаълумотҳо (таҳиягари DataHub) ва ҳам ҷомеаи кушодаасос манфиат меорад. Дар бахшҳои зерин ин равиши нав баррасӣ хоҳанд шуд.
Автоматикунонии нашриёти кушодаасос
Муносибати охирини гурӯҳи Metdata ба DataHub-и кушода ин таҳияи асбобест, ки ба таври худкор пойгоҳи коди дохилӣ ва анбори кушодаасосро ҳамоҳанг мекунад. Хусусиятҳои сатҳи баланди ин маҷмӯа иборатанд аз:
- Рамзи LinkedIn-ро ба/аз манбаи кушода ҳамоҳанг созед
rsync . - Насли сарлавҳаи иҷозатнома, монанд ба
Apache Rat . - Ба таври худкор гузоришҳои содироти сарчашмаи кушодаро аз сабтҳои дохилшавӣ эҷод кунед.
- Пешгирӣ кардани тағиротҳои дохилӣ, ки сохторҳои кушодаасосро вайрон мекунанд
санҷиши вобастагӣ .
Зерфаслҳои зерин ба вазифаҳои дар боло зикршуда, ки мушкилоти ҷолиб доранд, омӯхта мешаванд.
Синхронизатсияи коди манбаъ
Баръакси версияи сарчашмаи кушодаи DataHub, ки як анбори ягонаи GitHub аст, версияи LinkedIn-и DataHub маҷмӯи анборҳои сершумор аст (дар дохили он номида мешавад)
Расми 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,
}
Харитасозии сатҳи файл тавассути асбобҳо ба таври худкор эҷод карда мешавад; аммо он инчунин метавонад аз ҷониби корбар дастӣ нав карда шавад. Ин харитасозии 1:1 файли сарчашмаи LinkedIn ба файл дар анбори кушодаасос аст. Якчанд қоидаҳо бо ин эҷоди автоматии ассотсиатсияҳои файлҳо алоқаманданд:
- Дар сурати мавҷуд будани модулҳои сершумори сарчашма барои як модули мавриди ҳадаф дар манбаи кушода, ихтилофҳо ба вуҷуд омада метавонанд, масалан, якхела.
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 баста мекунем.
Тафовут байни кушодаасос DataHub ва версияи истеҳсолии мо
То ин дам, мо роҳи ҳалли худро барои ҳамоҳангсозии ду версияи анбори DataHub баррасӣ кардем, аммо мо то ҳол сабабҳоеро шарҳ надодаем, ки чаро мо дар навбати аввал ба ду ҷараёни гуногуни рушд ниёз дорем. Дар ин бахш мо фарқиятҳои байни версияи оммавии DataHub ва версияи истеҳсолиро дар серверҳои LinkedIn номбар мекунем ва сабабҳои ин фарқиятҳоро шарҳ медиҳем.
Як манбаи ихтилоф аз он аст, ки версияи истеҳсолии мо аз код вобастагӣ дорад, ки ҳанӯз манбаи кушода нест, ба монанди Offspring LinkedIn (Чорчӯбаи тазриқи вобастагии дохилии LinkedIn). Насл дар базаҳои кодҳои дохилӣ ба таври васеъ истифода мешавад, зеро он усули афзалиятнок барои идоракунии конфигуратсияи динамикӣ мебошад. Аммо он манбаи кушода нест; бинобар ин ба мо лозим омад, ки алтернативаҳои кушодаасосро ба DataHub-и кушода пайдо кунем.
Сабабҳои дигар низ ҳастанд. Вақте ки мо барои эҳтиёҷоти LinkedIn ба модели метамаълумот васеъсозӣ эҷод мекунем, ин васеъкуниҳо маъмулан ба LinkedIn хеле хосанд ва метавонанд мустақиман ба муҳитҳои дигар татбиқ нашаванд. Масалан, мо барои ID-и иштирокчиён ва дигар намудҳои метамаълумоти мувофиқ тамғакоғазҳои хеле мушаххас дорем. Ҳамин тавр, мо ҳоло ин васеъкуниро аз модели метамаълумоти кушодаи DataHub хориҷ кардем. Вақте ки мо бо ҷомеа ҳамкорӣ мекунем ва эҳтиёҷоти онҳоро мефаҳмем, мо дар мавридҳои зарурӣ дар рӯи версияҳои умумии кушодаи ин васеъшавӣ кор хоҳем кард.
Осонии истифода ва мутобиқсозии осонтар барои ҷомеаи кушодаасос инчунин баъзе фарқиятҳои байни ду версияи DataHub-ро илҳом бахшиданд. Тафовут дар инфрасохтори коркарди ҷараён намунаи хуби ин аст. Гарчанде ки версияи дохилии мо чаҳорчӯбаи коркарди ҷараёнҳои идорашавандаро истифода мебарад, мо барои версияи кушодаасос коркарди дарунсохт (мустақил)-ро истифода бурдем, зеро он аз эҷоди вобастагии дигари инфрасохтор пешгирӣ мекунад.
Мисоли дигари тафовут ин доштани як GMS (Мағозаи умумии метамаълумотҳо) дар татбиқи манбаи кушода аст, на якчанд GMS. GMA (Generalized Metadata Architecture) номи меъмории пушти сар барои DataHub аст ва GMS анбори метамаълумот дар заминаи GMA мебошад. GMA як меъмории хеле фасеҳ аст, ки ба шумо имкон медиҳад, ки ҳар як сохтори додаҳоро (масалан, маҷмӯаҳои додаҳо, корбарон ва ғ.) ба мағозаи метамаълумоти худ тақсим кунед ё дар як мағозаи ягонаи метамаълумотҳо нигоҳ доштани сохторҳои сершумори додаҳо то даме ки феҳрист дорои харитасозии сохтори додаҳо мебошад. GMS нав карда мешавад. Барои осонии истифода, мо як мисоли GMS-ро интихоб кардем, ки ҳама сохторҳои гуногуни маълумотро дар DataHub манбаи кушода нигоҳ медорад.
Рӯйхати пурраи фарқиятҳои байни ин ду татбиқ дар ҷадвали зер оварда шудааст.
Хусусиятҳои маҳсулот
LinkedIn DataHub
DataHub кушодаасос
Сохтмони маълумотҳои дастгирӣшаванда
1) Маҷмӯаҳои додаҳо 2) Истифодабарандагон 3) Метрикҳо 4) Хусусиятҳои ML 5) Диаграммаҳо 6) Панели идоракунӣ
1) Маҷмӯи додаҳо 2) Истифодабарандагон
Сарчашмаҳои дастгиришавандаи метамаълумот барои маҷмӯи додаҳо
1)
Hive Кафка RDBMS
Паб-суб
Муттаҳид Кафка
Коркарди ҷараён
идора
Дохилшуда (мустақил)
Тазриқи вобастагӣ ва конфигуратсияи динамикӣ
Насли LinkedIn
Сохтмони асбобҳо
Ligradle (Параметри дохилии Gradle LinkedIn)
CI / CD
CRT (CI/CD дохилии LinkedIn)
Мағозаҳои метамаълумот
GMS-и сершумори тақсимшуда: 1) GMS маҷмӯаи додаҳо 2) GMS корбар 3) Metric GMS 4) Функсияи GMS 5) Диаграмма / Панели GMS
GMS-и ягона барои: 1) Маҷмӯи додаҳо 2) Истифодабарандагон
Микросервисҳо дар контейнерҳои Docker
Расми 2: Архитектура DataHub *манбаи кушода**
Шумо метавонед меъмории сатҳи баланди DataHub-ро дар тасвири боло бубинед. Ба ғайр аз ҷузъҳои инфрасохтор, он дорои чор контейнери гуногуни Docker мебошад:
datahub-gms: хидмати нигаҳдории метамаълумот
datahub-frontend: барнома
datahub-mce-истеъмолкунанда: барнома
datahub-mae-истеъмолкунанда: ариза
Ҳуҷҷатҳои анбори кушодаасос ва
CI/CD дар DataHub манбаи кушода аст
Анбори кушодаи DataHub истифода мебарад
Бо ҳар як ӯҳдадорӣ ба анбори сарчашмаи кушодаи DataHub, ҳама тасвирҳои Docker ба таври худкор сохта мешаванд ва дар Docker Hub бо теги "охирин" ҷойгир карда мешаванд. Агар Docker Hub бо баъзе танзим карда шавад
Истифодаи DataHub
- Анбори кушодаасосро клон кунед ва ҳама контейнерҳои Docker-ро бо docker-compose бо истифода аз скрипти пешниҳодшудаи docker-compose барои оғози зуд иҷро кунед.
- Маълумоти намунавии дар анбор пешниҳодшударо бо истифода аз асбоби сатри фармон, ки он низ пешниҳод шудааст, зеркашӣ кунед.
- DataHub-ро дар браузери худ паймоиш кунед.
Фаъолона пайгирӣ карда мешавад
Нақшаҳои оянда
Дар айни замон, ҳар як инфрасохтор ё хидматрасонии хурд барои DataHub манбаи кушода ҳамчун контейнери Docker сохта шудааст ва тамоми система бо истифода аз он танзим карда мешавад.
Мо инчунин нақша дорем, ки ҳалли калидиро барои ҷойгиркунии DataHub дар хидмати абрии ҷамъиятӣ пешниҳод кунем, ба монанди
Ниҳоят, вале на камтар аз он, ташаккур ба ҳамаи қабулкунандагони барвақти DataHub дар ҷомеаи кушодаасос, ки алфаҳои DataHub-ро баҳо доданд ва ба мо дар муайян кардани мушкилот ва такмил додани ҳуҷҷатҳо кӯмак карданд.
Манбаъ: will.com