Bii o ṣe le ṣe iwọn lati 1 si awọn olumulo 100

Ọpọlọpọ awọn ibẹrẹ ti lọ nipasẹ eyi: ogunlọgọ ti awọn olumulo tuntun forukọsilẹ ni gbogbo ọjọ, ati pe ẹgbẹ idagbasoke n tiraka lati jẹ ki iṣẹ naa ṣiṣẹ.

O jẹ iṣoro ti o wuyi lati ni, ṣugbọn alaye ti o han gedegbe wa lori oju opo wẹẹbu nipa bii o ṣe le ṣe iwọn ohun elo wẹẹbu ni pẹkipẹki lati nkankan si awọn ọgọọgọrun egbegberun awọn olumulo. Ni deede boya awọn solusan ina tabi awọn solusan igo (ati nigbagbogbo mejeeji). Nitorinaa, awọn eniyan lo kuku awọn imọ-ẹrọ cliched lati ṣe iwọn iṣẹ akanṣe magbowo wọn sinu nkan to ṣe pataki gaan.

Jẹ ká gbiyanju lati àlẹmọ awọn alaye ati ki o kọ si isalẹ awọn ipilẹ agbekalẹ. A yoo ṣe iwọn aaye pinpin fọto tuntun wa Graminsta ni igbese nipasẹ igbese lati awọn olumulo 1 si 100.

Jẹ ki a kọ awọn iṣe kan pato ti o nilo lati ṣe nigbati awọn olugbo ba pọ si 10, 100, 1000, 10 ati 000 eniyan.

1 olumulo: 1 ẹrọ

Fere gbogbo ohun elo, boya oju opo wẹẹbu kan tabi ohun elo alagbeka, ni awọn paati bọtini mẹta:

  • API
  • database
  • alabara (ohun elo alagbeka funrararẹ tabi oju opo wẹẹbu)

Awọn database tọjú jubẹẹlo data. API naa nṣe iranṣẹ awọn ibeere si ati ni ayika data yii. Onibara ndari data si olumulo.

Mo wa si ipari pe o rọrun pupọ lati sọrọ nipa iwọn ohun elo kan ti, lati oju wiwo ayaworan, alabara ati awọn nkan API ti yapa patapata.

Nigba ti a ba bẹrẹ kọkọ ohun elo kan, gbogbo awọn paati mẹta le ṣee ṣiṣẹ lori olupin kanna. Ni diẹ ninu awọn ọna, eyi jẹ iru si agbegbe idagbasoke wa: ẹlẹrọ kan nṣiṣẹ data data, API, ati alabara lori ẹrọ kanna.

Ni imọran, a le ran lọ sinu awọsanma lori DigitalOcean Droplet kan tabi apẹẹrẹ AWS EC2, bi a ṣe han ni isalẹ:
Bii o ṣe le ṣe iwọn lati 1 si awọn olumulo 100
Pẹlu iyẹn ti sọ, ti olumulo ti o ju ọkan lọ yoo wa lori aaye kan, o fẹrẹ jẹ oye nigbagbogbo lati yasọtọ Layer data kan.

Awọn olumulo 10: gbigbe data data si ipele lọtọ

Pipin aaye data sinu awọn iṣẹ iṣakoso bii Amazon RDS tabi aaye data ti iṣakoso okun Digital yoo ṣe iranṣẹ fun wa daradara fun igba pipẹ. O jẹ diẹ gbowolori diẹ sii ju gbigbalejo ara ẹni lọ lori ẹrọ kan tabi apẹẹrẹ EC2, ṣugbọn pẹlu awọn iṣẹ wọnyi o gba ọpọlọpọ awọn amugbooro ti o wulo lati inu apoti ti yoo wa ni ọwọ ni ọjọ iwaju: afẹyinti agbegbe pupọ, ka awọn ẹda, adaṣe adaṣe. backups, ati siwaju sii.

Eyi ni ohun ti eto naa dabi bayi:
Bii o ṣe le ṣe iwọn lati 1 si awọn olumulo 100

Awọn olumulo 100: gbigbe alabara lọ si ipele lọtọ

O da, awọn olumulo akọkọ wa fẹran ohun elo wa gaan. Ijabọ n di iduroṣinṣin diẹ sii, nitorinaa o to akoko lati gbe alabara lọ si ipele lọtọ. O yẹ ki o ṣe akiyesi pe iyapa awọn nkan jẹ abala bọtini ti kikọ ohun elo ti iwọn. Bi apakan kan ti eto n gba ijabọ diẹ sii, a le pin si i lati ṣakoso bii awọn iwọn iṣẹ ti o da lori awọn ilana ijabọ kan pato.

Eyi ni idi ti Mo fẹ lati ronu ti alabara bi lọtọ lati API. Eyi jẹ ki o rọrun pupọ lati ronu nipa idagbasoke fun awọn iru ẹrọ lọpọlọpọ: wẹẹbu, wẹẹbu alagbeka, iOS, Android, awọn ohun elo tabili, awọn iṣẹ ẹnikẹta, bbl Gbogbo wọn jẹ alabara nikan ni lilo API kanna.

Fun apẹẹrẹ, ni bayi awọn olumulo wa nigbagbogbo beere lati tu ohun elo alagbeka kan silẹ. Ti o ba ya onibara ati awọn nkan API, eyi di rọrun.

Eyi ni ohun ti iru eto kan dabi:

Bii o ṣe le ṣe iwọn lati 1 si awọn olumulo 100

1000 users: fi fifuye iwontunwonsi

Ohun ti wa ni nwa soke. Awọn olumulo Graminsta n gbe awọn fọto siwaju ati siwaju sii. Nọmba awọn iforukọsilẹ tun n dagba. Olupin API nikan wa n ni akoko lile lati tọju gbogbo awọn ijabọ. Nilo irin diẹ sii!

Iṣatunṣe fifuye jẹ ero ti o lagbara pupọ. Ero pataki ni pe a fi iwọntunwọnsi fifuye si iwaju API, ati pe o pin awọn ijabọ si awọn iṣẹlẹ iṣẹ kọọkan. Eyi ni bii a ṣe ṣe iwọn nâa, afipamo pe a ṣafikun awọn olupin diẹ sii pẹlu koodu kanna, jijẹ nọmba awọn ibeere ti a le ṣe ilana.

A yoo gbe awọn iwọntunwọnsi fifuye lọtọ ni iwaju alabara wẹẹbu ati ni iwaju API. Eyi tumọ si pe o le ṣiṣe awọn igba pupọ ti nṣiṣẹ koodu API ati koodu alabara wẹẹbu. Oniwọntunwọnsi fifuye yoo taara awọn ibeere si olupin ti o kere si.

Nibi ti a gba miiran pataki anfani - apọju. Nigbati apẹẹrẹ kan ba kuna (boya ti kojọpọ tabi kọlu), a fi wa silẹ pẹlu awọn miiran ti o tẹsiwaju lati dahun si awọn ibeere ti nwọle. Ti apẹẹrẹ kan ba n ṣiṣẹ, lẹhinna ni ọran ikuna gbogbo eto yoo jamba.

Iwontunws.funfun fifuye tun pese igbelowọn laifọwọyi. A le tunto rẹ lati mu nọmba awọn iṣẹlẹ pọ si ṣaaju fifuye tente oke, ati dinku rẹ nigbati gbogbo awọn olumulo ba sun.

Pẹlu iwọntunwọnsi fifuye, ipele API le ṣe iwọn fere titilai, nirọrun ṣafikun awọn iṣẹlẹ tuntun bi nọmba awọn ibeere ṣe pọ si.

Bii o ṣe le ṣe iwọn lati 1 si awọn olumulo 100

Akiyesi. Ni bayi eto wa jọra pupọ si ohun ti awọn ile-iṣẹ PaaS bii Heroku tabi Elastic Beanstalk lori AWS nfunni lati inu apoti (eyiti o jẹ idi ti wọn fi gbajumọ). Heroku fi ibi-ipamọ data sori agbalejo lọtọ, ṣakoso iwọntunwọnsi fifuye iwọn-laifọwọyi, ati gba ọ laaye lati gbalejo alabara wẹẹbu lọtọ lati API. Eyi jẹ idi nla lati lo Heroku fun awọn iṣẹ ipele ibẹrẹ tabi awọn ibẹrẹ - o gba gbogbo awọn iṣẹ ipilẹ kuro ninu apoti.

10 olumulo: CDN

Boya a yẹ ki o ti ṣe eyi lati ibẹrẹ. Awọn ibeere ṣiṣe ati gbigba awọn fọto tuntun n bẹrẹ lati fi igara pupọ sii lori olupin wa.

Ni ipele yii, o nilo lati lo iṣẹ awọsanma fun titoju akoonu aimi - awọn aworan, awọn fidio ati pupọ diẹ sii (AWS S3 tabi Awọn aaye Okun Digital). Ni gbogbogbo, API wa yẹ ki o yago fun mimu awọn nkan bii ṣiṣe awọn aworan ati ikojọpọ awọn aworan si olupin naa.

Anfani miiran ti alejo gbigba awọsanma ni CDN (AWS n pe afikun-lori Cloudfront, ṣugbọn ọpọlọpọ awọn olupese ibi ipamọ awọsanma nfunni lati inu apoti). CDN ṣe ifipamọ awọn aworan wa laifọwọyi ni ọpọlọpọ awọn ile-iṣẹ data ni ayika agbaye.

Botilẹjẹpe ile-iṣẹ data akọkọ wa le wa ni Ohio, ti ẹnikan ba beere aworan kan lati Japan, olupese awọsanma yoo ṣe ẹda kan yoo fi pamọ sinu ile-iṣẹ data Japanese wọn. Eniyan ti o tẹle ti o beere aworan yii ni Japan yoo gba ni iyara pupọ. Eyi ṣe pataki nigba ti a ba ṣiṣẹ pẹlu awọn faili nla, bii awọn fọto tabi awọn fidio, ti o gba akoko pipẹ lati ṣe igbasilẹ ati tan kaakiri agbaye.

Bii o ṣe le ṣe iwọn lati 1 si awọn olumulo 100

100 olumulo: igbelosoke data Layer

CDN ti ṣe iranlọwọ pupọ: ijabọ n dagba ni iyara ni kikun. Blogger fidio olokiki Mavid Mobrick ṣẹṣẹ forukọsilẹ pẹlu wa o si fi “itan” rẹ ranṣẹ, bi wọn ti sọ. Ṣeun si iwọntunwọnsi fifuye, Sipiyu ati lilo iranti lori awọn olupin API ti wa ni kekere (awọn apẹẹrẹ API mẹwa ti nṣiṣẹ), ṣugbọn a bẹrẹ lati gba ọpọlọpọ awọn akoko akoko lori awọn ibeere… nibo ni awọn idaduro wọnyi wa lati?

N walẹ kekere kan sinu awọn metiriki, a rii pe Sipiyu lori olupin data jẹ 80-90% ti kojọpọ. A wa ni opin.

Yiwọn Layer data jẹ boya apakan ti o nira julọ ti idogba. Awọn olupin API nṣe iranṣẹ awọn ibeere ti ko ni ipinlẹ, nitorinaa a rọrun ṣafikun awọn apẹẹrẹ API diẹ sii. Imu poju awọn apoti isura infomesonu ko le ṣe eyi. A yoo sọrọ nipa awọn eto iṣakoso data ibatan ibatan olokiki (PostgreSQL, MySQL, ati bẹbẹ lọ).

caching

Ọkan ninu awọn ọna ti o rọrun julọ lati mu iṣẹ ṣiṣe data wa pọ si ni lati ṣafihan paati tuntun kan: Layer cache. Ọna caching ti o wọpọ julọ jẹ ile-itaja igbasilẹ iye bọtini-iranti, gẹgẹbi Redis tabi Memcached. Pupọ julọ awọn awọsanma ni ẹya iṣakoso ti awọn iṣẹ wọnyi: Elasticache lori AWS ati Memorystore lori Google Cloud.

Kaṣe jẹ iwulo nigbati iṣẹ kan ba ṣe ọpọlọpọ awọn ipe ti o leralera si ibi ipamọ data lati gba alaye kanna pada. Ni pataki, a wọle si ibi ipamọ data ni ẹẹkan, tọju alaye naa sinu kaṣe, ki o maṣe fi ọwọ kan lẹẹkansi.

Fun apẹẹrẹ, ninu iṣẹ Graminsta wa, ni gbogbo igba ti ẹnikan ba lọ si oju-iwe profaili ti irawọ Mobrik, olupin API n beere aaye data fun alaye lati profaili rẹ. Eleyi ṣẹlẹ lẹẹkansi ati lẹẹkansi. Niwọn bi alaye profaili Mobrik ko yipada pẹlu ibeere kọọkan, o dara julọ fun caching.

A yoo kaṣe awọn abajade lati ibi ipamọ data ni Redis nipasẹ bọtini user:id pẹlu kan Wiwulo akoko ti 30 aaya. Bayi, nigbati ẹnikan ba lọ si profaili Mobrik, a kọkọ ṣayẹwo Redis, ati pe ti data ba wa nibẹ, a kan gbe taara taara lati Redis. Bayi awọn ibeere si profaili olokiki julọ lori aaye naa ni adaṣe ko ṣe fifuye data data wa.

Anfani miiran ti ọpọlọpọ awọn iṣẹ caching ni pe wọn rọrun lati ṣe iwọn ju awọn olupin data data lọ. Redis ni ipo iṣupọ Redis ti a ṣe sinu. Iru si a fifuye iwontunwonsi1, o gba ọ laaye lati pin kaṣe Redis rẹ kọja awọn ẹrọ pupọ (laarin ẹgbẹẹgbẹrun awọn olupin ti o ba nilo).

Fere gbogbo awọn ohun elo iwọn nla lo caching; o jẹ apakan pataki ti API sare kan. Ṣiṣe ibeere ibeere yiyara ati koodu iṣelọpọ diẹ sii jẹ gbogbo pataki, ṣugbọn laisi kaṣe o fẹrẹ jẹ soro lati ṣe iwọn iṣẹ kan si awọn miliọnu awọn olumulo.

Ka Replicas

Nigbati nọmba awọn ibeere si ibi ipamọ data ti pọ si pupọ, ohun kan diẹ sii ti a le ṣe ni lati ṣafikun awọn ẹda kika ninu eto iṣakoso data data. Pẹlu awọn iṣẹ iṣakoso ti a ṣalaye loke, eyi le ṣee ṣe ni titẹ kan. Ẹda kika yoo wa lọwọlọwọ ni aaye data akọkọ ati pe o wa fun awọn alaye Yan.

Eyi ni eto wa bayi:

Bii o ṣe le ṣe iwọn lati 1 si awọn olumulo 100

Awọn iṣe siwaju

Bi ohun elo naa ti n tẹsiwaju si iwọn, a yoo tẹsiwaju lati ya awọn iṣẹ naa sọtọ lati ṣe iwọn wọn ni ominira. Fun apẹẹrẹ, ti a ba bẹrẹ lilo Websockets, lẹhinna o jẹ oye lati fa koodu sisẹ Websockets sinu iṣẹ lọtọ. A le gbe si awọn iṣẹlẹ tuntun lẹhin iwọntunwọnsi fifuye tiwa, eyiti o le ṣe iwọn si oke ati isalẹ da lori awọn asopọ Websockets ṣiṣi ati laibikita nọmba awọn ibeere HTTP.

A yoo tun tẹsiwaju lati ja awọn ihamọ ni ipele data data. O wa ni ipele yii pe o to akoko lati kawe ipin data data ati sharding. Awọn ọna mejeeji nilo afikun si oke, ṣugbọn gba ọ laaye lati ṣe iwọn ibi-ipamọ data fere titilai.

A tun fẹ lati fi sori ẹrọ ibojuwo ati iṣẹ atupale bii Relic Tuntun tabi Datadog. Eyi yoo ṣe iranlọwọ fun ọ lati ṣe idanimọ awọn ibeere ti o lọra ati loye ibiti o nilo ilọsiwaju. Bi a ṣe ṣe iwọn, a fẹ lati dojukọ lori wiwa awọn igo ati imukuro wọn-nigbagbogbo lilo diẹ ninu awọn imọran lati awọn apakan iṣaaju.

Awọn orisun

Ifiweranṣẹ yii jẹ atilẹyin nipasẹ ọkan ninu ayanfẹ mi posts nipa ga scalability. Mo fẹ lati ṣe nkan naa ni pato diẹ sii fun awọn ipele ibẹrẹ ti awọn iṣẹ akanṣe ati ṣii rẹ lati ọdọ olutaja kan. Rii daju lati ka ti o ba nifẹ si koko yii.

Nudọnamẹ odò tọn

  1. Botilẹjẹpe iru ni awọn ofin ti pinpin fifuye kọja awọn iṣẹlẹ lọpọlọpọ, imuse ipilẹ ti iṣupọ Redis yatọ pupọ si iwọntunwọnsi fifuye. [pada]

Bii o ṣe le ṣe iwọn lati 1 si awọn olumulo 100

orisun: www.habr.com

Fi ọrọìwòye kun