Yuav ua li cas teev los ntawm 1 mus rau 100 cov neeg siv

Ntau qhov kev pib ua haujlwm tau dhau los ntawm qhov no: cov neeg coob coob ntawm cov neeg siv tshiab sau npe txhua hnub, thiab pab pawg txhim kho tau tawm tsam kom cov kev pabcuam khiav haujlwm.

Nws yog ib qho teeb meem zoo kom muaj, tab sis muaj cov ntaub ntawv meej me ntsis ntawm lub vev xaib hais txog yuav ua li cas ua tib zoo ntsuas lub vev xaib thov los ntawm tsis muaj dab tsi mus rau ntau pua txhiab tus neeg siv. Feem ntau muaj cov kev daws teeb meem hluav taws kub los yog kev daws teeb meem hauv lub cev (thiab feem ntau ob qho tib si). Yog li ntawd, tib neeg siv cov tswv yim theej cliched los ntsuas lawv qhov kev ua haujlwm pib ua haujlwm rau ib yam dab tsi loj heev.

Cia peb sim lim cov ntaub ntawv thiab sau cov qauv yooj yim. Peb tab tom yuav ntsuas peb qhov chaw sib koom duab tshiab Graminsta ib kauj ruam ntawm 1 txog 100 cov neeg siv.

Cia peb sau tseg tias yuav tsum ua dab tsi tshwj xeeb yuav tsum tau ua thaum cov neeg tuaj saib nce mus rau 10, 100, 1000, 10 thiab 000 tus neeg.

1 neeg siv: 1 tshuab

Yuav luag txhua daim ntawv thov, nws yog lub vev xaib lossis daim ntawv thov mobile, muaj peb yam tseem ceeb:

  • API
  • database
  • tus neeg siv khoom (kev thov mobile nws tus kheej lossis lub vev xaib)

Lub database khaws cov ntaub ntawv tsis tu ncua. API ua haujlwm thov rau thiab ib puag ncig cov ntaub ntawv no. Tus neeg siv khoom xa cov ntaub ntawv mus rau tus neeg siv.

Kuv tuaj txog qhov xaus tias nws yooj yim dua los tham txog kev ntsuas ib daim ntawv thov yog tias, los ntawm qhov kev xav ntawm kev tsim vaj tsev, cov neeg siv khoom thiab cov koom haum API tau sib cais tag nrho.

Thaum peb xub pib tsim ib daim ntawv thov, tag nrho peb cov khoom tuaj yeem khiav ntawm tib lub server. Qee txoj hauv kev, qhov no zoo ib yam li peb ib puag ncig kev txhim kho: ib tus kws tshaj lij ua haujlwm hauv database, API, thiab cov neeg siv khoom ntawm tib lub tshuab.

Hauv txoj kev xav, peb tuaj yeem xa nws hauv huab ntawm ib qho DigitalOcean Droplet lossis AWS EC2 piv txwv, raws li qhia hauv qab no:
Yuav ua li cas teev los ntawm 1 mus rau 100 cov neeg siv
Nrog rau qhov hais tias, yog tias yuav muaj ntau tshaj ib tus neeg siv ntawm ib lub xaib, nws yuav luag ib txwm ua rau kev txiav txim siab rau txheej txheej database.

10 cov neeg siv: txav cov ntaub ntawv mus rau qib sib cais

Kev faib cov ntaub ntawv rau hauv cov kev pabcuam tswj hwm xws li Amazon RDS lossis Digital Ocean Managed Database yuav pab tau peb zoo rau lub sijhawm ntev. Nws yog me ntsis kim tshaj li tus kheej-hosting ntawm ib lub tshuab lossis EC2 piv txwv, tab sis nrog cov kev pabcuam no koj tau txais ntau cov txiaj ntsig txuas ntxiv tawm ntawm lub thawv uas yuav tuaj yeem siv tau rau yav tom ntej: ntau thaj tsam thaub qab, nyeem cov ntawv luam, tsis siv neeg. backups, thiab lwm yam.

Nov yog qhov system zoo li tam sim no:
Yuav ua li cas teev los ntawm 1 mus rau 100 cov neeg siv

100 cov neeg siv: txav tus neeg siv khoom mus rau qib sib cais

Hmoov zoo, peb cov neeg siv thawj zaug yeej nyiam peb daim ntawv thov. Kev khiav tsheb tau ruaj khov dua, yog li nws yog lub sijhawm txav tus neeg siv khoom mus rau qib sib cais. Nws yuav tsum tau muab sau tseg tias kev sib cais cov koom haum yog ib qho tseem ceeb ntawm kev tsim ib daim ntawv thov scalable. Raws li ib feem ntawm lub kaw lus tau txais kev tsheb ntau dua, peb tuaj yeem faib nws los tswj cov kev pab cuam li cas raws li cov qauv tsheb tshwj xeeb.

Qhov no yog vim li cas kuv nyiam xav txog tus neeg siv khoom sib cais los ntawm API. Qhov no ua rau nws yooj yim heev rau kev xav txog kev tsim rau ntau lub platform: lub vev xaib, lub vev xaib mobile, iOS, Android, daim ntawv thov desktop, cov kev pabcuam thib peb, thiab lwm yam. Lawv tsuas yog cov neeg siv khoom siv tib yam API.

Piv txwv li, tam sim no peb cov neeg siv feem ntau thov kom tso ib daim ntawv thov mobile. Yog tias koj cais cov neeg siv khoom thiab cov koom haum API, qhov no yooj yim dua.

Qhov no yog qhov zoo li qhov system zoo li:

Yuav ua li cas teev los ntawm 1 mus rau 100 cov neeg siv

1000 cov neeg siv: ntxiv load balancer

Tej yam tab tom nrhiav. Cov neeg siv Graminsta tab tom upload duab ntau thiab ntau dua. Tus naj npawb ntawm kev sau npe kuj tseem loj tuaj. Peb ib leeg API neeg rau zaub mov muaj lub sij hawm nyuaj ua raws li tag nrho cov tsheb khiav. Xav tau hlau ntxiv!

Load balancer yog lub tswv yim muaj zog heev. Lub tswv yim tseem ceeb yog tias peb muab cov khoom sib npaug rau pem hauv ntej ntawm API, thiab nws faib cov tsheb mus rau ib tus neeg ua haujlwm. Qhov no yog li cas peb ntsuas kab rov tav, txhais tau tias peb ntxiv cov servers ntau dua nrog tib txoj cai, nce tus naj npawb ntawm kev thov peb tuaj yeem ua tiav.

Peb yuav tso cov khoom sib npaug sib cais nyob rau pem hauv ntej ntawm tus neeg siv khoom web thiab pem hauv ntej ntawm API. Qhov no txhais tau tias koj tuaj yeem khiav ntau zaus uas khiav API code thiab web tus neeg siv code. Lub load balancer yuav ncaj qha thov mus rau lub server uas tsis tshua muaj loaded.

Ntawm no peb tau txais lwm qhov txiaj ntsig tseem ceeb - redundancy. Thaum ib qho piv txwv ua tsis tiav (tej zaum overloaded lossis crashed), peb sab laug nrog lwm tus uas txuas ntxiv teb rau cov lus thov tuaj. Yog tias tsuas muaj ib qho piv txwv ua haujlwm, ces nyob rau hauv cov ntaub ntawv ntawm tsis ua hauj lwm tag nrho cov system yuav poob.

Lub load balancer kuj muab kev ntsuas tsis siv neeg. Peb tuaj yeem teeb tsa nws kom nce tus naj npawb ntawm cov xwm txheej ua ntej qhov siab tshaj plaws, thiab txo nws thaum txhua tus neeg siv tsaug zog.

Nrog rau lub load balancer, qib API tuaj yeem ntsuas yuav luag tsis tas li, tsuas yog ntxiv cov xwm txheej tshiab raws li tus naj npawb ntawm kev thov nce.

Yuav ua li cas teev los ntawm 1 mus rau 100 cov neeg siv

Nco tseg. Tam sim no peb lub kaw lus zoo ib yam li cov tuam txhab PaaS zoo li Heroku lossis Elastic Beanstalk ntawm AWS muab tawm ntawm lub thawv (uas yog vim li cas lawv thiaj li nrov). Heroku muab cov ntaub ntawv tso rau ntawm tus tswv tsev sib cais, tswj hwm qhov pib-scaling load balancer, thiab tso cai rau koj los tuav lub vev xaib neeg siv cais tawm ntawm API. Qhov no yog qhov laj thawj zoo uas siv Heroku rau cov haujlwm thaum ntxov lossis pib ua haujlwm - koj tau txais tag nrho cov kev pabcuam yooj yim tawm ntawm lub thawv.

10 cov neeg siv: CDN

Tej zaum peb yuav tsum tau ua qhov no txij thaum pib. Kev thov thiab lees txais cov duab tshiab yog pib ua rau muaj kev nyuaj siab ntau dhau ntawm peb cov servers.

Nyob rau theem no, koj yuav tsum siv cov kev pabcuam huab rau khaws cov ntsiab lus zoo li qub - duab, yeeb yaj kiab thiab ntau ntxiv (AWS S3 lossis Digital Ocean Spaces). Feem ntau, peb API yuav tsum tsis txhob tuav tej yam xws li kev pab cov duab thiab upload cov duab rau lub server.

Lwm qhov zoo dua ntawm huab hosting yog CDN (AWS hu qhov no add-on Cloudfront, tab sis ntau lub chaw khaws huab muab nws tawm ntawm lub thawv). CDN cia li khaws peb cov duab hauv ntau lub chaw cov ntaub ntawv thoob ntiaj teb.

Txawm hais tias peb lub chaw cov ntaub ntawv tseem ceeb yuav nyob hauv Ohio, yog tias ib tus neeg thov cov duab los ntawm Nyij Pooj, tus neeg muab kev pabcuam huab yuav ua ib daim ntawv luam thiab khaws cia rau hauv lawv qhov chaw khaws ntaub ntawv Japanese. Tus neeg tom ntej uas thov daim duab no hauv Nyij Pooj yuav tau txais sai dua. Qhov no yog qhov tseem ceeb thaum peb ua haujlwm nrog cov ntaub ntawv loj, xws li cov duab lossis yeeb yaj kiab, uas siv sijhawm ntev los rub tawm thiab xa mus thoob ntiaj teb.

Yuav ua li cas teev los ntawm 1 mus rau 100 cov neeg siv

100 cov neeg siv: scaling cov ntaub ntawv txheej

CDN tau pab ntau heev: kev khiav tsheb loj zuj zus tuaj. Lub npe nrov video blogger Mavid Mobrick nyuam qhuav sau npe nrog peb thiab tshaj tawm nws "zaj dab neeg", raws li lawv hais. Ua tsaug rau lub load balancer, CPU thiab kev siv nco ntawm API servers tau qis qis (tsawg API piv txwv), tab sis peb tab tom pib tau txais ntau lub sijhawm ntawm kev thov ... qhov twg qhov kev ncua no tuaj ntawm?

Kev khawb me ntsis rau hauv qhov ntsuas, peb pom tias CPU ntawm lub server server yog 80-90% loaded. Peb nyob ntawm qhov txwv.

Scaling cov ntaub ntawv txheej yog tej zaum qhov nyuaj tshaj plaws ntawm cov kab zauv. API servers pab kev thov tsis muaj xeev, yog li peb tsuas ntxiv API piv txwv. Nos feem ntau databases tsis tuaj yeem ua qhov no. Peb yuav tham txog kev sib raug zoo database tswj systems (PostgreSQL, MySQL, thiab lwm yam).

caching

Ib txoj hauv kev yooj yim tshaj plaws los ua kom qhov kev ua tau zoo ntawm peb cov ntaub ntawv yog los qhia txog cov khoom siv tshiab: cov txheej txheem cache. Txoj kev caching feem ntau yog ib qho hauv-nco qhov tseem ceeb-tus nqi khaws cia, xws li Redis lossis Memcached. Cov huab feem ntau muaj kev tswj hwm ntawm cov kev pabcuam no: Elasticache ntawm AWS thiab Memorystore ntawm Google Cloud.

Ib lub cache muaj txiaj ntsig zoo thaum qhov kev pabcuam ua rau ntau qhov kev hu rov qab mus rau cov ntaub ntawv khaws cia kom khaws cov ntaub ntawv tib yam. Qhov tseem ceeb, peb nkag mus rau cov ntaub ntawv tsuas yog ib zaug, khaws cov ntaub ntawv hauv cache, thiab tsis txhob kov nws dua.

Piv txwv li, hauv peb qhov kev pabcuam Graminsta, txhua zaus ib tus neeg mus rau nplooj ntawv profile ntawm lub hnub qub Mobrik, API server nug cov ntaub ntawv rau cov ntaub ntawv los ntawm nws qhov profile. Qhov no tshwm sim dua thiab dua. Txij li Mobrik cov ntaub ntawv profile tsis hloov nrog txhua qhov kev thov, nws yog qhov zoo heev rau caching.

Peb yuav cache cov txiaj ntsig los ntawm cov ntaub ntawv hauv Redis los ntawm qhov tseem ceeb user:id nrog rau lub sijhawm siv tau ntawm 30 vib nas this. Tam sim no, thaum ib tug neeg mus rau Mobrik qhov profile, peb thawj zaug kuaj Redis, thiab yog tias cov ntaub ntawv nyob ntawd, peb tsuas yog hloov nws ncaj qha los ntawm Redis. Tam sim no thov mus rau qhov nrov tshaj plaws profile ntawm lub xaib xyaum tsis thauj peb cov ntaub ntawv.

Lwm qhov zoo dua ntawm cov kev pabcuam caching feem ntau yog tias lawv yooj yim dua los teev ntau dua li database servers. Redis muaj ib qho built-in Redis Cluster hom. Zoo ib yam li lub load balancer1, nws tso cai rau koj faib koj Redis cache hla ntau lub tshuab (nrog ntau txhiab tus servers yog tias xav tau).

Yuav luag txhua daim ntawv thov loj siv caching; nws yog ib feem tseem ceeb ntawm API ceev ceev. Cov lus nug nrawm dua thiab cov lej tsim tau zoo dua yog qhov tseem ceeb, tab sis tsis muaj cache nws yuav luag tsis tuaj yeem ntsuas qhov kev pabcuam rau ntau lab tus neeg siv.

Nyeem Replicas

Thaum tus naj npawb ntawm cov lus nug rau hauv cov ntaub ntawv tau nce ntau, ib qho ntxiv uas peb tuaj yeem ua tau yog ntxiv cov ntawv nyeem replicas hauv kev tswj hwm database. Nrog rau cov kev tswj xyuas tau piav qhia saum toj no, qhov no tuaj yeem ua tiav hauv ib nias. Cov ntawv nyeem replica yuav nyob twj ywm tam sim no hauv cov ntaub ntawv tseem ceeb thiab muaj rau SELECT cov lus.

Ntawm no yog peb qhov system tam sim no:

Yuav ua li cas teev los ntawm 1 mus rau 100 cov neeg siv

Cov kauj ruam tom ntej

Raws li daim ntawv thov txuas ntxiv mus, peb yuav txuas ntxiv cais cov kev pabcuam los ntsuas lawv tus kheej. Piv txwv li, yog tias peb pib siv Websockets, ces nws ua rau kev txiav txim siab rub Websockets cov lej ua haujlwm rau hauv ib qho kev pabcuam. Peb tuaj yeem tso nws rau ntawm qhov xwm txheej tshiab tom qab peb tus kheej cov khoom sib npaug, uas tuaj yeem nce thiab nqis raws li qhib Websockets kev sib txuas thiab tsis hais tus lej HTTP thov.

Peb tseem yuav txuas ntxiv tawm tsam kev txwv ntawm qib database. Nws yog nyob rau theem no uas nws yog lub sijhawm los kawm database partitioning thiab sharding. Ob txoj hauv kev xav tau nyiaj siv ua haujlwm ntxiv, tab sis tso cai rau koj los ntsuas cov ntaub ntawv yuav luag tsis tas li.

Peb kuj xav txhim kho kev saib xyuas thiab tshuaj xyuas kev pabcuam xws li New Relic lossis Datadog. Qhov no yuav pab koj txheeb xyuas cov lus nug qeeb thiab nkag siab qhov twg yuav tsum tau txhim kho. Raws li peb ntsuas, peb xav tsom mus rau kev nrhiav cov fwj thiab tshem tawm lawv - feem ntau siv qee cov tswv yim los ntawm ntu dhau los.

Cov chaw

Cov ncej no yog kev tshoov siab los ntawm ib qho ntawm kuv cov lus uas kuv nyiam tshaj hais txog kev scalability siab. Kuv xav ua tsab xov xwm me ntsis ntxiv rau cov theem pib ntawm cov haujlwm thiab muab faib los ntawm ib tus neeg muag khoom. Nco ntsoov nyeem yog tias koj txaus siab rau lub ntsiab lus no.

Cov ntawv hauv qab no

  1. Txawm hais tias zoo sib xws ntawm cov khoom xa tawm thoob plaws ntau qhov xwm txheej, kev siv lub hauv paus ntawm Redis pawg yog qhov txawv ntawm qhov sib npaug ntawm cov khoom sib npaug. [rov qab]

Yuav ua li cas teev los ntawm 1 mus rau 100 cov neeg siv

Tau qhov twg los: www.hab.com

Ntxiv ib saib