Ebe kacha mma Cyan

Ebe kacha mma Cyan

Ọ dị mma! 

Aha m bụ Nikita, abụ m onye ndu otu ndị otu injinia Cian. Otu n'ime ọrụ m na ụlọ ọrụ bụ ibelata ọnụ ọgụgụ nke ihe omume metụtara akụrụngwa na mmepụta na efu.
Ihe a ga-atụle n'okpuru ebe a wetara anyị ọtụtụ ihe mgbu, na nzube nke isiokwu a bụ igbochi ndị ọzọ imeghachi ihe anyị mejọrọ ma ọ bụ ma ọ dịghị ihe ọzọ ibelata mmetụta ha. 

Okwu agba

Ogologo oge gara aga, mgbe Cian nwere monoliths, na enweghị ihe ngosi nke microservices, anyị tụlere nnweta akụrụngwa site na ịlele ibe 3-5. 

Ha na-aza - ihe niile dị mma, ma ọ bụrụ na ha azaghị ruo ogologo oge - njikere. Ndị mmadụ na-ekpebi oge ole ha ga-anọ n'ebe ọrụ ka e were ya dị ka ihe merenụ bụ ndị mmadụ na-ekpebi n'ọmụmụ ihe. Otu ndị injinia na-etinye aka mgbe niile na nyocha nke ihe ahụ merenụ. Mgbe nyocha ahụ mechara, ha dere postmortem - ụdị akụkọ sitere na email na usoro: ihe merenụ, ogologo oge ọ dịruru, ihe anyị mere n'oge ahụ, ihe anyị ga-eme n'ọdịnihu. 

Isi peeji nke saịtị ma ọ bụ otú anyị si aghọta na anyị kụrụ na ala

 
Iji ghọta n'ụzọ ụfọdụ mkpa nke njehie ahụ, anyị achọpụtala ibe saịtị kachasị mkpa maka ịrụ ọrụ azụmahịa. Iji ha, anyị na-agụta ọnụ ọgụgụ nke arịrịọ na-aga nke ọma/enweghị ihe ịga nke ọma na oge nkwụsị. Nke a bụ otú anyị si atụ oge. 

Ka anyị kwuo na anyị chọpụtara na e nwere ọtụtụ akụkụ dị oke mkpa nke saịtị ahụ bụ ndị na-ahụ maka isi ọrụ - ịchọ na ịnyefe mgbasa ozi. Ọ bụrụ na ọnụ ọgụgụ nke arịrịọ na-ada karịa 1%, nke a bụ ihe omume dị oke egwu. Ọ bụrụ na n'ime nkeji iri na ise n'oge oge mbụ, ọnụego njehie gafere 15%, mgbe ahụ, a na-ewerekwa nke a dị ka ihe omume dị oke egwu. Usoro ndị a na-ekpuchi ọtụtụ n'ime ihe omume ahụ; ndị ọzọ agafeghị oke nke edemede a.

Ebe kacha mma Cyan

Ihe kacha mma Cian

Yabụ, anyị amụtala n'ezie ịchọpụta eziokwu ahụ bụ na ihe merenụ mere. 

Ugbu a, a kọwapụtara ihe omume ọ bụla n'ụzọ zuru ezu ma gosipụta ya na akụkọ Jira. Site n'ụzọ: maka nke a, anyị malitere ọrụ dị iche iche, nke a na-akpọ ya FAIL - naanị epics nwere ike ịmepụta na ya. 

Ọ bụrụ na ị chịkọta ọdịda niile n'ime afọ ole na ole gara aga, ndị isi bụ: 

  • mssql metụtara ihe omume;
  • ihe omume mere site na mpụga ihe;
  • Admin njehie.

Ka anyị leba anya n'ụzọ zuru ezu na mmejọ nke ndị nchịkwa, yana ụfọdụ ọdịda ndị ọzọ na-adọrọ mmasị.

Ebe nke ise - "Idobe ihe n'usoro na DNS"

Ọ bụ Tuzdee na-efe efe. Anyị kpebiri iweghachi usoro na ụyọkọ DNS. 

Achọrọ m ịnyefe sava DNS dị n'ime site na njikọ na powerdns, na-ekenye sava dị iche iche maka nke a, ebe ọ nweghị ihe ọ bụla ma e wezụga DNS. 

Anyị debere otu ihe nkesa DNS na ebe ọ bụla nke DC anyị, oge bịara ịkwaga mpaghara site na njikọ gaa na powerdns wee gbanwee akụrụngwa gaa na sava ọhụrụ. 

N'etiti mmegharị ahụ, n'ime sava niile nke akọwapụtara na caching mpaghara na-ejikọta na sava niile, naanị otu fọdụrụ, nke dị na ebe data dị na St. Petersburg. A mara ọkwa DC a na mbụ dị ka ndị na-adịghị mkpa maka anyị, ma na mberede ghọrọ otu ebe ọdịda.
Ọ bụ n'oge ịkwaga ebe a ka ọwa mmiri dị n'etiti Moscow na St. Petersburg dara. A hapụrụ anyị na-enweghị DNS maka nkeji ise wee bilie mgbe onye ọbịa ahụ doziri nsogbu ahụ. 

Mkpebi:

Ọ bụrụ na mbụ anyị leghaara ihe ndị dị n'èzí anya n'oge nkwadebe maka ọrụ, ugbu a, a na-etinyekwa ha na ndepụta nke ihe anyị na-akwadebe maka ya. Ma ugbu a, anyị na-agba mbọ hụ na edobere ihe niile n-2, na n'oge ọrụ anyị nwere ike belata ọkwa a na n-1.

  • Mgbe ị na-emepụta atụmatụ ime ihe, kaa akara n'isi ebe ọrụ ahụ nwere ike ịda, ma chee echiche site na ọnọdụ ebe ihe niile gara "site na njọ gaa n'ihu" tupu oge eruo.
  • Kesaa sava DNS dị n'ime n'ofe ala dị iche iche/ebe data/racks/switch/ntinye.
  • Na nkesa ọ bụla, wụnye sava DNS caching mpaghara, nke na-atụgharị arịrịọ na sava DNS bụ isi, ma ọ bụrụ na ọ dịghị, ọ ga-aza site na cache. 

Ebe nke anọ - "Na-ehicha ihe na Nginx"

Otu ụbọchị mara mma, ndị otu anyị kpebiri na "anyị ezuola nke a," na usoro nhazi nginx configs malitere. Ebumnuche bụ isi bụ iweta configs na usoro nwere nghọta. Na mbụ, ihe niile bụ "akụkọ ihe mere eme guzosie ike" na ọ dịghị ebu ezi uche. Ugbu a, aha nkesa_aha ọ bụla ebugharịla na faịlụ nke otu aha ma kesaa nhazi niile n'ime nchekwa. Site n'ụzọ, nhazi ahụ nwere ahịrị 253949 ma ọ bụ mkpụrụedemede 7836520 wee buru ihe fọrọ nke nta ka ọ bụrụ 7 megabyte. Ọkwa kachasị elu nke nhazi: 

Nginx Ọdịdị

├── access
│   ├── allow.list
...
│   └── whitelist.conf
├── geobase
│   ├── exclude.conf
...
│   └── geo_ip_to_region_id.conf
├── geodb
│   ├── GeoIP.dat
│   ├── GeoIP2-Country.mmdb
│   └── GeoLiteCity.dat
├── inc
│   ├── error.inc
...
│   └── proxy.inc
├── lists.d
│   ├── bot.conf
...
│   ├── dynamic
│   └── geo.conf
├── lua
│   ├── cookie.lua
│   ├── log
│   │   └── log.lua
│   ├── logics
│   │   ├── include.lua
│   │   ├── ...
│   │   └── utils.lua
│   └── prom
│       ├── stats.lua
│       └── stats_prometheus.lua
├── map.d
│   ├── access.conf
│   ├── .. 
│   └── zones.conf
├── nginx.conf
├── robots.txt
├── server.d
│   ├── cian.ru
│   │   ├── cian.ru.conf
│   │   ├── ...
│   │   └── my.cian.ru.conf
├── service.d
│   ├── ...
│   └── status.conf
└── upstream.d
    ├── cian-mcs.conf
    ├── ...
    └── wafserver.conf

Ọ bịara dịkwuo mma, ma na usoro nke renaming na nkesa configs, ụfọdụ n'ime ha nwere ihe ndọtị na-ezighị ezi na etinyeghị na gụnyere * .conf ntụziaka. N'ihi ya, ụfọdụ ndị ọbịa enweghịzi ike ma weghachi 301 na ibe isi. N'ihi n'eziokwu na koodu nzaghachi abụghị 5xx / 4xx, a chọpụtaghị nke a ozugbo, ma ọ bụ naanị n'ụtụtụ. Mgbe nke ahụ gasịrị, anyị malitere ide ule iji lelee akụrụngwa akụrụngwa.

Mkpebi: 

  • Hazie nhazi gị nke ọma (ọ bụghị naanị nginx) wee chee echiche site na nhazi ahụ na mmalite nke ọrụ ahụ. N'ụzọ dị otú a, ị ga-eme ka ha ghọtakwuo ndị otu, nke n'aka nke ya ga-ebelata TTM.
  • Dee ule maka ụfọdụ akụrụngwa akụrụngwa. Dịka ọmụmaatụ: ịlele na aha sava niile na-enye ọkwa ziri ezi + ahụ nzaghachi. Ọ ga-ezuru naanị ịnwe edemede ole na ole n'aka nke na-elele ọrụ ndị bụ isi nke akụrụngwa ahụ, ka ị ghara icheta n'ike n'ike n'elekere atọ nke ụtụtụ ihe ọzọ kwesịrị ịlele. 

Ebe nke atọ - "Oghere gwụchara na Cassandra na mberede"

Ihe omuma a na-eto nke oma, ihe nile di nma rue oge mgbe nrụzi nke nnukwu casespaces malitere ịdaba na ụyọkọ Cassandra, n'ihi na compaction enweghị ike ịrụ ọrụ na ha. 

Otu ụbọchị oke mmiri ozuzo, ụyọkọ ahụ fọrọ nke nta ka ọ ghọọ ugu, ya bụ:

  • e nwere ihe dị ka 20% nke ngụkọta ohere fọdụrụ na ụyọkọ;
  • Ọ gaghị ekwe omume ịgbakwunye ọnụ n'ụzọ zuru ezu, n'ihi na nhichapụ adịghị agafe mgbe ọ gbakwụnyere ọnụ n'ihi enweghị ohere na nkebi;
  • arụpụtaghị ihe nke nta nke nta na-adaba n'ihi na nchịkọta anaghị arụ ọrụ; 
  • Ụyọkọ ahụ nọ na ọnọdụ mberede.

Ebe kacha mma Cyan

Wepụ - anyị gbakwunyere ọnụ ụzọ 5 ọzọ na-enweghị nhichapụ, mgbe nke ahụ gasịrị, anyị malitere ịwepụ ha n'usoro n'usoro na ụyọkọ ma banyeghachi ha, dị ka oghere efu nke na-agwụchabeghị. A nọrọ ọtụtụ oge karịa ka anyị ga-achọ. Enwere ihe ize ndụ nke enweghị akụkụ ma ọ bụ zuru ezu nke ụyọkọ ahụ. 

Mkpebi:

  • Na sava cassandra niile, ọ bụghị ihe karịrị 60% nke ohere dị na nkebi ọ bụla kwesịrị ịnwe. 
  • Ekwesịrị ịkwanye ha na ihe karịrị 50% cpu.
  • I kwesịghị ichefu banyere atụmatụ ikike na ọ dị mkpa ka ị chee ya maka akụkụ nke ọ bụla, dabere na nkọwa ya.
  • Ka ọnụ ọgụgụ dị na ụyọkọ ahụ, ọ ka mma. A na-ebufe sava nke nwere ntakịrị data ngwa ngwa, na ụyọkọ dị otú ahụ dị mfe ịtụteghachi. 

Ebe nke abụọ - "Data kwụsịrị na nchekwa uru igodo consul"

Maka nchọpụta ọrụ, anyị, dị ka ọtụtụ, na-eji consul. Mana anyị na-ejikwa isi-uru ya maka okirikiri nhọrọ ukwuu-acha anụnụ anụnụ nke monolith. Ọ na-echekwa ozi gbasara elu mmiri na-arụ ọrụ na nke anaghị arụ ọrụ, nke na-agbanwe ebe n'oge ebuga ya. Maka ebumnuche a, e dere ọrụ mbugharị nke ya na KV na-emekọrịta ihe. N'oge ụfọdụ, data sitere na KV kwụsịrị. Eweghachitere na ebe nchekwa, mana enwere ọtụtụ mperi. N'ihi ya, n'oge a na-ebugo, a na-ekesa ibu dị n'elu mmiri na-adịghị mma, anyị nwetara ọtụtụ njehie 502 n'ihi na a na-ebufe azụ azụ na CPU. N'ihi ya, anyị si na consul KV kwaga postgres, ebe ọ na-adịkwaghị mfe iwepụ ha.  

Mkpebi:

  • Ọrụ na-enweghị ikike ọ bụla ekwesịghị inwe data dị oke mkpa maka ọrụ saịtị ahụ. Dịka ọmụmaatụ, ọ bụrụ na ịnweghị ikike na ES, ọ ga-aka mma ịjụ ịnweta na netwọk netwọk site n'ebe ọ bụla ebe ọ na-adịghị mkpa, hapụ naanị ndị dị mkpa, ma tọọkwa action.destructive_requires_name: eziokwu.
  • Mee usoro ndabere gị na mgbake tupu oge eruo. Dịka ọmụmaatụ, mee script tupu oge eruo (dịka ọmụmaatụ, na Python) nke nwere ike ịkwado na weghachite.

Ebe mbụ - "Captain Aghọtaghị Ihe" 

N'oge ụfọdụ, anyị hụrụ oke nkesa na-enweghị isi na nginx upstreams n'ọnọdụ ebe enwere sava 10+ na azụ azụ. N'ihi na gburugburu-robin zitere arịrịọ site na 1st ruo na nke ikpeazụ n'usoro, na nke ọ bụla nginx reload malitere ọzọ, mbụ upstreams na-enwetakarị arịrịọ karịa ndị ọzọ. N'ihi ya, ha na-arụ ọrụ nwayọọ nwayọọ na saịtị ahụ dum na-ata ahụhụ. Nke a bịara pụta ìhè ka ọnụọgụ okporo ụzọ na-abawanye. Naanị imelite nginx iji mee ka random arụghị ọrụ - anyị kwesịrị ịmegharị ụyọkọ koodu lua nke na-ewepụghị na ụdị 1.15 (n'oge ahụ). Anyị kwesịrị ịmachi nginx 1.14.2 anyị, na-ewebata nkwado enweghị usoro n'ime ya. Nke a doziri nsogbu ahụ. Ihe ahụhụ a na-emeri udi "Captain Non-Ovviousness".

Mkpebi:

Ọ bụ ihe na-adọrọ mmasị ma na-akpali akpali inyocha ahụhụ a). 

  • Hazie nlekota gị ka ọ nyere gị aka ịchọta mgbanwe dị otú ahụ ngwa ngwa. Dịka ọmụmaatụ, ịnwere ike iji ELK nyochaa rps na azụ azụ ọ bụla nke elu elu, nyochaa oge nzaghachi ha site n'echiche nke nginx. N'okwu a, nke a nyeere anyị aka ịchọpụta nsogbu ahụ. 

N'ihi ya, a gaara ezere ọtụtụ n'ime ọdịda ndị ahụ site n'iji nlezianya mee ihe ị na-eme. Anyị ga-echetarịrị iwu Murphy mgbe niile: Ihe ọ bụla nwere ike ịgahie ụzọ ga-aga nke ọma, ma wuo components dabere na ya. 

isi: www.habr.com

Tinye a comment