16 modemi, 4 mobilo sakaru operatori = izejoÅ”Ä Ätrums 933.45 Mbit/s
Ievads
Sveiki! Å is raksts ir par to, kÄ mÄs izveidojÄm sev jaunu uzraudzÄ«bas sistÄmu. Tas atŔķiras no esoÅ”ajiem ar spÄju iegÅ«t augstfrekvences sinhronos rÄdÄ«tÄjus un ļoti zemu resursu patÄriÅu. Aptaujas Ätrums var sasniegt 0.1 milisekundi ar sinhronizÄcijas precizitÄti starp metrikas 10 nanosekundÄm. Visi binÄrie faili aizÅem 6 megabaitus.
Par projektu
Mums ir diezgan specifisks produkts. MÄs ražojam visaptveroÅ”u risinÄjumu datu pÄrraides kanÄlu caurlaidspÄjas un kļūdu tolerances apkopoÅ”anai. Tas ir tad, kad ir vairÄki kanÄli, teiksim Operator1 (40Mbit/s) + Operator2 (30Mbit/s)+ Kaut kas cits (5 Mbit/s), rezultÄts ir viens stabils un Ätrs kanÄls, kura Ätrums bÅ«s kaut kas lÄ«dzÄ«gs Å”is: (40+ 30+5)x0.92=75Ć0.92=69 Mbit/s.
Å Ädi risinÄjumi ir pieprasÄ«ti, ja viena kanÄla jauda nav pietiekama. PiemÄram, transports, videonovÄroÅ”anas sistÄmas un reÄllaika video straumÄÅ”ana, televÄ«zijas un radio tieÅ”raides, jebkuras piepilsÄtas iespÄjas, kur starp telekomunikÄciju operatoriem ir tikai lielÄ Äetrinieka pÄrstÄvji un ar Ätrumu vienÄ modemÄ/kanÄlÄ nepietiek. .
Katrai no Ŕīm jomÄm ražojam atseviŔķu ierÄ«Äu lÄ«niju, taÄu to programmatÅ«ras daļa ir gandrÄ«z vienÄda un kvalitatÄ«va uzraudzÄ«bas sistÄma ir viens no tÄs galvenajiem moduļiem, bez kura pareizas ievieÅ”anas produkts nebÅ«tu iespÄjams.
VairÄku gadu laikÄ mums izdevÄs izveidot daudzlÄ«meÅu, Ätru, starpplatformu un vieglu uzraudzÄ«bas sistÄmu. Tas ir tas, ko mÄs vÄlamies dalÄ«ties ar mÅ«su cienÄ«jamo kopienu.
ProblÄmas paziÅojums
UzraudzÄ«bas sistÄma nodroÅ”ina divu bÅ«tiski atŔķirÄ«gu klaÅ”u metriku: reÄllaika metriku un visas pÄrÄjÄs. UzraudzÄ«bas sistÄmai bija tikai Å”Ädas prasÄ«bas:
- Augstas frekvences sinhrona reÄllaika metriku iegÅ«Å”ana un to pÄrsÅ«tÄ«Å”ana uz sakaru vadÄ«bas sistÄmu bez kavÄÅ”anÄs.
Augsta frekvence un dažÄdu metriku sinhronizÄcija ir ne tikai svarÄ«ga, tÄ ir bÅ«tiska datu pÄrraides kanÄlu entropijas analÄ«zei. Ja vienÄ datu pÄrraides kanÄlÄ vidÄjÄ aizkave ir 30 milisekundes, tad tikai vienas milisekundes sinhronizÄcijas kļūda starp atlikuÅ”ajiem rÄdÄ«tÄjiem izraisÄ«s iegÅ«tÄ kanÄla Ätruma samazinÄÅ”anos par aptuveni 5%. Ja 1 kanÄlos nepareizu laiku nofiksÄsim par 4 milisekundi, Ätruma samazinÄÅ”anÄs var viegli samazinÄties lÄ«dz 30%. TurklÄt entropija kanÄlos mainÄs ļoti Ätri, tÄpÄc, mÄrot to retÄk kÄ reizi 0.5 milisekundÄs, Ätrajos kanÄlos ar nelielu aizkavi iegÅ«sim liela Ätruma degradÄciju. Protams, Å”Äda precizitÄte nav nepiecieÅ”ama visiem rÄdÄ«tÄjiem un ne visos apstÄkļos. Kad kanÄla aizkave ir 500 milisekundes un mÄs ar tÄdu strÄdÄjam, tad 1 milisekundes kļūda gandrÄ«z nebÅ«s pamanÄma. ArÄ« dzÄ«vÄ«bas uzturÄÅ”anas sistÄmas metrikai mums ir pietiekami daudz aptauju un sinhronizÄcijas 2 sekunžu, bet paÅ”ai uzraudzÄ«bas sistÄmai ir jÄspÄj strÄdÄt ar Ä«paÅ”i augstiem aptaujas rÄdÄ«tÄjiem un Ä«paÅ”i precÄ«zu metrikas sinhronizÄciju. - MinimÄls resursu patÄriÅÅ” un viena kaudze.
Gala ierÄ«ce var bÅ«t vai nu jaudÄ«gs borta komplekss, kas var analizÄt situÄciju uz ceļa vai veikt cilvÄku biometrisko ierakstu, vai arÄ« plaukstas izmÄra viena borta dators, ko speciÄlo spÄku karavÄ«rs nÄsÄ zem bruÅuvestÄm, lai pÄrraidÄ«tu video. reÄllaikÄ sliktos komunikÄcijas apstÄkļos. Neskatoties uz tik dažÄdajÄm arhitektÅ«rÄm un skaitļoÅ”anas jaudÄm, mÄs vÄlÄtos, lai programmatÅ«ra bÅ«tu vienÄda. - Lietussargu arhitektÅ«ra
Metrika ir jÄapkopo un jÄapkopo gala ierÄ«cÄ, lokÄli jÄsaglabÄ un jÄvizualizÄ reÄllaikÄ un retrospektÄ«vi. Ja ir savienojums, pÄrsÅ«tiet datus uz centrÄlo uzraudzÄ«bas sistÄmu. Ja nav savienojuma, sÅ«tÄ«Å”anas rindai vajadzÄtu uzkrÄties, nevis patÄrÄt RAM. - API integrÄcijai klienta uzraudzÄ«bas sistÄmÄ, jo nevienam nav vajadzÄ«gas daudzas uzraudzÄ«bas sistÄmas. Klientam ir jÄapkopo dati no visÄm ierÄ«cÄm un tÄ«kliem vienÄ uzraudzÄ«bÄ.
Kas notika
Lai nenoslogotu jau tÄ iespaidÄ«go garo lasÄ«Å”anu, es nesniegÅ”u visu monitoringa sistÄmu piemÄrus un mÄrÄ«jumus. Tas novedÄ«s pie cita raksta. Es tikai teikÅ”u, ka mÄs nevarÄjÄm atrast uzraudzÄ«bas sistÄmu, kas spÄj uzÅemt divus rÄdÄ«tÄjus vienlaikus ar kļūdu, kas mazÄka par 1 milisekundi un kas darbojas vienlÄ«dz efektÄ«vi gan ARM arhitektÅ«rÄ ar 64 MB RAM, gan x86_64 arhitektÅ«rÄ ar 32 MB. GB RAM. TÄpÄc mÄs nolÄmÄm rakstÄ«t paÅ”i, kas to visu var izdarÄ«t. LÅ«k, ko mÄs saÅÄmÄm:
Apkopojot trÄ«s kanÄlu caurlaidspÄju dažÄdÄm tÄ«kla topoloÄ£ijÄm
Dažu galveno rÄdÄ«tÄju vizualizÄcija
Arhitektūra
MÄs izmantojam Golang kÄ galveno programmÄÅ”anas valodu gan ierÄ«cÄ, gan datu centrÄ. Tas ievÄrojami vienkÄrÅ”oja dzÄ«vi, ievieÅ”ot daudzuzdevumu veikÅ”anu un iespÄju katram pakalpojumam iegÅ«t vienu statiski saistÄ«tu izpildÄmo binÄro failu. RezultÄtÄ mÄs ievÄrojami ietaupÄm resursus, metodes un trafiku pakalpojuma izvietoÅ”anai gala ierÄ«cÄs, izstrÄdes laiku un koda atkļūdoÅ”anu.
SistÄma ir ieviesta pÄc klasiskÄ moduļu principa un satur vairÄkas apakÅ”sistÄmas:
- Metrikas reÄ£istrÄcija.
Katra metrika tiek apkalpota ar savu pavedienu un tiek sinhronizÄta dažÄdos kanÄlos. MÄs varÄjÄm sasniegt sinhronizÄcijas precizitÄti lÄ«dz 10 nanosekundÄm. - Metrikas glabÄÅ”ana
MÄs izvÄlÄjÄmies rakstÄ«t savu krÄtuvi laikrindÄm vai izmantot kaut ko, kas jau bija pieejams. Datu bÄze ir nepiecieÅ”ama retrospektÄ«viem datiem, kas tiek pakļauti turpmÄkai vizualizÄcijai, proti, tajÄ nav datu par kanÄla aizkavÄÅ”anos ik pÄc 0.5 milisekundÄm vai kļūdu rÄdÄ«jumiem transporta tÄ«klÄ, bet katrÄ saskarnÄ ir Ätrums ik pÄc 500 milisekundÄm. Papildus augstajÄm prasÄ«bÄm attiecÄ«bÄ uz starpplatformu un zemu resursu patÄriÅu mums ir ÄrkÄrtÄ«gi svarÄ«gi, lai mÄs varÄtu apstrÄdÄt. dati ir vieta, kur tie tiek glabÄti. Tas ietaupa milzÄ«gus skaitļoÅ”anas resursus. Tarantool DBVS Å”ajÄ projektÄ esam izmantojuÅ”i kopÅ” 2016. gada, un pagaidÄm neredzam, ka tÄ varÄtu aizstÄt. ElastÄ«gs, ar optimÄlu resursu patÄriÅu, vairÄk nekÄ atbilstoÅ”u tehnisko atbalstu. Tarantool ievieÅ” arÄ« Ä¢IS moduli. Protams, tas nav tik spÄcÄ«gs kÄ PostGIS, taÄu ar to pietiek mÅ«su uzdevumiem, lai saglabÄtu dažus ar atraÅ”anÄs vietu saistÄ«tus rÄdÄ«tÄjus (kas attiecas uz transportu). - Metrikas vizualizÄcija
Å eit viss ir salÄ«dzinoÅ”i vienkÄrÅ”i. MÄs Åemam datus no noliktavas un parÄda tos vai nu reÄllaikÄ, vai retrospektÄ«vi. - Datu sinhronizÄcija ar centrÄlo uzraudzÄ«bas sistÄmu.
CentrÄlÄ uzraudzÄ«bas sistÄma saÅem datus no visÄm ierÄ«cÄm, saglabÄ tos ar noteiktu vÄsturi un nosÅ«ta Klienta uzraudzÄ«bas sistÄmai, izmantojot API. AtŔķirÄ«bÄ no klasiskajÄm uzraudzÄ«bas sistÄmÄm, kurÄs āgalvaā staigÄ un vÄc datus, mums ir pretÄja shÄma. PaÅ”as ierÄ«ces sÅ«ta datus, kad ir savienojums. Tas ir ļoti svarÄ«gs punkts, jo tas ļauj saÅemt datus no ierÄ«ces par tiem laika periodiem, kuros tie nebija pieejami, un neielÄdÄt kanÄlus un resursus, kamÄr ierÄ«ce nav pieejama. MÄs izmantojam Influx monitoringa serveri kÄ centrÄlo uzraudzÄ«bas sistÄmu. AtŔķirÄ«bÄ no analogiem, tas var importÄt retrospektÄ«vus datus (tas ir, ar laika zÄ«mogu, kas atŔķiras no metrikas saÅemÅ”anas brīža). SavÄktos rÄdÄ«tÄjus vizualizÄ Grafana, modificÄ ar failu. Å is standarta steks tika izvÄlÄts arÄ« tÄpÄc, ka tai ir gatavas API integrÄcijas ar gandrÄ«z jebkuru klientu uzraudzÄ«bas sistÄmu. - Datu sinhronizÄcija ar centrÄlo ierÄ«Äu vadÄ«bas sistÄmu.
IerÄ«Äu pÄrvaldÄ«bas sistÄma ievieÅ” Zero Touch Provisioning (atjaunina programmaparatÅ«ru, konfigurÄciju utt.) un atŔķirÄ«bÄ no uzraudzÄ«bas sistÄmas saÅem tikai problÄmas katrÄ ierÄ«cÄ. Tie ir aktivizÄtÄji borta aparatÅ«ras sargsuÅa pakalpojumu darbÄ«bai un visiem dzÄ«vÄ«bas uzturÄÅ”anas sistÄmu rÄdÄ«tÄjiem: CPU un SSD temperatÅ«ra, CPU slodze, brÄ«vÄ vieta un SMART stÄvoklis diskos. ApakÅ”sistÄmas krÄtuve arÄ« ir veidota uz Tarantool. Tas nodroÅ”ina ievÄrojamu Ätrumu laika rindu apkopoÅ”anÄ tÅ«kstoÅ”iem ierÄ«Äu, kÄ arÄ« pilnÄ«bÄ atrisina datu sinhronizÄÅ”anas problÄmu ar Ŕīm ierÄ«cÄm. Tarantool ir lieliska rindu un garantÄta piegÄdes sistÄma. MÄs izÅÄmÄm Å”o svarÄ«go funkciju, lieliski!
TÄ«kla vadÄ«bas sistÄma
Kas ir nÄkamais
LÄ«dz Å”im mÅ«su vÄjÄkais posms ir centrÄlÄ uzraudzÄ«bas sistÄma. Tas ir ieviests par 99.9% standarta kaudzÄ, un tam ir vairÄki trÅ«kumi:
- InfluxDB zaudÄ datus, kad tiek zaudÄta jauda. Parasti Klients operatÄ«vi apkopo visu, kas nÄk no ierÄ«cÄm, un paÅ”Ä datu bÄzÄ nav dati, kas vecÄki par 5 minÅ«tÄm, taÄu nÄkotnÄ tas var kļūt par sÄpÄm.
- Grafana ir vairÄkas problÄmas ar datu apkopoÅ”anu un displeja sinhronizÄciju. VisizplatÄ«tÄkÄ problÄma ir tad, ja datu bÄzÄ ir laika rindas ar 2 sekunžu intervÄlu, sÄkot, piemÄram, 00:00:00, un Grafana sÄk rÄdÄ«t datus apkopotÄ veidÄ no +1 sekundes. RezultÄtÄ lietotÄjs redz dejojoÅ”u grafiku.
- PÄrmÄrÄ«gs koda daudzums API integrÄcijai ar treÅ”Äs puses uzraudzÄ«bas sistÄmÄm. To var padarÄ«t daudz kompaktÄku un, protams, pÄrrakstÄ«t Go)
Es domÄju, ka jÅ«s visi esat lieliski redzÄjuÅ”i, kÄ izskatÄs Grafana, un zinÄt tÄs problÄmas bez manis, tÄpÄc es nepÄrslogoÅ”u ierakstu ar attÄliem.
SecinÄjums
Es apzinÄti neaprakstÄ«ju tehniskÄs detaļas, bet aprakstÄ«ju tikai Ŕīs sistÄmas pamata dizainu. PirmkÄrt, lai tehniski pilnÄ«bÄ aprakstÄ«tu sistÄmu, bÅ«s nepiecieÅ”ams vÄl viens raksts. OtrkÄrt, ne visus tas interesÄs. KomentÄros ierakstiet, kÄdas tehniskÄs detaļas vÄlaties uzzinÄt.
Ja kÄdam ir jautÄjumi, kas neattiecas uz Å”o rakstu, varat rakstÄ«t man uz a.rodin @ qedr.com
Avots: www.habr.com