Don haka kuna tattara awo. Kamar yadda muke. Muna kuma tattara awo. Hakika, wajibi ne don kasuwanci. A yau za mu yi magana game da hanyar haɗin farko ta tsarin sa ido na mu - uwar garken tarawa mai jituwa tare da statsd.
Daga labaran mu da suka gabata (
Da'awar 1. Github, mai haɓaka aikin, ya daina tallafa masa: buga faci da gyarawa, karɓar namu da (ba namu kaɗai ba) PR. A cikin 'yan watannin da suka gabata (wani wuri daga Fabrairu-Maris 2018), ayyuka sun sake komawa, amma kafin wannan akwai kusan shekaru 2 na cikakkiyar nutsuwa. Bugu da kari, ana ci gaba da aikin
Da'awar 2. Daidaiton lissafin. Brubeck yana tattara jimlar ƙimar 65536 don tarawa. A cikin yanayinmu, don wasu ma'auni, yayin lokacin haɗuwa (30 seconds), ƙarin ƙima za su iya zuwa (1 a kololuwa). A sakamakon wannan samfurin, matsakaicin da mafi ƙarancin ƙima ba su da amfani. Misali, kamar haka:
Kamar yadda ya kasance
Yadda yakamata ya kasance
Saboda wannan dalili, gabaɗaya ana ƙididdige adadin kuɗi ba daidai ba. Ƙara anan bug tare da ambaliya mai 32-bit, wanda gabaɗaya yana aika sabar zuwa segfault lokacin karɓar ma'auni mara laifi, kuma komai ya zama babba. Kuskuren, ta hanya, ba a gyara ba.
Kuma a ƙarshe Da'awar X. A lokacin rubutawa, muna shirye mu gabatar da shi ga duk 14 fiye ko žasa da aiwatar da statsd aiki da muka iya samu. Bari mu yi tunanin cewa wasu abubuwan more rayuwa guda ɗaya sun girma har karɓar MPS miliyan 4 bai isa ba. Ko ma idan bai girma ba tukuna, amma ma'auni sun riga sun kasance da mahimmanci a gare ku cewa ko da gajere, 2-3 mintuna a cikin ginshiƙi na iya zama mai mahimmanci kuma ya haifar da rashin tausayi a tsakanin manajoji. Tunda magance bakin ciki aiki ne na rashin godiya, ana buƙatar mafita na fasaha.
Da fari dai, haƙuri na kuskure, don haka kwatsam matsala a kan uwar garke ba ta haifar da psychiatric aljan apocalypse a cikin ofishin. Abu na biyu, zazzagewa don samun damar karɓar fiye da miliyan 4 MPS, ba tare da zurfafa zurfafa ba cikin tarin hanyar sadarwar Linux da kuma girma cikin nutsuwa "a faɗi" zuwa girman da ake buƙata.
Tun da muna da wurin yin sikeli, mun yanke shawarar farawa da rashin haƙuri. " GAME DA! Haƙuri na kuskure! Yana da sauƙi, za mu iya yin shi, "Mun yi tunani kuma mun ƙaddamar da sabobin 2, muna haɓaka kwafin brubeck akan kowane. Don yin wannan, dole ne mu kwafi zirga-zirga tare da ma'auni zuwa sabobin biyu har ma da rubuta don wannan
Idan kun yi tunani kadan game da matsalar kuma a lokaci guda tono dusar ƙanƙara tare da felu, to, ra'ayin da ke gaba zai iya zuwa a hankali: kuna buƙatar statsd wanda zai iya aiki a cikin yanayin rarraba. Wato, wanda ke aiwatar da aiki tare tsakanin nodes a cikin lokaci da awo. "Tabbas, irin wannan mafita tabbas ya riga ya wanzu," mun ce mun je Google…. Kuma ba su sami kome ba. Bayan an bi ta cikin takaddun don daban-daban statsd (
Kuma a sa'an nan muka tuna game da "abin wasa" statsd - bioyino, wanda aka rubuta a Just for Fun hackathon (sunan aikin da aka samar ta hanyar rubutun kafin fara hackathon) kuma mun gane cewa muna buƙatar namu statsd cikin gaggawa. Don me?
- saboda akwai 'yan kaɗan na statsd clones a duniya,
- saboda yana yiwuwa a samar da abin da ake so ko kusa da haƙurin kuskure da ake so da ƙima (ciki har da daidaita ma'auni tsakanin sabar da magance matsalar aika rikice-rikice),
- saboda yana yiwuwa a lissafta ma'auni daidai fiye da brubeck,
- saboda zaku iya tattara ƙarin kididdigar da kanku, wanda brubeck a zahiri bai samar mana ba,
- saboda na sami damar shirya kaina hyperperformance rarraba sikelin lab aikace-aikace, wanda ba zai gaba daya maimaita gine-gine na wani irin hyperfor ... da kyau, shi ke nan.
Me za a rubuta a kai? Hakika, a cikin Rust. Me yasa?
- saboda an riga an sami mafita na samfur,
- domin marubucin labarin ya riga ya san Tsatsa a lokacin kuma yana da sha'awar rubuta wani abu a ciki don samarwa tare da damar da za a saka shi a cikin bude-source,
- saboda harsunan da ke da GC ba su dace da mu ba saboda yanayin zirga-zirgar da aka karɓa (kusan ainihin lokacin) da dakatarwar GC a zahiri ba za a yarda da su ba,
- saboda kuna buƙatar mafi girman aiki kwatankwacin C
- saboda Tsatsa tana ba mu ƙima ba tare da tsoro ba, kuma idan mun fara rubuta shi a cikin C/C++, da mun sami ƙarin lahani, ɓarna mai ɓarna, yanayin tsere da sauran kalmomi masu ban tsoro fiye da brubeck.
Akwai kuma jayayya a kan Tsatsa. Kamfanin ba shi da kwarewa wajen ƙirƙirar ayyuka a cikin Rust, kuma yanzu ba ma shirin yin amfani da shi a cikin babban aikin. Saboda haka, akwai tsoro mai tsanani cewa babu abin da zai iya faruwa, amma mun yanke shawarar ɗaukar dama kuma mun gwada.
Lokaci ya wuce...
A ƙarshe, bayan yunƙurin gazawar da yawa, sigar aiki ta farko ta shirya. Me ya faru? Abin da ya faru ke nan.
Kowane kumburi yana karɓar tsarin awo nasa kuma yana tara su, kuma baya tara ma'auni na waɗannan nau'ikan inda ake buƙatar cikakken saitin su don haɗawa ta ƙarshe. An haɗa nodes da juna ta hanyar wasu nau'ikan ka'idojin kulle da aka rarraba, wanda ke ba ku damar zaɓar ɗaya daga cikinsu (a nan muka yi kuka) wanda ya cancanci aika ma'auni zuwa Babban. A halin yanzu ana magance wannan matsala ta hanyar
Fakitin UDP tare da ma'auni ba su daidaita tsakanin nodes akan kayan aikin cibiyar sadarwa ta hanyar Round Robin mai sauƙi. Tabbas, na'urar sadarwar ba ta rarraba abubuwan da ke cikin fakiti don haka yana iya cire fakiti fiye da 4M a sakan daya, ba tare da ma'auni ba wanda bai san komai ba. Idan muka yi la'akari da cewa ma'aunin ba ya zuwa ɗaya bayan ɗaya a cikin kowane fakiti, to ba mu hango wata matsala ta aiki a wannan wuri ba. Idan uwar garken ya fadi, na'urar sadarwar da sauri (a cikin dakika 1-2) ta gano wannan gaskiyar kuma ta cire uwar garken da ya fadi daga juyawa. Sakamakon haka, za a iya kunna kuɗaɗen kuɗaɗe (watau waɗanda ba jagora ba) a zahiri ba tare da lura da faifai a kan ginshiƙi ba. Matsakaicin da muka rasa wani ɓangare ne na ma'aunin da ya shigo a daƙiƙan ƙarshe. Asara kwatsam/rushewa/canzawar jagora zai haifar da ɗan ƙaramin abu (tazara na 30 na biyu har yanzu bai daidaita ba), amma idan akwai sadarwa tsakanin nodes, waɗannan matsalolin za a iya rage su, misali, ta hanyar aika fakitin aiki tare. .
Kadan game da tsarin ciki. Aikace-aikacen, ba shakka, multithreaded ne, amma zane-zanen zane ya bambanta da wanda aka yi amfani da shi a cikin brubeck. Zaren da ke cikin brubeck iri ɗaya ne - kowannensu yana da alhakin duka tattara bayanai da tarawa. A cikin bioyino, ma'aikata sun kasu kashi biyu: masu alhakin cibiyar sadarwa da masu alhakin tarawa. Wannan rarrabuwa tana ba ku damar sarrafa aikace-aikacen cikin sassauƙa dangane da nau'ikan ma'auni: inda ake buƙatar tarawa mai ƙarfi, zaku iya ƙara masu tarawa, inda akwai zirga-zirgar hanyar sadarwa da yawa, zaku iya ƙara adadin kwararar hanyar sadarwa. A halin yanzu, a kan sabobin mu muna aiki a cikin hanyar sadarwa 8 da 4 aggregation flows.
Sashin kirgawa (alhakin tarawa) yana da ban sha'awa sosai. Ana rarraba maɓuɓɓugan da ke cike da magudanar ruwa a tsakanin magudanar ruwa, inda daga baya a nazarce su kuma a haɗa su. Bayan buƙatar, ana ba da awo don aikawa zuwa wasu nodes. Duk waɗannan, gami da aika bayanai tsakanin nodes da aiki tare da Consul, ana yin su ba tare da izini ba, suna gudana akan tsarin.
Yawancin ƙarin matsaloli yayin haɓakawa sun haifar da sashin cibiyar sadarwa da ke da alhakin karɓar awo. Babban makasudin raba hanyoyin sadarwa zuwa sassa daban-daban shine sha'awar rage lokacin da kwararar ke kashewa ba don karanta bayanai daga soket. Zaɓuɓɓuka masu amfani da UDP asynchronous da recvmsg na yau da kullun sun ɓace cikin sauri: na farko yana cinye CPU mai yawan sararin samaniya don sarrafa taron, na biyu yana buƙatar jujjuya mahallin da yawa. Don haka yanzu ana amfani da shi
Примечание
A cikin saitunan tsoho, an saita girman buffer ya zama babba. Idan ba zato ba tsammani ka yanke shawarar gwada uwar garken da kanka, za ka iya saduwa da gaskiyar cewa bayan aika ƙananan adadin ma'auni, ba za su isa cikin Graphite ba, suna cikin buffer rafin cibiyar sadarwa. Don yin aiki tare da ƙaramin adadin ma'auni, kuna buƙatar saita bufsize da girman jerin gwano zuwa ƙaramin ƙima a cikin saitin.
A ƙarshe, wasu ginshiƙi don masu sha'awar zane.
Kididdigar kan adadin ma'auni masu shigowa ga kowane uwar garken: fiye da MPS miliyan 2.
Kashe ɗaya daga cikin nodes da sake rarraba awo masu shigowa.
Kididdigar kan ma'auni masu fita: kumburi ɗaya ne kawai ke aikawa koyaushe - shugaban hari.
Ƙididdiga na aiki na kowane kumburi, la'akari da kurakurai a cikin nau'ikan tsarin daban-daban.
Cikakkun ma'auni masu shigowa (sunaye na awo suna ɓoye).
Me muke shirin yi da duk wannan na gaba? Tabbas, rubuta code, tsine...! Tun da farko an shirya aikin zai kasance bude tushen kuma zai ci gaba da kasancewa har tsawon rayuwarsa. Shirye-shiryen mu na gaggawa sun haɗa da canzawa zuwa nau'in Raft namu, canza ƙa'idar takwarorinsu zuwa mafi šaukuwa, gabatar da ƙarin ƙididdiga na ciki, sabbin nau'ikan awo, gyaran kwari da sauran haɓakawa.
Tabbas, ana maraba da kowa don taimakawa wajen haɓaka aikin: ƙirƙirar PR, Batutuwa, idan zai yiwu za mu amsa, haɓakawa, da dai sauransu.
Da aka ce, ai jama’a ke nan, ku sayi giwayenmu!
source: www.habr.com