Dongosolo la database limasunga zomwe zikupitilira. API imapereka zopempha ndi kuzungulira deta iyi. Wothandizira amatumiza deta kwa wogwiritsa ntchito.
Ndinafika ponena kuti ndizosavuta kulankhula za kukulitsa ntchito ngati, kuchokera kumalingaliro a zomangamanga, kasitomala ndi mabungwe a API agawanika kwathunthu.
Tikayamba kupanga pulogalamu, zigawo zonse zitatu zitha kuyendetsedwa pa seva yomweyo. Mwanjira zina, izi ndizofanana ndi malo athu otukuka: injiniya m'modzi amayendetsa nkhokwe, API, ndi kasitomala pamakina omwewo.
Zinthu zikuyenda bwino. Ogwiritsa ntchito Graminsta akukweza zithunzi zambiri. Chiwerengero cha anthu olembetsa chikukulanso. Seva yathu ya API yokhayo ikuvutika kuti igwirizane ndi kuchuluka kwa magalimoto. Mukufuna chitsulo china!
Load balancer ndi lingaliro lamphamvu kwambiri. Lingaliro lofunikira ndiloti timayika chowongolera katundu patsogolo pa API, ndipo imagawira kuchuluka kwa anthu pazochitika zautumiki. Umu ndi momwe timakulira mozungulira, kutanthauza kuti timawonjezera ma seva ambiri ndi code yomweyi, ndikuwonjezera kuchuluka kwa zopempha zomwe tingathe kukonza.
Tiyika zolemetsa zolemetsa padera kutsogolo kwa kasitomala wapaintaneti komanso kutsogolo kwa API. Izi zikutanthauza kuti mutha kuyendetsa kangapo pogwiritsa ntchito nambala ya API ndi nambala yamakasitomala apa intaneti. The load balancer idzatumiza zopempha kwa seva yomwe ili yochepa kwambiri.
The load balancer imaperekanso makulitsidwe otomatiki. Titha kuyikonza kuti ionjezere kuchuluka kwa zochitika zisanachitike, ndikuchepetsa pomwe ogwiritsa ntchito onse akugona.
Ndi cholemetsa cholemetsa, mulingo wa API ukhoza kukulitsidwa pafupifupi kwanthawi yayitali, kungowonjezera zatsopano pomwe kuchuluka kwa zopempha kumawonjezeka.
Zindikirani. Pakali pano dongosolo lathu likufanana kwambiri ndi zomwe makampani a PaaS monga Heroku kapena Elastic Beanstalk pa AWS amapereka kunja kwa bokosi (ndicho chifukwa chake ali otchuka). Heroku amayika nkhokwe pagulu lapadera, amawongolera chowongolera chowongolera ma auto-scaling, ndikukulolani kuti mulandire kasitomala pa intaneti mosiyana ndi API. Ichi ndi chifukwa chachikulu chogwiritsira ntchito Heroku pamapulojekiti oyambirira kapena oyambitsa - mumapeza zofunikira zonse kuchokera m'bokosi.
Ogwiritsa ntchito 10: CDN
Mwina tikadachita izi kuyambira pachiyambi. Kukonza zopempha ndi kuvomereza zithunzi zatsopano kwayamba kubweretsa zovuta kwambiri pa maseva athu.
Pakadali pano, muyenera kugwiritsa ntchito ntchito yamtambo kuti musunge zinthu zosasunthika - zithunzi, makanema ndi zina zambiri (AWS S3 kapena Digital Ocean Spaces). Nthawi zambiri, API yathu iyenera kupewa kuchita zinthu monga kutumiza zithunzi ndikukweza zithunzi ku seva.
Ubwino winanso wa kuchititsa mitambo ndi CDN (AWS imatcha chowonjezera ichi Cloudfront, koma ambiri osungira mitambo amapereka kunja kwa bokosi). CDN imasunga zithunzi zathu m'malo osiyanasiyana padziko lonse lapansi.
Ngakhale malo athu akuluakulu a data angakhale ku Ohio, ngati wina apempha chithunzi kuchokera ku Japan, wopereka mtambo apanga kopi ndikuyisunga mu data center ya Japan. Munthu wotsatira amene apempha chithunzichi ku Japan achilandira mwachangu kwambiri. Izi ndizofunikira tikamagwira ntchito ndi mafayilo akulu, monga zithunzi kapena makanema, omwe amatenga nthawi yayitali kutsitsa ndikufalitsa padziko lonse lapansi.
Ogwiritsa ntchito 100: kukulitsa gawo la data
CDN yathandiza kwambiri: magalimoto akukula mwachangu. Wolemba mavidiyo otchuka Mavid Mobrick adangolembetsa nafe ndikuyika "nkhani" yake, monga akunena. Chifukwa cha zolemetsa zolemetsa, CPU ndi kugwiritsa ntchito kukumbukira pa ma seva a API kumakhala kochepa (zochitika khumi za API zikuyenda), koma tikuyamba kupeza nthawi yochuluka pa zopempha ... kuchedwa uku kumachokera kuti?
Kukumba pang'ono muzitsulo, tikuwona kuti CPU pa seva yachinsinsi ndi 80-90% yodzaza. Ife tiri pa malire.
Kuchulukitsa gawo la data mwina ndi gawo lovuta kwambiri la equation. Ma seva a API amapereka zopempha zopanda malire, kotero timangowonjezera zochitika za API. Mphuno ambiri ma database sangathe kuchita izi. Tidzakambirana za machitidwe odziwika bwino a database (PostgreSQL, MySQL, etc.).
posungira
Njira imodzi yosavuta yowonjezerera magwiridwe antchito a database yathu ndikuyambitsa gawo latsopano: cache layer. Njira yodziwika bwino yosungiramo zinthu zakale ndi malo osungiramo zinthu zakale, monga Redis kapena Memcached. Mitambo yambiri ili ndi mtundu woyendetsedwa wa mautumikiwa: Elasticache pa AWS ndi Memorystore pa Google Cloud.
Mwachitsanzo, muutumiki wathu wa Graminsta, nthawi iliyonse wina akapita ku tsamba la mbiri ya nyenyezi ya Mobrik, seva ya API imafunsa nkhokwe kuti mudziwe zambiri kuchokera ku mbiri yake. Izi zimachitika mobwerezabwereza. Popeza zambiri za mbiri ya Mobrik sizisintha ndi pempho lililonse, ndizabwino kwambiri posungira.
Tidzasunga zotsatira kuchokera ku database ku Redis ndi kiyi user:id ndi nthawi yovomerezeka ya masekondi 30. Tsopano, wina akapita ku mbiri ya Mobrik, timayamba kuyang'ana Redis, ndipo ngati deta ilipo, timangoyitumiza kuchokera ku Redis. Tsopano zopempha ku mbiri yodziwika bwino patsambalo sizimatsitsa database yathu.
Ubwino wina wa mautumiki ambiri a caching ndikuti ndiwosavuta kukula kuposa ma seva a database. Redis ili ndi mawonekedwe a Redis Cluster. Zofanana ndi zolemetsa zolemetsa1, imakulolani kugawa cache yanu ya Redis pamakina angapo (kudutsa masauzande a maseva ngati pakufunika).
Pafupifupi mapulogalamu onse akuluakulu amagwiritsa ntchito caching; ndi gawo lofunikira kwambiri la API yachangu. Kukonza kwamafunso mwachangu komanso ma code opindulitsa ndizofunikira, koma popanda cache ndizosatheka kukulitsa ntchito kwa ogwiritsa ntchito mamiliyoni ambiri.
Werengani Replicas
Pamene chiwerengero cha mafunso ku database chawonjezeka kwambiri, chinthu chimodzi chomwe tingachite ndikuwonjezera zolemba zowerengera mu kasamalidwe ka database. Ndi ntchito zoyendetsedwa zomwe zafotokozedwa pamwambapa, izi zitha kuchitika ndikudina kamodzi. Zofananira zomwe zawerengedwa zikhalabe zomwe zili munkhokwe yayikulu ndipo zikupezeka pazosankha za SELECT.
Nayi dongosolo lathu tsopano:
Zotsatira Zotsatira
Pamene ntchito ikupitilira kukula, tipitiliza kulekanitsa mautumiki kuti tiwongolere paokha. Mwachitsanzo, ngati tiyamba kugwiritsa ntchito ma Websockets, ndiye kuti ndizomveka kukoka ma code a Websockets mu ntchito yosiyana. Titha kuziyika pamikhalidwe yatsopano kumbuyo kwathu kolemetsa, komwe kumatha kukwera ndi kutsika kutengera maulalo otseguka a Websockets ndipo mosasamala kanthu za kuchuluka kwa zopempha za HTTP.
Tidzapitilizanso kulimbana ndi zoletsa pamlingo wa database. Ino ndi nthawi yoti muphunzire kugawa magawo a database ndi sharding. Njira zonse ziwiri zimafunikira zowonjezera, koma zimakulolani kuti muwonjeze nkhokwe mpaka kalekale.
Tikufunanso kukhazikitsa ntchito yowunikira ndi kusanthula ngati New Relic kapena Datadog. Izi zidzakuthandizani kuzindikira mafunso ochedwa ndikumvetsetsa komwe kukufunika kusintha. Pamene tikukula, tikufuna kuyang'ana kwambiri kupeza zolepheretsa ndikuzichotsa-nthawi zambiri pogwiritsa ntchito malingaliro ena a m'magawo apitawo.
Zotsatira
Nkhaniyi idauziridwa ndi imodzi mwa zomwe ndimakonda kwambiri za scalability yapamwamba. Ndinkafuna kuti nkhaniyi ikhale yachindunji kwambiri pamagawo oyambilira a ntchito ndikumasula kuchokera kwa wogulitsa m'modzi. Onetsetsani kuti mukuwerenga ngati mukufuna chidwi ndi mutuwu.
Mawu a M'munsi
Ngakhale zofanana pakugawa katundu nthawi zambiri, kukhazikitsidwa kwa gulu la Redis kumakhala kosiyana kwambiri ndi chojambulira katundu. [bwerera]