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
Mai i a maatau tuhinga o mua (
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
Kereme 2. Точность вычислений. Brubeck собирает для агрегации всего 65536 значений. В нашем случае для некоторых метрик в период агрегации (30 сек) может приходить гораздо больше значений (1 527 392 в пике). В результате такого семплирования, значения максимумов и минимумов выглядят бесполезными. Например, вот так:
Ka rite ki tera
Как должно было быть
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
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 (
И тут мы вспомнили про «игрушечный» 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.
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
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.
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
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.
Te whakakore i tetahi o nga pona me te tohatoha ano i nga inenga taumai.
Te tatauranga mo nga inenga puta: kotahi anake te pona e tuku ana - ko te rangatira raid.
Nga tatauranga mo te mahi o ia node, me te whakaaro ki nga hapa i roto i nga momo waahanga punaha.
Te whakamaarama i nga inenga taumai (kei te huna nga ingoa 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