FAQ e pili ana i ka hoʻolālā a me ka hana o VKontakte

Aia ka moʻolelo o ka hana ʻana o VKontakte ma Wikipedia; ua haʻi ʻia e Pavel ponoʻī. Me he mea lā ua ʻike mua nā kānaka a pau iā ia. E pili ana i nā internals, ka hoʻolālā a me ke ʻano o ka pūnaewele ma HighLoad++ Pavel i haʻi mai iaʻu i ka makahiki 2010. He nui nā kikowaena i lele mai ia manawa, no laila e hoʻonui mākou i ka ʻike: e wehe mākou iā ia, e lawe i loko, e kaupaona, a nānā i ka hāmeʻa VK mai kahi ʻike loea.

FAQ e pili ana i ka hoʻolālā a me ka hana o VKontakte

Alexey Akulovich (AterCattus) ka mea hoʻomohala hope i ka hui VKontakte. ʻO ka transcript o kēia hōʻike he pane hui i nā nīnau i nīnau pinepine ʻia e pili ana i ka hana ʻana o ka paepae, nā ʻōnaehana, nā kikowaena a me ka pilina ma waena o lākou, akā ʻaʻole e pili ana i ka hoʻomohala ʻana, ʻo ia hoʻi. pili i ka hao. Hoʻokaʻawale, e pili ana i nā ʻikepili a me nā mea a VK, e pili ana i ka ʻohi ʻana i nā lāʻau a me ka nānā ʻana i ka papahana holoʻokoʻa holoʻokoʻa. Nā kikoʻī ma lalo o ka ʻoki.



No nā makahiki ʻehā aʻe aʻu i hana ai i nā ʻano hana āpau e pili ana i ka hope.

  • Ka hoʻouka ʻana, mālama ʻana, ka hana ʻana, ka hāʻawi ʻana i ka media: wikiō, live streaming, leo, nā kiʻi, nā palapala.
  • Infrastructure, platform, ka nānā ʻana i nā mea hoʻomohala, nā lāʻau, nā huna huna, CDN, ka protocol RPC proprietary.
  • Hoʻohui me nā lawelawe o waho: nā leka hoʻomaopopo, ka hoʻopili ʻana i nā loulou waho, ka hānai RSS.
  • Ke kōkua nei i nā hoa hana me nā nīnau like ʻole, nā pane e koi ai i ka luʻu ʻana i ke code ʻike ʻole.

I loko o kēia manawa, loaʻa iaʻu kahi lima i nā mea he nui o ka pūnaewele. Makemake au e kaʻana like i kēia ʻike.

hale hoʻolālā maʻamau

ʻO nā mea a pau, e like me ka mea maʻamau, hoʻomaka me kahi kikowaena a i ʻole pūʻulu o nā kikowaena e ʻae i nā noi.

kikowaena mua

ʻAe ke kikowaena mua i nā noi ma o HTTPS, RTMP a me WSS.

https - he mau noi kēia no nā mana pūnaewele nui a me ka paʻa lima o ka pūnaewele: vk.com a me m.vk.com, a me nā mea kūʻai kūhelu a me nā mea kūʻai ʻole o kā mākou API: nā mea kūʻai aku kelepona, nā ʻelele. He hookipa ko makou RTMP- kaʻahele no nā hoʻolaha Live me nā kikowaena mua kaʻawale a WSS- nā pilina no Streaming API.

No HTTPS a me WSS ma nā kikowaena he mea pono nginx. No nā hoʻolaha RTMP, ua hoʻololi mākou i kā mākou hoʻonā ponoʻī kive, akā, aia ma waho o ke kiko o ka hōʻike. No ka ʻae ʻana i ka hewa, hoʻolaha kēia mau kikowaena i nā helu IP maʻamau a hana i nā hui a inā he pilikia ma kekahi o nā kikowaena, ʻaʻole nalowale nā ​​​​noi o nā mea hoʻohana. No HTTPS a me WSS, hoʻopili kēia mau kikowaena like i nā kaʻa i mea e lawe ai i kahi ʻāpana o ka ukana CPU ma luna o lākou iho.

ʻAʻole mākou e kamaʻilio hou e pili ana i ka WSS a me RTMP, akā e pili ana i nā noi HTTPS maʻamau, i pili pinepine ʻia me kahi papahana pūnaewele.

Hoʻihoʻi

Ma hope o ke alo he mau kikowaena backend. Hoʻoponopono lākou i nā noi e loaʻa i ka server mua mai nā mea kūʻai aku.

keia nā kikowaena kPHP, kahi e holo ai ka daemon HTTP, no ka mea, ua wehe mua ʻia ʻo HTTPS. ʻO kPHP kahi kikowaena e holo nei nā kumu hoʻohālike prefork: hoʻomaka i kahi kaʻina hana haku, kahi hui o nā kaʻina hana keiki, hāʻawi i nā kumu hoʻolohe iā lākou a hana lākou i kā lākou noi. I kēia hihia, ʻaʻole i hoʻomaka hou ʻia nā kaʻina hana ma waena o kēlā me kēia noi mai ka mea hoʻohana, akā e hoʻihoʻi wale i ko lākou mokuʻāina i ka mokuʻāina kumu ʻole kumu - noi ma hope o ka noi, ma kahi o ka hoʻomaka hou ʻana.

Hoʻoili hoʻoili

ʻAʻole kā mākou ʻaoʻao hope he ʻauʻau nui o nā mīkini e hiki ke hana i kekahi noi. ʻO mākou iā lākou māhele ʻia i pūʻulu ʻokoʻa: general, mobile, api, video, staging... ʻAʻole e pili ka pilikia ma kahi hui o nā mīkini i nā mea ʻē aʻe. I ka pilikia me ka wikiō, ʻaʻole ʻike ka mea hoʻohana e hoʻolohe i nā mele i nā pilikia. ʻO ka hope hope e hoʻouna i ka noi e hoʻoholo ʻia e nginx ma mua e like me ka config.

ʻOhi ʻana me ka hoʻoponopono hou ʻana

No ka hoʻomaopopo ʻana i ka nui o nā kaʻa e pono ai mākou i kēlā me kēia hui, mākou mai hilinai ma QPS. ʻOkoʻa nā ʻaoʻao hope, loaʻa nā noi like ʻole, ʻokoʻa ka paʻakikī o kēlā me kēia noi i ka helu ʻana i ka QPS. No laila mākou Ke hana nei mākou me ka manaʻo o ka ukana ma ke kikowaena holoʻokoʻa - ma ka CPU a me ka perf.

Loaʻa iā mākou nā kaukani o ia mau kikowaena. Ke holo nei kēlā me kēia kikowaena kino i kahi pūʻulu kPHP e hana hou i nā cores a pau (no ka mea, ʻo ka kPHP he kaula hoʻokahi).

Mea kikowaena maʻiʻo

ʻO CS a i ʻole Mea Pūnaewele he waihona. He kikowaena ʻo CS e mālama ana i nā faila a me ka hana pū ʻana i nā faila i hoʻouka ʻia a me nā ʻano hana like ʻole a pau i hāʻawi ʻia e ka frontend pūnaewele nui iā ia.

Loaʻa iā mākou nā ʻumi kaukani o nā kikowaena kino e mālama i nā faila. Makemake nā mea hoʻohana e hoʻouka i nā faila, a makemake mākou e mālama a kaʻana like. Ua pani ʻia kekahi o kēia mau kikowaena e nā kikowaena pu/pp kūikawā.

pu/pp

Inā ʻoe i wehe i ka pā pūnaewele ma VK, ʻike ʻoe i ka pu/pp.

FAQ e pili ana i ka hoʻolālā a me ka hana o VKontakte

He aha ka pu/pp? Inā pani mākou i hoʻokahi kikowaena ma hope o kekahi, aia ʻelua mau koho no ka hoʻouka ʻana a hoʻoiho i kahi faila i ka kikowaena i pani ʻia: pololei через http://cs100500.userapi.com/path ai ole ia, ma o ke kikowaena waena - http://pu.vk.com/c100500/path.

ʻO Pu ka inoa mōʻaukala no ka hoʻouka ʻana i nā kiʻi, a ʻo pp ka mea koho kiʻi. ʻO ia hoʻi, hoʻokahi kikowaena no ka hoʻouka ʻana i nā kiʻi, a ʻo kekahi no ka hoʻouka ʻana. I kēia manawa ʻaʻole i hoʻouka ʻia nā kiʻi wale nō, akā ua mālama ʻia ka inoa.

ʻO kēia mau kikowaena hoʻopau i nā kau HTTPSe wehe i ka ukana hana mai ka waihona. Eia kekahi, no ka mea, ua hana ʻia nā faila mea hoʻohana ma kēia mau kikowaena, ʻoi aku ka liʻiliʻi o ka ʻike i mālama ʻia ma kēia mau mīkini, ʻoi aku ka maikaʻi. No ka laʻana, nā kī hoʻopunipuni HTTPS.

No ka mea ua pani ʻia nā mīkini e kā mākou mau mīkini ʻē aʻe, hiki iā mākou ke hāʻawi ʻole iā lākou i nā IP waho "keʻokeʻo", a hāʻawi "hina". ʻO kēia ala mākou i mālama ai i ka wai IP a hōʻoiaʻiʻo e pale i nā mīkini mai ke komo ʻana i waho - ʻaʻohe IP e komo i loko.

ʻO ke kūpaʻa ma luna o nā IP kaʻana like. Ma ke ʻano o ka hoʻomanawanui hewa, hana like ke ʻano - he nui nā kikowaena kino i kahi IP kino maʻamau, a ʻo ka hāmeʻa i mua o lākou e koho i kahi e hoʻouna ai i ka noi. E kamaʻilio wau e pili ana i nā koho ʻē aʻe ma hope.

ʻO ka mea hoʻopaʻapaʻa ʻo ia ma kēia hihia mālama ka mea kūʻai i nā pilina liʻiliʻi. Inā loaʻa ka IP like no nā mīkini he nui - me ka pūʻali hoʻokahi: pu.vk.com a i ʻole pp.vk.com, loaʻa ka palena o ka polokalamu kele pūnaewele i ka helu o nā noi like i hoʻokahi host. Akā i ka manawa o HTTP/2 ma nā wahi a pau, manaʻo wau ʻaʻole pili kēia.

ʻO ka hemahema o ka papahana ʻo ia ka pono pahū i nā kaʻa a pau, e hele ana i ka waihona, ma o kekahi kikowaena. ʻOiai mākou e hoʻomāke nei i nā kaʻa ma o nā mīkini, ʻaʻole hiki iā mākou ke puhi i nā kaʻa kaumaha, no ka laʻana, wikiō, me ka hoʻohana ʻana i ka hoʻolālā like. Hoʻouna pololei mākou iā ia - kahi pili pololei kaʻawale no nā waihona ʻokoʻa no ka wikiō. Hoʻouna mākou i nā ʻike maʻalahi ma o kahi proxy.

ʻAʻole i liʻuliʻu ua loaʻa iā mākou kahi mana maikaʻi o ka proxy. I kēia manawa e haʻi wau iā ʻoe pehea ka ʻokoʻa o lākou mai nā mea maʻamau a no ke aha e pono ai kēia.

Sun

I Kepakemapa 2017, ʻo Oracle, ka mea i kūʻai mua iā Sun, ua hoopau i ka nui o na limahana o ka Sun. Hiki iā mākou ke ʻōlelo i kēia manawa ua pau ka ʻoihana. I ke koho ʻana i kahi inoa no ka ʻōnaehana hou, ua hoʻoholo kā mākou mau luna e hoʻomaikaʻi i ka hoʻomanaʻo o kēia hui a kapa ʻia ka ʻōnaehana hou ʻo Sun. I waena o mākou iho, kapa mākou iā ia "nā lā".

FAQ e pili ana i ka hoʻolālā a me ka hana o VKontakte

pp i kekahi mau pilikia. Hoʻokahi IP no kēlā me kēia hui - kahi huna pono ʻole. Hoʻokaʻawale kekahi mau kikowaena kino i kahi helu IP maʻamau, a ʻaʻohe ala e hoʻokele ai i kahi kikowaena e hele ai ka noi. No laila, inā hele mai nā mea hoʻohana ʻē aʻe no ka faila hoʻokahi, a laila inā loaʻa kahi huna ma kēia mau kikowaena, pau ka faila i ka cache o kēlā me kēia kikowaena. He hoʻolālā maikaʻi ʻole kēia, akā ʻaʻohe mea hiki ke hana.

No laila - ʻAʻole hiki iā mākou ke hoʻokaʻawale i ka ʻike, no ka mea ʻaʻole hiki iā mākou ke koho i kahi kikowaena kikoʻī no kēia hui - he IP maʻamau ko lākou. No kekahi mau kumu kūloko i loaʻa iā mākou ʻaʻole hiki ke hoʻokomo i ia mau kikowaena ma nā wahi. Ma St. Petersburg wale nō lākou i kū ai.

Me nā lā, ua hoʻololi mākou i ka ʻōnaehana koho. I kēia manawa ua loaʻa iā mākou alahele anycast: ke alahele ikaika, anycast, ka daemon ponoʻī. Loaʻa i kēlā me kēia kikowaena kona IP ponoʻī, akā he subnet maʻamau. Hoʻonohonoho ʻia nā mea a pau ma ke ʻano inā hāʻule kekahi kikowaena, hoʻolaha ʻia ke kaʻa ma nā kikowaena ʻē aʻe o ka hui like. I kēia manawa hiki ke koho i kahi kikowaena kikoʻī, ʻaʻohe hoʻopaʻapaʻa hou, a ʻaʻole i pili ka hilinaʻi.

Kākoʻo kaumaha. I kēia manawa hiki iā mākou ke hoʻokomo i nā mīkini o nā mana like ʻole e like me ka mea e pono ai, a i ka hihia o nā pilikia pōkole, e hoʻololi i nā paona o nā "lā" hana e hoʻemi i ka ukana ma luna o lākou, i "hoʻomaha" lākou a hoʻomaka e hana hou.

Kaʻana like ʻana me ka id maʻiʻo. He mea ʻakaʻaka e pili ana i ka sharding: maʻa mau mākou i ka ʻikepili i hiki i nā mea hoʻohana like ʻole ke hele i ka faila hoʻokahi ma o ka "lā" hoʻokahi i loaʻa iā lākou kahi huna huna.

Ua hoʻomaka koke mākou i ka noi "Clover". He nīnau nīnau ma ka pūnaewele ma kahi hoʻolaha ola, kahi e nīnau ai ka mea hoʻokipa i nā nīnau a pane nā mea hoʻohana i ka manawa maoli, e koho ana i nā koho. He kamaʻilio ko ka app kahi e hiki ai i nā mea hoʻohana ke kamaʻilio. Hiki ke hoʻohui like i ka hoʻolaha ʻoi aku ma mua o 100 tausani kānaka. Kākau lākou a pau i nā memo i hoʻouna ʻia i nā mea komo a pau, a hele mai kahi avatar me ka memo. Inā hele mai 100 tausani kānaka no hoʻokahi avatar i hoʻokahi "lā", a laila hiki ke ʻōwili i kekahi manawa ma hope o ke ao.

I mea e pale aku ai i ka nui o nā noi no ka faila hoʻokahi, no kekahi ʻano ʻike mākou e hoʻohuli ai i kahi papahana naʻaupō e hoʻolaha ana i nā faila ma nā "lā" āpau i loaʻa ma ka ʻāina.

Lā mai loko mai

Reverse proxy ma nginx, cache ma RAM a i ʻole ma nā disks Optane / NVMe wikiwiki. Laʻana: http://sun4-2.userapi.com/c100500/path - kahi loulou i ka "lā", aia ma ka ʻāpana ʻehā, ka hui kikowaena lua. Hoʻopau ia i ka faila ala, aia ma ke kikowaena 100500.

aloha

Hoʻohui hou mākou i hoʻokahi node i kā mākou papahana hoʻolālā - ke kaiapuni caching.

FAQ e pili ana i ka hoʻolālā a me ka hana o VKontakte

Aia ma lalo ke kiʻi hoʻolālā nā huna huna, aia ma kahi o 20 o lākou. ʻO kēia nā wahi i loaʻa ai nā caches a me nā "lā", hiki ke hūnā i nā kaʻa ma o lākou iho.

FAQ e pili ana i ka hoʻolālā a me ka hana o VKontakte

ʻO kēia ke kāʻei ʻana i ka ʻike multimedia; ʻaʻohe ʻikepili mea hoʻohana i mālama ʻia ma aneʻi - mele wale nō, wikiō, nā kiʻi.

No ka hoʻoholo ʻana i ka ʻāina o ka mea hoʻohana, mākou ʻohi mākou i nā prefix pūnaewele BGP i hoʻolaha ʻia ma nā wahi. I ka hihia o fallback, pono mākou e hoʻokaʻawale i ka waihona geoip inā ʻaʻole hiki iā mākou ke ʻike i ka IP ma nā prefixes. Hoʻoholo mākou i ka ʻāina e ka IP o ka mea hoʻohana. I loko o ke code, hiki iā mākou ke nānā i hoʻokahi a ʻoi aku paha nā ʻāpana o ka mea hoʻohana - ʻo ia nā kikoʻī kahi e pili kokoke ana i ka ʻāina.

Pehea ia hana?

Helu mākou i ka kaulana o nā faila ma ka ʻāina. Aia kekahi helu o ka huna huna kahi i loaʻa ai ka mea hoʻohana, a me kahi faila - lawe mākou i kēia pālua a hoʻonui i ka helu me kēlā me kēia download.

I ka manawa like, hele mai nā daimonio - nā lawelawe ma nā ʻāina - i kēlā me kēia manawa i ka API a ʻōlelo: "ʻO wau kēia a me kahi cache, hāʻawi mai iaʻu i kahi papa inoa o nā faila kaulana loa i koʻu ʻāina ʻaʻole i loaʻa iaʻu. ” Hāʻawi ka API i kahi pūʻulu o nā faila i hoʻonohonoho ʻia e ka helu, hoʻoiho ka daemon iā lākou, lawe iā lākou i nā ʻāpana a hoʻopuka i nā faila mai laila. ʻO kēia ka ʻokoʻa koʻikoʻi ma waena o pu/pp a me Sun mai nā huna huna: hāʻawi koke lākou i ka faila ma o lākou iho, ʻoiai ʻaʻole kēia faila i loko o ka cache, a hoʻoiho mua ka cache i ka faila iā ia iho, a laila hoʻomaka e hoʻihoʻi.

Ma keia hihia loaa maʻiʻo kokoke i nā mea hoʻohana a me ka hoʻolaha ʻana i ka ukana pūnaewele. No ka laʻana, mai ka hale huna Moscow wale nō mākou e puʻunaue ai ma mua o 1 Tbit/s i nā hola kiʻekiʻe.

Akā aia nā pilikia - ʻAʻole he ʻōpala nā kikowaena cache. No ka ʻike kaulana loa, i kekahi manawa ʻaʻole lawa ka pūnaewele no kahi kikowaena kaʻawale. ʻO kā mākou mau kikowaena cache he 40-50 Gbit/s, akā aia nā ʻike e hoʻopaʻa loa i kēlā ala. Ke neʻe nei mākou i ka hoʻokō ʻana i ka mālama ʻana i nā kope o nā faila kaulana i ka ʻāina. Manaʻo wau e hoʻokō mākou i ka hopena o ka makahiki.

Ua nānā mākou i ka hoʻolālā nui.

  • Nā kikowaena mua e ʻae i nā noi.
  • Hoʻopau hope i nā noi kaʻina.
  • ʻO nā waihona i pani ʻia e nā ʻano proxies ʻelua.
  • ʻĀpana huna.

He aha ka hemahema o kēia kiʻi? ʻOiaʻiʻo, nā ʻikepili kahi e mālama ai mākou i ka ʻikepili.

Nā waihona a i ʻole nā ​​ʻenekini

Kāhea mākou iā lākou ʻaʻole he ʻikepili, akā he ʻenekini - ʻEnekini, no ka mea, ʻaʻohe o mākou ʻikepili i ka manaʻo i ʻae ʻia.

FAQ e pili ana i ka hoʻolālā a me ka hana o VKontakte

He ana pono keia. Ua hana kēia no ka mea ma 2008-2009, i ka wā i ulu nui ai ka VK i ka kaulana, ua hana holoʻokoʻa ka papahana ma MySQL a me Memcache a aia nā pilikia. Makemake ʻo MySQL i ka hāʻule ʻana a me ka hoʻopōʻino ʻana i nā faila, a laila ʻaʻole ia e hoʻōla, a ua hoʻohaʻahaʻa ʻia ʻo Memcache i ka hana a pono e hoʻomaka hou.

Ua ʻike ʻia ʻo ka papahana kaulana loa i mālama mau ʻia, e hoʻopōʻino ana i ka ʻikepili, a me kahi cache, e lohi ana. Ma ia mau kūlana, paʻakikī ka hoʻomohala ʻana i kahi papahana ulu. Ua hoʻoholo ʻia e hoʻāʻo e kākau hou i nā mea koʻikoʻi i kālele ʻia ka papahana ma luna o kā mākou mau kaʻa ponoʻī.

Ua holomua ka hoʻonā. Loaʻa ka manawa kūpono e hana ai i kēia, a me kahi mea e pono ai, no ka mea, ʻaʻohe ala ʻē aʻe o ka scaling i kēlā manawa. ʻAʻohe pūʻulu ʻikepili, ʻaʻole i noho ʻo NoSQL, aia wale nō MySQL, Memcache, PostrgreSQL - a ʻo ia wale nō.

Hana holoʻokoʻa. Ua alakaʻi ʻia ka hoʻomohala ʻana e kā mākou hui o nā mea hoʻomohala C a ua hana ʻia nā mea āpau ma ke ʻano kūlike. ʻAʻohe o ka ʻenekini, ua like lākou a pau i ka ʻano waihona like i kākau ʻia i ka disk, nā ʻāpana hoʻomaka like, nā hōʻailona hana ma ke ʻano like, a me ke ʻano like ʻole i ke ʻano o nā kūlana a me nā pilikia. Me ka ulu ʻana o nā ʻenekini, ʻoi aku ka maʻalahi o nā luna hoʻomalu e hana i ka ʻōnaehana - ʻaʻohe zoo e pono e mālama ʻia, a pono lākou e aʻo hou i ka hana ʻana i kēlā me kēia ʻaoʻao ʻekolu ʻikepili hou, i hiki ai ke hoʻonui wikiwiki a maʻalahi. ko lakou heluna.

Nā ʻano ʻenekini

Ua kākau ka hui i kekahi mau mīkini. Eia kekahi o ia mau mea: hoa, hōʻike, kiʻi, ipdb, leka, papa inoa, logs, memcached, meowdb, news, nostradamus, photo, playlists, pmemcached, sandbox, search, storage, likes, tasks, ...

No kēlā me kēia hana e koi ana i kahi hoʻolālā ʻikepili kikoʻī a i ʻole kaʻina hana i nā noi atypical, kākau ka hui C i kahi ʻenekini hou. Kainō.

He ʻenekini kaʻawale kā mākou memcached, e like me ka mea maʻamau, akā me ka hui o nā mea maikaʻi, aʻaʻole e lohi. ʻAʻole ClickHouse, akā hana pū kekahi. Loaʻa kaʻawale pemcached Ua hoʻomau i ka memcached, hiki ke mālama i ka ʻikepili ma ka disk, ʻoi aku, ma mua o ka hoʻopili ʻana i ka RAM, i ʻole e nalowale ka ʻikepili i ka wā e hoʻomaka hou ai. Aia nā ʻenekini like ʻole no nā hana pākahi: nā pila, nā papa inoa, nā hoʻonohonoho - nā mea āpau e pono ai kā mākou papahana.

Nā pūʻulu

Mai kahi hiʻohiʻona code, ʻaʻohe pono e noʻonoʻo i nā ʻenekini a i ʻole nā ​​ʻikepili e like me nā kaʻina hana, nā hui, a me nā manawa. Hana pono ke code me nā pūʻulu, me nā pūʻulu o nā ʻenekini - hoʻokahi ʻano no ka pūʻulu. E ʻōlelo kākou aia kahi pūʻulu memcached - he pūʻulu mīkini wale nō.

ʻAʻole pono ke code e ʻike i ka wahi kino, ka nui, a i ʻole ka helu o nā kikowaena. Hele ʻo ia i ka hui me ka hoʻohana ʻana i kekahi mea hōʻike.

I mea e hana ai kēia, pono ʻoe e hoʻohui i hoʻokahi mea i loaʻa ma waena o ke code a me nā mīkini - pōʻai.

RPC koho

Kokua kaʻa hoʻohui, kahi e holo ai ka pūnaewele holoʻokoʻa. I ka manawa like iā mākou ʻaʻohe ʻike lawelawe - akā, aia kahi hoʻonohonoho no kēia mea koho, e ʻike i kahi o nā pūʻulu āpau a me nā ʻāpana āpau o kēia pūʻulu. ʻO kēia ka hana a nā admin.

ʻAʻole mālama ka poʻe papahana i ka nui, i hea a me ke kumu kūʻai - hele wale lākou i ka hui. ʻAe kēia iā mākou i ka nui. I ka loaʻa ʻana o kahi noi, hoʻihoʻi ka proxy i ka noi, me ka ʻike i hea - hoʻoholo ʻo ia iā ia iho.

FAQ e pili ana i ka hoʻolālā a me ka hana o VKontakte

I kēia hihia, ʻo ka proxy kahi wahi e pale ai i ka hāʻule ʻole o ka lawelawe. Inā lohi a hāʻule paha kekahi ʻenekini, a laila hoʻomaopopo ka mea koho i kēia a pane e like me ka ʻaoʻao o ka mea kūʻai aku. ʻAe kēia iā ʻoe e wehe i ka manawa - ʻaʻole kali ke code no ka pane ʻana o ka mīkini, akā maopopo ʻaʻole ia e hana a pono e hana ʻokoʻa. Pono e hoʻomākaukau ʻia ke code no ka mea ʻaʻole e hana mau nā waihona.

Nā hoʻokō kikoʻī

I kekahi manawa, makemake maoli mākou e loaʻa kekahi ʻano hoʻonā maʻamau ma ke ʻano he ʻenekini. I ka manawa like, ua hoʻoholo ʻia ʻaʻole e hoʻohana i kā mākou rpc-proxy i hoʻomākaukau ʻia, i hana ʻia no kā mākou mau mīkini, akā e hana i kahi koho kūʻokoʻa no ka hana.

No MySQL, aia mākou ma ʻaneʻi a ma laila, hoʻohana mākou i ka db-proxy, a no ClickHouse - Kittenhouse.

Hana maʻamau e like me kēia. Aia kekahi kikowaena, holo ia kPHP, Go, Python - ma ka laulā, kekahi code hiki ke hoʻohana i kā mākou protocol RPC. E holo ana ke code ma kahi o ka RPC proxy - e holo ana kēlā me kēia kikowaena kahi i loaʻa ai ke code i kāna proxy kūloko. Ma ke noi, ʻike ka mea koho i kahi e hele ai.

FAQ e pili ana i ka hoʻolālā a me ka hana o VKontakte

Inā makemake kekahi ʻenekini e hele i kahi ʻē aʻe, ʻoiai ʻo ia he hoalauna, hele ia ma kahi mea koho, no ka mea aia paha ka hoalauna i kahi kikowaena data ʻē aʻe. ʻAʻole pono ka ʻenekini e hilinaʻi i ka ʻike ʻana i kahi o nā mea ʻē aʻe ma mua o ia iho - ʻo kā mākou hopena maʻamau kēia. Akā ʻoiaʻiʻo aia nā ʻokoʻa :)

He laʻana o kahi TL-scheme e like me ka hana ʻana o nā ʻenekini āpau.

memcache.not_found                                = memcache.Value;
memcache.strvalue	value:string flags:int = memcache.Value;
memcache.addOrIncr key:string flags:int delay:int value:long = memcache.Value;

tasks.task
    fields_mask:#
    flags:int
    tag:%(Vector int)
    data:string
    id:fields_mask.0?long
    retries:fields_mask.1?int
    scheduled_time:fields_mask.2?int
    deadline:fields_mask.3?int
    = tasks.Task;
 
tasks.addTask type_name:string queue_id:%(Vector int) task:%tasks.Task = Long;

ʻO kēia kahi protocol binary, ʻo ia ka analogue kokoke loa protobuf. Hōʻike mua ka schema i nā kahua koho, nā ʻano paʻakikī - nā hoʻonui o nā scalars i kūkulu ʻia, a me nā nīnau. Hana nā mea a pau e like me kēia protocol.

RPC ma luna o TL ma luna o TCP/UDP… UDP?

Loaʻa iā mākou kahi protocol RPC no ka hoʻokō ʻana i nā noi mīkini e holo ana ma luna o ka papahana TL. Hana ʻia kēia ma kahi pilina TCP/UDP. Hiki ke hoʻomaopopo ʻia ka TCP, akā no ke aha mākou e pono ai iā UDP pinepine?

Kōkua ka UDP pale i ka pilikia o ka nui o nā pilina ma waena o nā kikowaena. Inā loaʻa i kēlā me kēia kikowaena kahi koho RPC a, ma ka laulā, hiki iā ia ke hele i kekahi mīkini, a laila aia nā ʻumi kaukani o nā pilina TCP no kēlā me kēia kikowaena. He haawe, he mea ole. I ka hihia o UDP, ʻaʻole i loaʻa kēia pilikia.

ʻAʻohe lulu lima TCP hou. He pilikia maʻamau kēia: ke hoʻomaka ʻia kahi ʻenekini hou a i ʻole kahi kikowaena hou, nui nā pilina TCP i hoʻokumu ʻia i ka manawa hoʻokahi. No nā noi māmā liʻiliʻi, no ka laʻana, UDP uku, nā kamaʻilio āpau ma waena o ke code a me ka mīkini ʻelua ʻeke UDP: lele kekahi ma kekahi aoao, a ma kekahi aoao. Hoʻokahi huakaʻi kaʻapuni - a loaʻa i ke code ka pane mai ka mīkini me ka lulu lima ʻole.

ʻAe, hana wale nā ​​mea a pau me kahi pākēneka liʻiliʻi loa o ka poho ʻeke. Loaʻa i ka protocol ke kākoʻo no ka retransmits a me ka manawa, akā inā e nalowale mākou i ka nui, e loaʻa iā mākou kahi kokoke i ka TCP, ʻaʻole pono. ʻAʻole mākou e hoʻokele i ka UDP ma nā moana.

Loaʻa iā mākou nā kaukani o ia mau kikowaena, a ua like ke kumumanaʻo: hoʻokomo ʻia kahi pūʻulu ʻenekini ma kēlā me kēia kikowaena kino. ʻO ka hapa nui o lākou i hoʻokahi-wili e holo wikiwiki me ka ʻole o ka pale ʻana, a ua hoʻokaʻawale ʻia e like me nā hoʻonā hoʻokahi. I ka manawa like, ʻaʻohe mea i ʻoi aku ka hilinaʻi ma mua o kēia mau mīkini, a nui ka nānā ʻana i ka mālama ʻana i ka ʻikepili hoʻomau.

Mālama ʻikepili mau

Kākau nā mīkini i nā binlogs. ʻO ka binlog kahi faila ma ka hopena o kahi hanana no ka hoʻololi ʻana i ka mokuʻāina a i ʻole ka ʻikepili i hoʻohui ʻia. Ma nā ʻano hoʻonā like ʻole, kapa ʻia ʻo ia he ʻokoʻa: binary log, WALKE, AOF, aka, ua like ka loina.

No ka pale ʻana i ka ʻenekini mai ka heluhelu hou ʻana i ka binlog holoʻokoʻa no nā makahiki he nui i ka wā e hoʻomaka hou ai, kākau nā ʻenekini kiʻi paʻi kiʻi - kūlana o kēia manawa. Inā pono, heluhelu mua lākou mai ia mea, a laila hoʻopau i ka heluhelu ʻana mai ka binlog. Ua kākau ʻia nā binlogs a pau ma ke ʻano binary like - e like me ka TL scheme, i hiki i nā mea hoʻokele ke lawelawe like me kā lākou mau mea hana. ʻAʻohe pono no nā kiʻi paʻi. Aia kekahi poʻomanaʻo maʻamau e hōʻike ana i kāna kiʻi kiʻi int, magic of the engine, a ʻaʻole mea nui ke kino i kekahi. He pilikia kēia me ka ʻenekini nāna i hoʻopaʻa i ke kiʻi.

E wehewehe koke wau i ke kumu o ka hana. Aia kahi kikowaena kahi e holo ai ka ʻenekini. Wehe ʻo ia i kahi binlog kaʻawale hou no ke kākau ʻana a kākau i kahi hanana no ka hoʻololi ʻana iā ia.

FAQ e pili ana i ka hoʻolālā a me ka hana o VKontakte

I kekahi manawa, hoʻoholo ʻo ia e lawe i kahi kiʻi kiʻi iā ia iho, a i ʻole e loaʻa iā ia kahi hōʻailona. Hoʻokumu ke kikowaena i kahi faila hou, kākau i kona mokuʻāina holoʻokoʻa i loko, hoʻopili i ka nui binlog o kēia manawa - offset - i ka hopena o ka faila, a hoʻomau i ke kākau ʻana. ʻAʻole i hana ʻia kahi binlog hou.

FAQ e pili ana i ka hoʻolālā a me ka hana o VKontakte

I kekahi manawa, i ka wā e hoʻomaka hou ai ka ʻenekini, aia kahi binlog a me kahi kiʻi ma ka disk. Heluhelu ke enekini i ke kiʻi holoʻokoʻa a hoʻokiʻekiʻe i kona kūlana ma kekahi wahi.

FAQ e pili ana i ka hoʻolālā a me ka hana o VKontakte

Heluhelu i ke kūlana i ka manawa i hana ʻia ai ke kiʻi a me ka nui o ka binlog.

FAQ e pili ana i ka hoʻolālā a me ka hana o VKontakte

Heluhelu i ka hope o ka binlog e kiʻi i ke kūlana o kēia manawa a hoʻomau i ke kākau ʻana i nā hanana hou aʻe. He hoʻolālā maʻalahi kēia; hana nā ʻenekini āpau e like me ia.

Hoʻopili ʻikepili

ʻO ka hopena, hoʻopiʻi ʻikepili i kā mākou pili i ka ʻōlelo - kākau mākou i loko o ka binlog ʻaʻole i hoʻololi i kekahi ʻaoʻao, akā ʻo ia hoʻi hoʻololi i nā noi. Ua like loa me ka mea i hiki mai ma luna o ka pūnaewele, hoʻololi iki wale ʻia.

Hoʻohana ʻia ka hoʻolālā like ʻaʻole wale no ka replication, akā pū kekahi e hana i nā waihona. He ʻenekini kā mākou - he haku kākau kākau i ka binlog. Ma nā wahi ʻē aʻe kahi i hoʻonohonoho ai nā mea hoʻokele iā ia, ua kope ʻia kēia binlog, a ʻo ia nō - he waihona kā mākou.

FAQ e pili ana i ka hoʻolālā a me ka hana o VKontakte

Inā makemake heluhelu kopeNo ka ho'ēmiʻana i ka ukana heluhelu CPU, hoʻokuʻu waleʻia ka mīkini heluhelu, e heluhelu ana i ka hopena o ka binlog a hoʻokō i kēia mau kauoha ma ka'āina.

He liʻiliʻi loa ka lag ma ʻaneʻi, a hiki ke ʻike i ka nui o ka waiho ʻana o ke kope ma hope o ka haku.

Hoʻokaʻawale ʻikepili ma RPC proxy

Pehea ka hana ʻana o ka sharding? Pehea e hoʻomaopopo ai ka mea koho i ka puʻupuʻu puʻupuʻu e hoʻouna ai? ʻAʻole ʻōlelo ka code: "E hoʻouna no 15 shards!" - ʻaʻole, hana ʻia kēia e ka mea koho.

ʻO ka papa hana maʻalahi ka mua - ka helu mua ma ka noi.

get(photo100_500) => 100 % N.

He laʻana kēia no ka protocol text memcached maʻalahi, akā, ʻoiaʻiʻo, hiki ke paʻakikī a hoʻonohonoho ʻia nā nīnau. Lawe ka laʻana i ka helu mua ma ka nīnau a me ke koena ke puʻunaue ʻia e ka nui puʻupuʻu.

He mea pono kēia inā makemake mākou e loaʻa kahi ʻikepili o kahi hui hoʻokahi. E ʻōlelo kākou he mea hoʻohana a i ʻole pūʻulu ID ʻo 100, a makemake mākou i nā ʻikepili a pau o hoʻokahi hui i hoʻokahi shard no nā nīnau paʻakikī.

Inā ʻaʻole mākou e noʻonoʻo pehea e hoʻolaha ʻia ai nā noi ma ka pūʻulu, aia kahi koho ʻē aʻe - ka hashing ana i ka shard a pau.

hash(photo100_500) => 3539886280 % N

Loaʻa iā mākou ka hash, ke koena o ka mahele a me ka helu shard.

Ke hana wale nei kēia mau koho ʻelua inā mākaukau mākou no ka ʻoiaʻiʻo i ka wā e hoʻonui ai mākou i ka nui o ka puʻupuʻu, e hoʻokaʻawale a hoʻonui paha mākou i nā manawa he nui. No ka laʻana, loaʻa iā mākou he 16 shards, ʻaʻole lawa mākou, makemake mākou i nā mea hou aʻe - hiki iā mākou ke loaʻa i ka 32 me ka ʻole o ka downtime. Inā makemake mākou e hoʻonui i nā mea he nui, aia ka manawa haʻahaʻa, no ka mea ʻaʻole hiki iā mākou ke hoʻokaʻawale pono i nā mea āpau me ka ʻole o nā poho. Pono kēia mau koho, akā ʻaʻole i nā manawa a pau.

Inā pono mākou e hoʻohui a hoʻoneʻe paha i ka helu o nā kikowaena, hoʻohana mākou Hashing mau ma ke apo a la Ketama. Akā i ka manawa like, nalowale mākou i ka wahi o ka ʻikepili; pono mākou e hoʻohui i ka noi i ka hui i hoʻihoʻi kēlā me kēia ʻāpana i kāna pane liʻiliʻi, a laila hoʻohui i nā pane i ka mea koho.

Loaʻa nā noi kikoʻī. Me he mea lā kēia: Loaʻa iā RPC proxy ka noi, hoʻoholo i ka hui e hele ai a hoʻoholo i ka shard. A laila aia nā haku kākau, a i ʻole, inā he kākoʻo kope ka cluster, hoʻouna ʻo ia i kahi kope ma ke koi. Hana ka proxy i kēia mau mea a pau.

FAQ e pili ana i ka hoʻolālā a me ka hana o VKontakte

Nā lāʻau lāʻau

Kākau mākou i nā lāʻau ma nā ʻano he nui. ʻO ka mea maopopo loa a maʻalahi kākau i nā moʻolelo i memcache.

ring-buffer: prefix.idx = line

Aia kahi prefix kī - ka inoa o ka log, kahi laina, a aia ka nui o kēia log - ka helu o nā laina. Lawe mākou i kahi helu maʻamau mai ka 0 a i ka helu o nā laina me ka hoʻemi ʻana i ka 1. ʻO ke kī i ka memcache he prefix i hui pū ʻia me kēia helu maʻamau. Mālama mākou i ka laina log a me ka manawa o kēia manawa i ka waiwai.

I ka wā e pono ai e heluhelu i nā lāʻau, hoʻokō mākou Nui Loaʻa nā kī āpau, hoʻokaʻawale ʻia e ka manawa, a pēlā e loaʻa ai kahi log hana i ka manawa maoli. Hoʻohana ʻia ka hoʻolālā i ka wā e pono ai ʻoe e debug i kahi mea i ka hana ʻana i ka manawa maoli, me ka ʻole o ka haki ʻana i kekahi mea, me ka ʻole o ka hoʻomaha a i ʻole ka ʻae ʻana i ke kaʻa i nā mīkini ʻē aʻe, akā ʻaʻole lōʻihi kēia log.

No ka mālama pono ʻana i nā lāʻau, loaʻa iā mākou kahi ʻenekini log-engine. ʻO ia ke kumu i hana ʻia ai a hoʻohana nui ʻia i ka nui o nā puʻupuʻu. ʻO ka pūʻulu nui loa aʻu i ʻike ai no nā hale kūʻai 600 TB o nā lāʻau paʻa.

He ʻelemakule loa ka ʻenekini, aia nā pūʻulu he 6-7 mau makahiki. Aia nā pilikia me ia a mākou e ho'āʻo nei e hoʻoponopono, no ka laʻana, ua hoʻomaka mākou e hoʻohana ikaika i ka ClickHouse e mālama i nā lāʻau.

ʻOhi ʻana i nā lāʻau ma ClickHouse

Hōʻike kēia kiʻi i ke ʻano o kā mākou hele ʻana i loko o kā mākou mīkini.

FAQ e pili ana i ka hoʻolālā a me ka hana o VKontakte

Aia ke code e hele kūloko ma RPC i ka RPC-proxy, a maopopo ia i kahi e hele ai i ka mīkini. Inā makemake mākou e kākau i nā lāʻau ma ClickHouse, pono mākou e hoʻololi i ʻelua ʻāpana i kēia kumumanaʻo:

  • hoʻololi i kekahi mīkini me ClickHouse;
  • e hoʻololi i ka mea koho RPC, ʻaʻole hiki ke komo i ka ClickHouse, me kahi hopena e hiki ai, a ma o RPC.

He maʻalahi ka ʻenekini - ke hoʻololi nei mākou me kahi kikowaena a i ʻole kahi pūʻulu o nā kikowaena me ClickHouse.

A e hele i ClickHouse, ua hana mākou Hale Kitten. Inā hele pololei mākou mai KittenHouse a ClickHouse, ʻaʻole ia e hoʻokō. ʻOiai me ka ʻole o nā noi, hoʻohui ʻia mai nā pilina HTTP o kahi nui o nā mīkini. No ka hana ʻana o ka papahana, ma kahi kikowaena me ClickHouse hoʻāla ʻia ka mea hoʻololi kūloko kūloko, i kākau ʻia ma ke ʻano e hiki ai iā ia ke kū i ka nui o nā pilina. Hiki iā ia ke pale i ka ʻikepili i loko ona me ka hilinaʻi.

FAQ e pili ana i ka hoʻolālā a me ka hana o VKontakte

I kekahi manawa ʻaʻole makemake mākou e hoʻokō i ka hoʻolālā RPC i nā hoʻonā maʻamau ʻole, no ka laʻana, ma nginx. No laila, hiki iā KittenHouse ke loaʻa nā lāʻau ma o UDP.

FAQ e pili ana i ka hoʻolālā a me ka hana o VKontakte

Inā hana ka mea hoʻouna a me ka mea i loaʻa i nā lāʻau ma ka mīkini hoʻokahi, a laila haʻahaʻa loa ka hiki ke nalowale i kahi ʻeke UDP i loko o ka mea hoʻokipa kūloko. Ma ke ʻano he kuʻikahi ma waena o ka pono e hoʻokō i ka RPC i kahi hopena ʻaoʻao ʻekolu a me ka hilinaʻi, hoʻohana wale mākou i ka hoʻouna UDP. E hoʻi mākou i kēia papahana ma hope.

Ka mālama ʻana

Loaʻa iā mākou nā ʻano lāʻau ʻelua: nā mea i hōʻiliʻili ʻia e nā luna hoʻomalu ma kā lākou mau kikowaena a me nā mea i kākau ʻia e nā mea hoʻomohala mai ke code. Hoʻopili lākou i ʻelua ʻano metric: ʻōnaehana a me ka huahana.

Nā ana ʻōnaehana

Hana ia ma kā mākou mau kikowaena āpau netdata, nāna e hōʻiliʻili i nā helu helu a hoʻouna iā lākou i Kalapona Graphite. No laila, hoʻohana ʻia ʻo ClickHouse e like me kahi ʻōnaehana mālama, ʻaʻole ʻo Whisper, no ka laʻana. Inā pono, hiki iā ʻoe ke heluhelu pololei mai ClickHouse, a hoʻohana paha grafana no nā ana, nā pakuhi a me nā hōʻike. Ma ke ʻano he mea hoʻomohala, loaʻa iā mākou ke komo i Netdata a me Grafana.

Nā ana huahana

No ka maʻalahi, ua kākau mākou i nā mea he nui. No ka laʻana, aia kahi hoʻonohonoho o nā hana maʻamau e hiki ai iā ʻoe ke kākau i nā helu helu, nā helu UniqueCounts i nā helu helu, i hoʻouna ʻia ma kahi ʻē aʻe.

statlogsCountEvent   ( ‘stat_name’,            $key1, $key2, …)
statlogsUniqueCount ( ‘stat_name’, $uid,    $key1, $key2, …)
statlogsValuetEvent  ( ‘stat_name’, $value, $key1, $key2, …)

$stats = statlogsStatData($params)

Ma hope mai, hiki iā mākou ke hoʻohana i nā kānana a me ka hui pū ʻana a hana i nā mea āpau a mākou e makemake ai mai nā helu helu - kūkulu i nā kiʻi, hoʻonohonoho i nā Watchdogs.

Kākau nui mākou nui nā ana ʻO ka nui o nā hanana mai 600 billion a 1 trillion i kēlā me kēia lā. Eia naʻe, makemake mākou e mālama iā lākou ma kahi o ʻelua makahikie hoʻomaopopo i nā ʻano ma nā ana. ʻO ka hui pū ʻana he pilikia nui ʻaʻole mākou i hoʻoholo i kēia manawa. E haʻi aku wau iā ʻoe pehea ka hana ʻana i nā makahiki i hala.

Loaʻa iā mākou nā hana e kākau i kēia mau ana i ka memcache kūlokoe hoemi i ka helu o na mea komo. Hoʻokahi manawa i hoʻokuʻu ʻia ma ka ʻāina stats-daemon hōʻiliʻili i nā moʻolelo a pau. A laila, hoʻohui ka daimonio i nā metric i ʻelua papa o nā kikowaena nā mea ʻohi lāʻau, ka mea e hōʻuluʻulu ai i nā ʻikepili mai kahi hui o kā mākou mau mīkini i ʻole e make ka papa ma hope o lākou.

FAQ e pili ana i ka hoʻolālā a me ka hana o VKontakte

Inā pono, hiki iā mākou ke kākau pololei i nā mea hōʻiliʻili lāʻau.

FAQ e pili ana i ka hoʻolālā a me ka hana o VKontakte

Akā ʻo ke kākau pololei ʻana mai ke code i nā ʻohi ʻohi, ke kāʻalo ʻana i stas-daemom, he hopena maikaʻi ʻole ka scalable no ka mea e hoʻonui ai i ka ukana ma ka ʻohi. He kūpono wale ka hopena inā no kekahi kumu ʻaʻole hiki iā mākou ke hoʻāla i ka memcache stats-daemon ma ka mīkini, a i ʻole ua hāʻule a hele pololei mākou.

Ma hope aʻe, hoʻohui nā mea ʻohi lāʻau i nā ʻikepili i loko meowDB - ʻo kēia kā mākou waihona, hiki ke mālama i nā metric.

FAQ e pili ana i ka hoʻolālā a me ka hana o VKontakte

A laila hiki iā mākou ke hana i nā koho binary "kokoke-SQL" mai ke code.

FAQ e pili ana i ka hoʻolālā a me ka hana o VKontakte

Hoʻāʻike

I ke kauwela o 2018, ua loaʻa iā mākou kahi hackathon i loko, a ua hele mai ka manaʻo e hoʻāʻo e pani i ka ʻāpana ʻulaʻula o ke kiʻi me kahi mea hiki ke mālama i nā metric ma ClickHouse. Loaʻa iā mākou nā lāʻau ma ClickHouse - no ke aha e hoʻāʻo ʻole ai?

FAQ e pili ana i ka hoʻolālā a me ka hana o VKontakte

Loaʻa iā mākou kahi papahana i kākau i nā lāʻau ma o KittenHouse.

FAQ e pili ana i ka hoʻolālā a me ka hana o VKontakte

Ua hoʻoholo mākou e hoʻohui i kekahi "* Hale" i ke kiʻikuhi, e loaʻa pololei i nā ana ma ke ʻano e like me kā mākou code e kākau iā lākou ma o UDP. A laila, hoʻololi kēia Hale i nā mea hoʻokomo, e like me nā lāʻau, a KittenHouse i hoʻomaopopo. Hiki iā ia ke hāʻawi maikaʻi i kēia mau lāʻau iā ClickHouse, pono e heluhelu iā lākou.

FAQ e pili ana i ka hoʻolālā a me ka hana o VKontakte

Ua hoʻololi ʻia ka papahana me ka memcache, stats-daemon a me ka waihona waihona logs-collectors me kēia.

FAQ e pili ana i ka hoʻolālā a me ka hana o VKontakte

Ua hoʻololi ʻia ka papahana me ka memcache, stats-daemon a me ka waihona waihona logs-collectors me kēia.

  • Aia kahi hoʻouna mai ke code ma aneʻi, i kākau ʻia ma StatsHouse.
  • Kākau ʻo StatsHouse i nā metric UDP, ua hoʻololi ʻia i loko o SQL inserts, iā KittenHouse i nā pūʻulu.
  • Hoʻouna ʻo KittenHouse iā lākou i ClickHouse.
  • Inā makemake mākou e heluhelu iā lākou, a laila heluhelu mākou iā lākou ma ke ala ʻana i StatsHouse - pololei mai ClickHouse me ka hoʻohana ʻana i ka SQL maʻamau.

Mau anei kahi hoʻokolohua, akā makemake mākou i ka hopena. Inā hoʻoponopono mākou i nā pilikia me ka papahana, a laila e hoʻololi mākou iā ia. ʻO wau iho, manaʻolana wau.

ʻO ke kumuhana ʻaʻole mālama i ka hao. Pono nā kikowaena liʻiliʻi, ʻaʻole pono nā stats-daemons a me nā logs-collectors, akā makemake ʻo ClickHouse i kahi kikowaena ʻoi aku ka nui ma mua o nā mea i kēia manawa. Pono nā kikowaena liʻiliʻi, akā pono lākou e ʻoi aku ka pipiʻi a ʻoi aku ka ikaika.

Hoʻopili

ʻO ka mea mua, e nānā kākou i ka hoʻolālā PHP. Ke ulu nei mākou ma hele: hoohana GitLab и KauHalia no ka hoʻolaha ʻana. Hoʻohui ʻia nā lālā hoʻomohala i ka lālā kumu, mai ka haku no ka hoʻāʻo ʻana ua hoʻohui ʻia lākou i ka staging, a mai ka staging i ka hana.

Ma mua o ka hoʻolaha ʻana, lawe ʻia ka lālā hana o kēia manawa a me ka mea ma mua, a manaʻo ʻia nā faila ʻokoʻa i loko o lākou - nā loli: hana ʻia, holoi ʻia, hoʻololi. Hoʻopaʻa ʻia kēia hoʻololi i loko o ka binlog o kahi ʻenekini copyfast kūikawā, hiki ke hoʻololi koke i nā loli i kā mākou ʻauwaʻa kikowaena holoʻokoʻa. ʻAʻole kope pololei ka mea i hoʻohana ʻia ma ʻaneʻi, akā hoʻopio ʻōlelo, ke hoʻouna aku kekahi kikowaena i nā hoʻololi i kona mau hoalauna kokoke, nā mea i ko lākou mau hoalauna, a pēlā aku. ʻAe kēia iā ʻoe e hoʻohou i ke code i nā ʻumi a me nā kekona kekona ma nā ʻauwaʻa holoʻokoʻa. Ke hiki ka hoʻololi i ka replica kūloko, pili ia i kēia mau pā i kona ʻōnaehana waihona kūloko. Hoʻokō ʻia ka Rollback e like me ka hoʻolālā like.

Hoʻolaha nui mākou i ka kPHP a loaʻa iā ia kona hoʻomohala ponoʻī ma hele e like me ke kii maluna. Mai keia Binary kikowaena HTTP, a laila ʻaʻole hiki iā mākou ke hana ʻokoʻa - ʻo ke kaumaha o ka binary hoʻokuʻu he mau haneli MB. No laila, aia kahi koho ʻē aʻe ma aneʻi - ua kākau ʻia ka mana binlog kope wikiwiki. Me kēlā me kēia kūkulu e hoʻonui ia, a i ka wā rollback e piʻi pū ana. Manao hoʻopili hou ʻia i nā kikowaena. ʻIke nā copyfasts kūloko ua komo kahi mana hou i loko o ka binlog, a ma ka hoʻopiʻi ʻana like ʻole e lawe lākou i ka mana hou loa o ka binary no lākou iho, me ka luhi ʻole i kā mākou haku kikowaena, akā hoʻolaha pono i ka ukana ma ka pūnaewele. He aha ka hope hoʻokuʻu hou ʻia no ka mana hou.

No kā mākou mau ʻenekini, ʻo ia hoʻi nā binaries maoli, ua like loa ke ʻano:

  • lālā kumu git;
  • binary ma .deb;
  • ua kākau ʻia ka mana i binlog copyfast;
  • hoʻopili hou ʻia i nā kikowaena;
  • huki ke kikowaena i kahi .dep hou;
  • dpkg -i;
  • hoʻomaka hou i ka mana hou.

ʻO ka ʻokoʻa, ʻo kā mākou binary i hoʻopaʻa ʻia i loko o nā waihona .deb, a i ka pauku ana mai dpkg -i kau ʻia ma ka ʻōnaehana. No ke aha i hoʻoili ʻia ai ka kPHP ma ke ʻano he binary, a ua kau ʻia nā ʻenekini e like me dpkg? Pela no. Hana ia - mai hoopa aku.

Hoʻohui pono:

ʻO Alexey Akulovich kekahi o ka poʻe, ma ke ʻano he ʻāpana o ke Kōmike Polokalamu, kōkua PHP Rusia ma Mei 17th e lilo i ka hanana nui loa no nā mea hoʻomohala PHP i kēia mau manawa. E nānā i kahi PC maikaʻi iā mākou, he aha nā mea haʻiʻōlelo (ʻelua o lākou e hoʻomohala ana i ka PHP core!) - me he mea lā ʻaʻole hiki iā ʻoe ke nalo ke kākau ʻoe i ka PHP.

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka