Otu esi abawanye site na 1 ruo 100 ndị ọrụ

Ọtụtụ ndị mmalite agabigala nke a: igwe mmadụ nke ndị ọrụ ọhụrụ na-edebanye aha kwa ụbọchị, ndị otu mmepe na-agbasi mbọ ike ka ọrụ ahụ na-aga n'ihu.

Ọ bụ nsogbu dị mma ịnwe, mana enwere ntakịrị ozi doro anya na webụ gbasara otu esi eji nlezianya tụọ ngwa weebụ site na ihe ọ bụla ruo ọtụtụ narị puku ndị ọrụ. Ọtụtụ mgbe, a na-enwe ma ọ bụ ihe ngwọta ọkụ ma ọ bụ ngwọta bottleneck (na mgbe ha abụọ). Ya mere, ndị mmadụ na-eji usoro cliched karịa iji tụọ ọrụ onye na-amu amu n'ime ihe dị oke njọ.

Ka anyị gbalịa nyochaa ozi ahụ wee detuo usoro nhazi. Anyị ga-ebuli saịtị ọhụrụ nkesa foto anyị nke Graminsta site na nzọụkwụ site na ndị ọrụ 1 ruo 100.

Ka anyị dee ihe ndị a kapịrị ọnụ e kwesịrị ime mgbe ndị na-ege ntị ruru mmadụ 10, 100, 1000, 10 na 000.

1 onye ọrụ: 1 igwe

Ihe fọrọ nke nta ka ọ bụrụ ngwa ọ bụla, ma ọ bụ webụsaịtị ma ọ bụ ngwa mkpanaka, nwere isi ihe atọ:

  • API
  • nchekwa data
  • onye ahịa (ngwa mkpanaka n'onwe ya ma ọ bụ weebụsaịtị)

Ebe nchekwa data na-echekwa data na-adịgide adịgide. API na-enye arịrịọ na gburugburu data a. Onye ahịa na-ebufe data na onye ọrụ.

Abịara m na nkwubi okwu na ọ dị mfe ikwu maka ịmegharị ngwa ma ọ bụrụ na, site n'echiche nke ụkpụrụ ụlọ, ndị ahịa na ndị API kewapụrụ kpamkpam.

Mgbe mbụ anyị malitere iwu ngwa, ihe atọ niile nwere ike ịme n'otu ihe nkesa. N'ụzọ ụfọdụ, nke a yiri gburugburu mmepe anyị: otu injinia na-eji nchekwa data, API, na onye ahịa n'otu igwe.

Na tiori, anyị nwere ike ibunye ya na igwe ojii na otu DigitalOcean Droplet ma ọ bụ AWS EC2 atụ, dị ka egosiri n'okpuru:
Otu esi abawanye site na 1 ruo 100 ndị ọrụ
Na nke ahụ kwuru, ọ bụrụ na a ga-enwe ihe karịrị otu onye ọrụ na saịtị, ọ fọrọ nke nta ka ọ bụrụ ihe ezi uche dị na ya ịrara oyi akwa nchekwa data.

Ndị ọrụ 10: ibuga nchekwa data na ọkwa dị iche

Kewaa nchekwa data n'ime ọrụ ejiri chịkwaa dị ka Amazon RDS ma ọ bụ ọdụ data njikwa oke osimiri dijitalụ ga-abara anyị uru ruo ogologo oge. Ọ dị ntakịrị ọnụ karịa nnabata onwe ya na otu igwe ma ọ bụ ihe atụ EC2, mana site na ọrụ ndị a, ị ga-enweta ọtụtụ ndọtị bara uru site na igbe nke ga-aba uru n'ọdịniihu: nkwado ndabere nke mpaghara ọtụtụ, gụọ mbipụta, akpaka. ndabere, na ndị ọzọ.

Nke a bụ ihe sistemụ dị ugbu a:
Otu esi abawanye site na 1 ruo 100 ndị ọrụ

Ndị ọrụ 100: ịkwaga onye ahịa gaa n'ọkwa dị iche

Ọ dabara nke ọma, ndị ọrụ mbụ anyị nwere mmasị na ngwa anyị n'ezie. Okporo ụzọ na-esiwanye ike, yabụ oge erugo ịkwaga onye ahịa gaa n'ọkwa dị iche. Okwesiri iburu n'uche na nkewa ụlọ ọrụ bụ akụkụ dị mkpa nke iwulite ngwa nwere ike itolite. Dị ka otu akụkụ nke usoro ahụ na-enwetakwu okporo ụzọ, anyị nwere ike kewaa ya iji chịkwaa otú ọnụ ọgụgụ ọrụ si dabere na usoro okporo ụzọ.

Nke a bụ ya mere m ji chọọ iche na onye ahịa ahụ dị iche na API. Nke a na-eme ka ọ dị mfe iche echiche banyere mmepe maka otutu nyiwe: web, mobile web, iOS, Android, desktọọpụ ngwa, ndị ọzọ ọrụ, wdg Ha niile bụ naanị ndị ahịa na-eji otu API.

Dịka ọmụmaatụ, ugbu a ndị ọrụ anyị na-ajụkarị ka ha wepụta ngwa mkpanaka. Ọ bụrụ na ị kewaa onye ahịa na ụlọ ọrụ API, nke a ga-adị mfe.

Nke a bụ usoro dị ka nke a:

Otu esi abawanye site na 1 ruo 100 ndị ọrụ

Ndị ọrụ 1000: tinye ihe nha nha

Ihe na-ele anya. Ndị ọrụ Graminsta na-ebugote ọtụtụ foto. Ọnụọgụ ndebanye aha na-etokwa. Ihe nkesa API naanị anyị na-esiri ike idobe okporo ụzọ niile. Chọrọ ígwè ọzọ!

Load balancer bụ echiche dị ike nke ukwuu. Echiche bụ isi bụ na anyị na-etinye ihe nkwụnye ibu n'ihu API, ọ na-ekesa okporo ụzọ gaa na oge ọrụ onye ọ bụla. Nke a bụ ka anyị si atụba n'usoro, nke pụtara na anyị na-agbakwunye ọtụtụ sava nwere otu koodu ahụ, na-abawanye ọnụ ọgụgụ nke arịrịọ anyị nwere ike hazie.

Anyị ga-edobe ndị na-edozi ibu dị iche iche n'ihu onye ahịa weebụ yana n'ihu API. Nke a pụtara na ị nwere ike ịgba ọsọ ọtụtụ oge na-agba ọsọ koodu API na koodu ndị ahịa weebụ. Onye na-edozi ibu ga-eduzi arịrịọ na ihe nkesa na-ebuchaghị ibu.

N'ebe a, anyị na-enweta uru ọzọ dị mkpa - redundancy. Mgbe otu ihe atụ daa (ikekwe bujuru ma ọ bụ daa), a na-ahapụ anyị na ndị ọzọ na-aga n'ihu na-aza arịrịọ mbata. Ọ bụrụ na enwere naanị otu ihe atụ na-arụ ọrụ, mgbe ahụ ọ bụrụ na ọdịda, sistemụ niile ga-ada.

Ihe na-edozi ibu na-enyekwa scaling akpaka. Anyị nwere ike hazie ya ka ọ mụbaa ọnụọgụ ikpe tupu oke ibu, wee belata ya mgbe ndị ọrụ niile na-ehi ụra.

Site na ihe nrụzi ibu, ọkwa API nwere ike ịgbatị ihe fọrọ nke nta ka ọ bụrụ ruo mgbe ebighị ebi, na-agbakwunye naanị ihe ọhụrụ ka ọnụọgụ arịrịọ na-abawanye.

Otu esi abawanye site na 1 ruo 100 ndị ọrụ

Rịba ama. Ugbu a usoro anyị yiri nke ụlọ ọrụ PaaS dị ka Heroku ma ọ bụ Elastic Beanstalk na AWS na-enye site na igbe (nke mere na ha ji ewu ewu). Heroku na-edobe nchekwa data na onye ọbịa dị iche, na-ejikwa ihe na-eme ka ihe na-eme ka ihe na-eme ihe na-akpachapụ anya, ma na-enye gị ohere ịkwado onye ahịa weebụ iche na API. Nke a bụ nnukwu ihe kpatara eji Heroku maka ọrụ mmalite ma ọ bụ mmalite - ị ga-enweta ọrụ niile bụ isi na igbe ahụ.

Ndị ọrụ 10: CDN

Ikekwe anyị gaara eme nke a site na mmalite. Ịhazi arịrịọ na ịnakwere foto ọhụrụ na-amalite itinye nnukwu nsogbu na sava anyị.

N'oge a, ịkwesịrị iji ọrụ igwe ojii maka ịchekwa ọdịnaya kwụ ọtọ - onyonyo, vidiyo na ọtụtụ ndị ọzọ (AWS S3 ma ọ bụ Oghere Oke Osimiri Dijitalụ). N'ozuzu, API anyị kwesịrị izere ijikwa ihe dị ka inye foto na ibugo ihe oyiyi na ihe nkesa.

Uru ọzọ nke nnabata igwe ojii bụ CDN (AWS na-akpọ mgbakwunye a na Cloudfront, mana ọtụtụ ndị na-enye nchekwa igwe ojii na-enye ya n'ime igbe). CDN na-echekwa onyonyo anyị na-akpaghị aka na ebe data dị iche iche gburugburu ụwa.

Ọ bụ ezie na isi data data anyị nwere ike dị na Ohio, ọ bụrụ na mmadụ arịọ onyonyo si Japan, onye na-eweta igwe ojii ga-eme otu ma chekwaa ya na ebe data Japanese ha. Onye na-esote nke rịọrọ onyonyo a na Japan ga-enweta ya ngwa ngwa. Nke a dị mkpa mgbe anyị na-arụ ọrụ na nnukwu faịlụ, dị ka foto ma ọ bụ vidiyo, na-ewe ogologo oge ibudata na bufee gafee ụwa.

Otu esi abawanye site na 1 ruo 100 ndị ọrụ

Ndị ọrụ 100: na-enyocha oyi akwa data

CDN enyerela aka nke ukwuu: okporo ụzọ na-eto eto na ọsọ ọsọ. Onye na-ede blọgụ vidiyo a ma ama Mavid Mobrick ka debanyere anyị aha wee bipute “akụkọ” ya, dịka ha na-ekwu. Ekele maka onye na-ebu ibu, CPU na ojiji ebe nchekwa na sava API na-adị ala (ọnọdụ API iri na-agba ọsọ), mana anyị na-amalite inweta ọtụtụ oge na arịrịọ... ebee ka igbu oge ndị a na-abịa?

Na-egwupụta ntakịrị n'ime metrics, anyị na-ahụ na CPU na nchekwa data bụ 80-90% kwajuru. Anyị nọ na njedebe.

Ịtụle oyi akwa data bụ eleghị anya akụkụ kacha sie ike na nha nhata. Sava API na-enye arịrịọ na-enweghị steeti, yabụ anyị na-agbakwunye API ndị ọzọ. Imi ọtụtụ ọdụ data enweghị ike ime nke a. Anyị ga-ekwu maka sistemụ njikwa nchekwa data ama ama (PostgreSQL, MySQL, wdg).

Na-echekwa

Otu n'ime ụzọ kachasị mfe iji bulie arụmọrụ nke nchekwa data anyị bụ iwebata akụkụ ọhụrụ: oyi akwa cache. Ụzọ nchikota na-adịkarị bụ ụlọ ahịa ndekọ ọnụ ahịa igodo ebe nchekwa, dị ka Redis ma ọ bụ Memcached. Ọtụtụ ígwé ojii nwere ụdị ọrụ ndị a jikwaa: Elasticache na AWS na ebe nchekwa na Google Cloud.

Cache bara uru mgbe ọrụ na-eme ọtụtụ oku ugboro ugboro na nchekwa data iji weghachite otu ozi ahụ. N'ikpeazụ, anyị na-enweta nchekwa data naanị otu ugboro, chekwaa ozi ahụ na cache, ma ghara imetụ ya aka ọzọ.

Dịka ọmụmaatụ, na ọrụ Graminsta anyị, oge ọ bụla mmadụ gara na ibe profaịlụ nke kpakpando Mobrik, ihe nkesa API na-ajụ ajụjụ nchekwa data maka ozi sitere na profaịlụ ya. Nke a na-eme ugboro ugboro. Ebe ọ bụ na ozi profaịlụ Mobrik anaghị agbanwe site na arịrịọ ọ bụla, ọ dị mma maka caching.

Anyị ga-echekwa nsonaazụ sitere na nchekwa data dị na Redis site na igodo user:id na oge nkwado nke 30 sekọnd. Ugbu a, mgbe mmadụ gara na profaịlụ Mobrik, anyị na-ebu ụzọ lelee Redis, ma ọ bụrụ na data dị ebe ahụ, anyị na-ebufe ya ozugbo site na Redis. Ugbu a arịrịọ profaịlụ kachasị ewu ewu na saịtị anaghị ebubata nchekwa data anyị.

Uru ọzọ nke ọtụtụ ọrụ caching bụ na ha dị mfe n'ịkọba karịa sava nchekwa data. Redis nwere ụdị ụyọkọ Redis arụnyere n'ime ya. Yiri ihe nkwụnye ibu1, ọ na-enye gị ohere ikesa cache Redis gị n'ofe igwe dị iche iche (karịa ọtụtụ puku sava ma ọ bụrụ na ọ dị mkpa).

Ihe fọrọ nke nta ka ọ bụrụ ngwa niile buru ibu na-eji caching; ọ bụ akụkụ dị oke mkpa nke API ngwa ngwa. Nhazi ajụjụ ọsọ ọsọ yana koodu na-arụpụta ihe niile dị mkpa, mana na-enweghị cache ọ fọrọ nke nta ka ọ gaghị ekwe omume ịbawanye ọrụ nye nde ndị ọrụ.

Gụọ ihe oyiri

Mgbe ọnụ ọgụgụ nke ajụjụ na nchekwa data abawanyela nke ukwuu, otu ihe ọzọ anyị nwere ike ime bụ ịgbakwunye ihe odide agụ na sistemụ njikwa nchekwa data. Site na ọrụ a na-achịkwa nke akọwara n'elu, enwere ike ime nke a n'otu pịa. Ihe oyiri a na-agụ ga-adị ugbu a na DB isi ma dị maka nkwupụta SELECT.

Nke a bụ usoro anyị ugbu a:

Otu esi abawanye site na 1 ruo 100 ndị ọrụ

Ọzọkwa omume

Ka ngwa ahụ na-aga n'ihu na-abawanye, anyị ga-aga n'ihu na-ekewapụta ọrụ iji tụọ ha n'onwe ha. Dịka ọmụmaatụ, ọ bụrụ na anyị amalite iji Websockets, mgbe ahụ ọ bụ ihe ezi uche dị na ịdọrọ koodu nhazi Websockets n'ime ọrụ dị iche. Anyị nwere ike idowe ya n'ọnọdụ ọhụrụ n'azụ ihe nrụzi ibu nke anyị, nke nwere ike ịbawanye elu na ala dabere na njikọ Websockets mepere emepe yana n'agbanyeghị ọnụọgụ arịrịọ HTTP.

Anyị ga-aga n'ihu na-alụ ọgụ mgbochi na ọkwa nchekwa data. Ọ bụ n'oge a ka ọ bụ oge iji mụọ nkewa nchekwa data na nhazi. Ụzọ abụọ a chọrọ n'elu, mana na-enye gị ohere ịbawanye nchekwa data ihe fọrọ nke nta ka ọ bụrụ ruo mgbe ebighị ebi.

Anyị chọkwara ịwụnye ọrụ nleba anya na nyocha dị ka New Relic ma ọ bụ Datadog. Nke a ga-enyere gị aka ịchọpụta ajụjụ ndị na-adịghị nwayọ wee ghọta ebe achọrọ nkwalite. Ka anyị na-ebuli elu, anyị chọrọ ilekwasị anya n'ịchọta ihe mgbochi na ikpochapụ ha-na-ejikarị ụfọdụ echiche sitere na ngalaba ndị gara aga.

Isi mmalite

Nke a biputere sitere n'ike mmụọ nsọ ọkacha mmasị m posts banyere elu scalability. Achọrọ m ime ka isiokwu ahụ dịkwuo ntakịrị maka ọkwa mbụ nke ọrụ ma tọpụ ya n'aka otu onye na-ere ahịa. Jide n'aka na ị gụọ ma ọ bụrụ na ị nwere mmasị na isiokwu a.

Ihe odide ala ala peeji

  1. Ọ bụ ezie na ọ dị n'ihe gbasara nkesa ibu n'ofe ọtụtụ oge, mmejuputa iwu nke ụyọkọ Redis dị nnọọ iche na onye na-edozi ibu. [laghachi]

Otu esi abawanye site na 1 ruo 100 ndị ọrụ

isi: www.habr.com

Tinye a comment