Bioyino - ka tohatohahia, ka taea te whakahiato inenga

Na ka kohikohi koe i nga inenga. I a tatou ano. Ka kohia hoki e matou nga inenga. Ko te tikanga, e tika ana mo te pakihi. I tenei ra ka korero tatou mo te hononga tuatahi o ta tatou punaha aroturuki - he tūmau whakahiatotanga hototahi statsd koiora, he aha matou i tuhi ai me te aha i whakarerea ai e matou te brubeck.

Bioyino - ka tohatohahia, ka taea te whakahiato inenga

Mai i a maatau tuhinga o mua (1, 2) ka taea e koe te mohio tae noa ki etahi wa ka kohia e matou nga tohu ma te whakamahi Brubeck. Kua tuhia ki te C. Mai i te tirohanga waehere, he mea ngawari ano he mono (he mea nui tenei ina hiahia koe ki te koha) a, ko te mea nui, ka whakahaere i a maatau pukapuka o te 2 miriona ine mo ia hekona (MPS) i te tihi. kahore he raruraru. Ko nga tuhinga e kii ana he tautoko mo te 4 miriona MPS me te whetūriki. Ko te tikanga ka whiwhi koe i te ahua kua kiia mena ka whirihora tika koe i te whatunga ki runga Linux. (Kaore matou i te mohio e hia nga MPS ka taea e koe ki te waiho koe i te whatunga penei). Ahakoa enei painga, he maha nga amuamu a matou mo te brubeck.

Kereme 1. Ko Github, te kaiwhakawhanake o te kaupapa, i mutu te tautoko i a ia: te whakaputa i nga papanga me nga whakatika, te whakaae ki a maatau me (ehara i a maatau anake) PR. I nga marama kua pahure ake nei (mai i Hui-tanguru-Maehe 2018), kua timata ano te mahi, engari i mua i tera kua tata ki te 2 tau te ata noho. I tua atu, kei te whakawhanakehia te kaupapa mo nga hiahia o roto o Gihub, ka waiho hei aukati nui ki te whakauru i nga ahuatanga hou.

Kereme 2. Точность вычислений. Brubeck собирает для агрегации всего 65536 значений. В нашем случае для некоторых метрик в период агрегации (30 сек) может приходить гораздо больше значений (1 527 392 в пике). В результате такого семплирования, значения максимумов и минимумов выглядят бесполезными. Например, вот так:

Bioyino - ka tohatohahia, ka taea te whakahiato inenga
Ka rite ki tera

Bioyino - ka tohatohahia, ka taea te whakahiato inenga
Как должно было быть

Mo taua take ano, ka he te tatau i nga moni. Taapirihia ki konei he pepeke me te 32-bit maanu puhake, ka tukuna te tūmau ki te segfault ina whiwhi i te inenga ahua harakore, ka pai katoa. Ko te bug, na te ara, kaore ano kia whakatikahia.

Na, i te mutunga, Kereme X. На момент написания статьи мы готовы предъявить её всем 14 более-менее работающим реализациям statsd, которые нам удалось найти. Давайте представим, что некоторая отдельно взятая инфраструктура выросла настолько, что принимать 4 млн MPS уже недостаточно. Или пусть ещё не выросла, но метрики для вас уже важны настолько, что даже короткие, 2-3 минутные провалы на графиках уже могут стать критичными и вызвать приступы непреодолимой депрессии у менеджеров. Так как лечение депрессии — дело неблагодарное, необходимы технические решения.

Ko te tuatahi, ko te manawanui o te he, kia kore ai he raru ohorere i runga i te tūmau ka puta he apocalypse zombie hinengaro i roto i te tari. Tuarua, ko te whakaheke kia kaha ki te whakaae neke atu i te 4 miriona MPS, me te kore e keri hohonu ki roto i te puranga whatunga Linux me te tipu marie "i te whanui" ki te rahi e hiahiatia ana.

I te mea he waahi to maatau mo te whakatikatika, ka whakatau matou ki te tiimata me te aro ki te he. "Mō! Whakaaetanga he! He maamaa, ka taea e matou, "i whakaaro matou ka whakarewahia e 2 nga kaitoro, ka kohia he kape o te brubeck ki ia tangata. Hei mahi i tenei, me kape taatau waka me nga inenga ki nga kaitoro e rua me te tuhi hoki mo tenei whaipainga iti. I whakatauhia e matou te raru o te hee i tenei, engari... kaore i tino pai. I te tuatahi he pai nga mea katoa: ka kohia e ia brubeck tana ake momo whakahiatotanga, ka tuhi raraunga ki te Graphite kotahi ia 30 hēkona, ka tuhirua i te waahi tawhito (ka mahia tenei ki te taha Graphite). Ki te rahua ohorere tetahi tūmau, kei a maatau te tuarua me tana ake kape o nga raraunga whakahiato. Engari koinei te raruraru: ki te rahua te tūmau, ka puta he "kanohi" i runga i nga kauwhata. Ko tenei na te mea ko nga waahi 30-hekona a brubeck kaore i te tukutahi, a i te wa o te tukinga kaore tetahi o ratou e tuhiruatia. Ka timata te tūmau tuarua, ka puta ano te mea. He tino pai, engari kei te pirangi au kia pai ake! Ko te raruraru o te tauinenga kaore ano kia ngaro. Ko nga inenga katoa ka "rere" tonu ki te tūmau kotahi, na reira he iti noa ki te 2-4 miriona MPS, i runga i te taumata whatunga.

Mena ka whakaaro koe mo te raruraru me te wa ano ka keri i te hukarere me te koko, ka puta ake te whakaaro e whai ake nei: ka hiahia koe ki tetahi tatauranga ka taea te mahi i roto i te tikanga tohatoha. Arā, tetahi e whakatinana ana i te tukutahitanga i waenga i nga pona i te waa me nga inenga. "Ae ra, tera pea he otinga penei," ka kii matou ka haere ki a Google…. a kahore he mea i kitea e ratou. I muri i te tirotiro i nga tuhinga mo nga tatauranga rereke (https://github.com/etsy/statsd/wiki#server-implementations mai i te Hakihea 11.12.2017, XNUMX), kaore i kitea he mea. Ko te ahua nei, kaore ano nga kaiwhakawhanake me nga kaiwhakamahi o enei otinga i tutaki ki te maha o nga inenga, ki te kore ka puta mai he mea.

И тут мы вспомнили про «игрушечный» statsd — bioyino, который писали на хакатоне just for fun (название проекта сгенерировал скрипт перед началом хакатона) и поняли, что нам срочно нужен собственный statsd. Зачем?

  • na te mea he iti rawa nga karaka tatauranga o te ao,
  • na te mea ka taea te whakarato i te mea e hiahiatia ana, e tata ana ranei ki te pai o te hee me te tauine (tae atu ki te tukutahi i nga inenga whakahiato i waenga i nga kaitoro me te whakatau i te raru o te tuku papā),
  • na te mea ka taea te tatau i nga inenga tika ake i te mahi a brubeck,
  • na te mea ka taea e koe te kohikohi i nga tatauranga taipitopito ake, kaore i tukuna mai e te brubeck ki a matou,
  • na te mea i whai waahi ahau ki te whakarite i taku ake tono taiwhanga tauine toha hyperperformance, e kore e tino whakahoki ano i te hoahoanga o tetahi atu hyperfor... pai, koira.

He aha te tuhi? Ko te tikanga, i roto i te Rust. He aha?

  • na te mea i mua he otinga tauira,
  • na te mea kua mohio te kaituhi o te tuhinga ki a Rust i tera wa me te hiahia ki te tuhi i tetahi mea ki roto mo te whakaputa me te whai waahi ki te whakauru ki te puna tuwhera,
  • na te mea ko nga reo whai GC kaore e pai mo tatou na te ahua o nga waka kua tae mai (tata tonu) me nga okiokinga GC kaore e whakaaetia,
  • na te mea ka hiahia koe ki te mahi tino rite ki a C
  • na te mea ka tukuna mai e Rust ki a matou he hononga mataku kore, a mena ka tiimata matou ki te tuhi i roto i te C/C++, ka nui ake nga whakaraeraetanga, te waipuke, nga tikanga iwi me etahi atu kupu whakamataku atu i te brubeck.

He tohe ano ki a Rust. Kaore he wheako o te kamupene ki te hanga kaupapa i Rust, a inaianei kaore ano matou e whakaaro ki te whakamahi i roto i te kaupapa matua. Na reira, he tino mataku kei kore e puta tetahi mea, engari i whakatau matou ki te whai waahi ka whakamatau.

Kua hipa te wa...

Ka mutu, i muri i te maha o nga nganatanga i rahua, kua rite te putanga mahi tuatahi. He aha te mea i tupu? Koinei te mea i tupu.

Bioyino - ka tohatohahia, ka taea te whakahiato inenga

Ka whiwhi ia node i tana ake huinga inenga ka whakaemihia, karekau hoki e whakahiato inenga mo aua momo e hiahiatia ana o raatau huinga katoa mo te whakahiato whakamutunga. Ko nga pona e hono ana tetahi ki tetahi e etahi momo kawa raka kua tohatohahia, e taea ai e koe te kowhiri i roto i a raatau ko te mea anake (i konei matou i tangi) e tika ana ki te tuku inenga ki te Mea Nui. I tenei wa kei te whakatauhia tenei raru e Whakauru, engari i nga wa kei te heke mai ka toro atu nga wawata o te kaituhi ki ake whakatinanatanga Raft, kei reira te tangata tino tika, ko te tikanga, ko te pona rangatira o te whakaaro. I tua atu i te whakaaetanga, he maha nga wa (kotahi i ia hekona te taunoa) ka tukuna ki o raatau hoa tata nga waahanga o nga inenga kua whakahiato-mua i kaha ki te kohi i tera tuarua. Te ahua nei kei te mau tonu te tauine me te kawa o te he - kei ia node he huinga katoa o nga inenga, engari ko nga inenga kua tukuna kua whakahiatotia, ma te TCP ka whakawaeheretia ki roto i te kawa-rua, no reira ka tino heke iho nga utu taapiri ki te UDP. Ahakoa te nui o nga inenga taumai, he iti rawa te mahara me te iti o te PTM ki te kohikohi. Mo a maatau tohu tino kaha, he iti noa nga megabytes o nga raraunga. Hei taapiri taapiri, kaore matou e whiwhi i nga tuhinga koretake ki te Graphite, pera me te burbeck.

Ko nga paatete UDP me nga inenga kaore i te taurite i waenga i nga pona i runga i nga taputapu whatunga na roto i te Rauna Rauna ngawari. Ae ra, karekau te taputapu whatunga e wetewete i nga ihirangi o nga paatete, na reira ka taea e ia te neke atu i te 4M nga paatete mo ia hekona, kaua e whakahua i nga inenga kaore rawa i te mohio. Mena ka whai whakaaro tatou kaore nga inenga e tae mai i ia wa ki ia kete, karekau matou e kite i nga raru mahi i tenei waahi. Mena ka pakaru te tūmau, ka tere te taputapu whatunga (i roto i te 1-2 hēkona) ka kitea tenei meka ka tango i te tūmau i pakaru mai i te hurihanga. Ko te hua o tenei, ka taea te whakaka me te whakaweto nga pona hāngū (arā, ehara i te kaiārahi) me te kore e kite i nga tangohanga i runga i nga tūtohi. Ko te morahi e ngaro ana ko tetahi waahanga o nga inenga i uru mai i te hēkona whakamutunga. Ko te ngaronga ohorere/whakaweto/whakawhitinga o te kaihautu ka hanga ano he iti noa (kei te tukutahi tonu te wa 30 hēkona), engari mena he korero i waenga i nga pona, ka taea te whakaiti i enei raru, hei tauira, ma te tuku i nga putea tukutahi. .

Немного о внутреннем устройстве. Приложение, конечно же, многопоточное, но архитектура потоков отличается от той, что использована в brubeck. Потоки в brubeck — одинаковые — каждый из них отвечает одновременно и за сбор информации, и за агрегацию. В bioyino рабочие потоки (workers) разделены на две группы: ответственные за сеть и ответственные за агрегацию. Такое разделение позволяет более гибко управлять приложением в зависимости от типа метрик: там где требуется интенсивная агрегация, можно прибавить агрегаторов, там где много сетевого трафика — прибавить количество сетевых потоков. В данный момент на наших серверах мы работаем в 8 сетевых и 4 агрегирующих потока.

Ko te wahanga tatau (te kawenga mo te whakahiato) he tino hoha. Ka tohatohahia nga kaitarai e whakakiia ana e nga rerenga whatunga ki waenga i nga rerenga tatau, ka tohatohahia, ka whakahiatohia. I runga i te tono, ka tukuna nga inenga mo te tuku ki etahi atu pona. Ko enei katoa, tae atu ki te tuku raraunga i waenga i nga pona me te mahi tahi me te Consul, ka mahia i runga i te anga. tokio.

He maha atu nga raru i te wa o te whakawhanaketanga na te waahanga whatunga te kawenga mo te whiwhi inenga. Ko te whainga matua o te wehewehe i nga rerenga whatunga ki roto i nga hinonga motuhake ko te hiahia ki te whakaiti i te wa e pau ai te rerenga e kore ki te panui raraunga mai i te turanga. Ko nga whiringa ma te whakamahi i te UDP tukutahi me te recvmsg auau ka ngaro wawe: ko te tuatahi he nui rawa te mokowā-kaiwhakamahi PTM mo te tukatuka takahanga, ko te tuarua he maha rawa nga huringa horopaki. Na reira ka whakamahia inaianei recvmmsg me nga parepare nunui (me nga parepare, e nga rangatira rangatira, ehara i te mea ki a koe!). Ko te tautoko mo te UDP auau kua rahuitia mo nga keehi marama kaore e hiahiatia ana te recvmmsg. I roto i te aratau multimessage, ka taea te whakatutuki i te mea nui: ko te nuinga o te waa, ko te miro whatunga ka rake te rarangi OS - ka panuihia nga raraunga mai i te turanga me te whakawhiti atu ki te mokowhiti mokowhiti, ka huri noa i etahi wa ki te tuku i te papaa ki tonu. whakahiato. Ko te rarangi i roto i te turanga karekau e kohi, karekau e tipu te maha o nga paatete kua taka.

parau

I roto i nga tautuhinga taunoa, ka whakatauhia te rahi o te parepare kia tino nui. Mena ka whakatau koe ki te whakamatau i a koe ano, ka tupono pea koe i muri i te tuku i te iti o nga inenga, kaore e tae ki te Graphite, ka noho tonu i roto i te kaawana awa whatunga. Hei mahi me te iti o nga inenga, me whakarite e koe te bufsize me te rahi-tutira-mahi ki nga uara iti i roto i te whirihora.

Ka mutu, etahi tūtohi mo te hunga i aroha ki te tūtohi.

Te tatauranga mo te maha o nga inenga taumai mo ia tūmau: neke atu i te 2 miriona MPS.

Bioyino - ka tohatohahia, ka taea te whakahiato inenga

Te whakakore i tetahi o nga pona me te tohatoha ano i nga inenga taumai.

Bioyino - ka tohatohahia, ka taea te whakahiato inenga

Te tatauranga mo nga inenga puta: kotahi anake te pona e tuku ana - ko te rangatira raid.

Bioyino - ka tohatohahia, ka taea te whakahiato inenga

Nga tatauranga mo te mahi o ia node, me te whakaaro ki nga hapa i roto i nga momo waahanga punaha.

Bioyino - ka tohatohahia, ka taea te whakahiato inenga

Te whakamaarama i nga inenga taumai (kei te huna nga ingoa inenga).

Bioyino - ka tohatohahia, ka taea te whakahiato inenga

He aha ta tatou e whakamahere ana mo enei mea katoa e whai ake nei? Ko te tikanga, tuhia te waehere, whakatara...! Ko te kaupapa i whakaritea tuatahi kia tuwhera-puna, ka noho pera tonu i tona oranga. Ko o maatau mahere tonu ko te huri ki ta maatau ake putanga o Raft, te huri i te kawa hoa ki te kawe kawe, te whakauru i etahi atu tatauranga o roto, nga momo inenga hou, nga whakatika iro me etahi atu whakapainga.

Конечно же, приветствуются все желающие помогать в развитии проекта: создавайте PR, Issues, по возможности будем отвечать, дорабатывать и т. д.

На этом, как говорится, that’s all folks, покупайте наших слонов!



Source: will.com

Tāpiri i te kōrero