SmugMug haldab kahte väga suurt veebipõhist fotoplatvormi, SmugMug ja Flickr, mis võimaldab enam kui 100 miljonil kliendil turvaliselt salvestada, otsida, jagada ja müüa kümneid miljardeid fotosid. Kliendid, kes laadisid üles ja otsivad aastakümnete pikkuseid fotosid, aitasid muuta otsingu kriitiliseks infrastruktuuriks, mis on pidevalt kasvanud alates SmugMugi esmakordsest kasutamisest. Amazon CloudSearch aastal 2012, millele järgnes Amazon OpenSearchi teenus aastast 2018, pärast miljardite dokumentide ja terabaitide otsingusalvestusruumi jõudmist.
Siin jagab SmugMugi personaliinsener Lee Shepherd SmugMugi otsinguarhitektuuri, mida kasutatakse mitme klastri reaalajas liikluse avaldamiseks, tagasitäitmiseks ja peegeldamiseks. SmugMug kasutab neid torujuhtmeid võrdlusuuringute tegemiseks, valideerimiseks ja uutele konfiguratsioonidele, sealhulgas Gravitonipõhistele r6gd.2xlarge eksemplaridele alates i3.2xlarge koos testimisega. Amazon OpenSearch Serverita. Hõlmame kolme avaldamiseks, täitmiseks ja päringute tegemiseks kasutatavat kanalit, ilma ebarealistlikke liiklusmustreid kasutamata ja tootmisteenuseid mõjutamata.
Protsessi jaoks on kaks peamist arhitektuurilist osa:
- Indeksandmete püsiv tõeallikas. See on parim tava ja osa meie varustrateegiast, et omada kestvat poodi väljaspool OpenSearchi indeksit ja Amazon DynamoDB pakub skaleeritavust ja integreeritust AWS Lambda mis lihtsustab protsessi paljuski. Kasutame DynamoDB-d muude mitteotsinguteenuste jaoks, nii et see sobis loomulikult.
- Lambda funktsioon tõeallika andmete avaldamiseks OpenSearchi. Kasutades funktsiooni varjunimed aitab käivitada sama lambda funktsiooni mitut konfiguratsiooni korraga ja on andmete sünkroonis hoidmise võtmeks.
Kirjastamine
Avaldamise konveier on ajendatud sündmustest, näiteks märksõnade või pealkirjade sisestamisest, uutest üleslaadimistest või siltide tuvastamisest Amazon Rekognitsioon. Neid sündmusi töödeldakse, kombineerides andmeid mõnest teisest varakauplusest, näiteks Amazon Aurora MySQL-iga ühilduv väljaanne ja Amazon Simple Storage Service (Amazon S3), enne kui kirjutate ühe üksuse DynamoDB-sse.
DynamoDB-sse kirjutamine kutsub esile Lambda avaldamisfunktsiooni DynamoDB Streams Kinesis Adapter, mis võtab DynamoDB-st hulga värskendatud üksusi ja indekseerib need OpenSearchi. DynamoDB Streams Kinesis Adapteri kasutamisel on ka muid eeliseid, näiteks vajalike samaaegsete lambdade arvu vähendamine.
Lambda avaldamise funktsioon kasutab keskkonnamuutujaid, et määrata, millises OpenSearchi domeenis ja indeksis avaldada. Tootmisalias on konfigureeritud kirjutama OpenSearchi tootmisdomeeni, väljaspool DynamoDB tabelist või Kinesis Streamist
Uute konfiguratsioonide testimisel või migreerimisel konfigureeritakse migreerimisalias kirjutama uude OpenSearchi domeeni, kuid kasutama sama päästikut kui tootmisalias. See võimaldab andmete topelt indekseerimist mõlema OpenSearch teenuse domeeniga samaaegselt.
Siin on näide DynamoDB tabeliskeemist:
Väärtust „LastUpdated” kasutatakse indekseerimisel dokumendi versioonina, mis võimaldab OpenSearchil kõik korrast ära värskendused tagasi lükata.
Tagasitäitmine
Nüüd, kui mõlemas domeenis avaldatakse muudatusi, tuleb uus domeen (indeks) täita ajalooliste andmetega. Äsja loodud indeksi tagasitäitmiseks kasutage kombinatsiooni Amazon Simple Queue Service (Amazon SQS) ja kasutatakse DynamoDB-d. Skript täidab SQS-i järjekorra sõnumitega, mis sisaldavad juhiseid paralleelne skaneerimine DynamoDB tabeli segment.
SQS-i järjekord käivitab Lambda-funktsiooni, mis loeb sõnumijuhised, hangib DynamoDB tabeli vastavast segmendist üksuste partii ja kirjutab need OpenSearchi registrisse. Segmendi edenemise jälgimiseks kirjutatakse uued sõnumid SQS-i järjekorda. Pärast segmendi lõppu ei kirjutata SQS-i järjekorda enam sõnumeid ja protsess peatub.
Samaaegsuse määrab segmentide arv ja täiendavaid juhtelemente pakub Lambda samaaegsuse skaleerimine. SmugMug suudab oma OpenSearchi konfiguratsioonis indekseerida rohkem kui 1 miljardit dokumenti tunnis, mõjutamata samal ajal tootmisdomeeni.
SQS-i järjekorra külvamiseks kasutatakse NodeJS AWS-SDK-põhist skripti. Siin on väljavõte SQS-i konfiguratsiooniskripti suvanditest:
Koos saadud SQS-sõnumi vorminguga:
Peegeldamine
Viimane, meie peegeldatud otsingupäring tulemusi käivitatakse, saates lisaks meie tootmisdomeenile ka OpenSearchi päringu SQS-i järjekorda. SQS-i järjekord käivitab Lambda-funktsiooni, mis taasesitab päringu replika domeeni. Nende päringute otsingutulemusi ei saadeta ühelegi kasutajale, kuid need võimaldavad testitava OpenSearchi teenuse tootmiskoormust kopeerida, ilma et see mõjutaks tootmissüsteeme või kliente.
Järeldus
Uue OpenSearchi domeeni või konfiguratsiooni hindamisel on meid huvitavad peamised mõõdikud päringu latentsusaeg, nimelt kasutatud latentsusajad (latentsusajad aja kohta) ja mis kõige tähtsam - otsimise latentsusajad. Üleminekul Graviton R6gd-le nägime umbes 40 protsenti väiksemat P50-P99 latentsusaega ning samasugust protsessori kasutuse kasvu võrreldes i3-ga (jättes tähelepanuta Gravitoni madalamad kulud). Veel üks teretulnud eelis oli prognoositavam ja jälgitavam JVM-i mälu surve, mis tuleneb prügikogumise muutustest, mis tulenevad G1GC lisamisest R6gd-le ja muudele uutele eksemplaridele.
Selle torujuhtme abil testime ka OpenSearch Serverlessi ja leiame selle parimaid kasutusjuhtumeid. Oleme selle teenuse üle põnevil ja kavatseme aja jooksul luua täiesti serverivaba arhitektuuri. Olge tulemuste osas kursis.
Autoritest
Lee Shepherd on SmugMug personali tarkvarainsener
Aydn Bekirov on Amazoni veebiteenuste peamine tehniline kontohaldur
- SEO-põhise sisu ja PR-levi. Võimenduge juba täna.
- PlatoData.Network Vertikaalne generatiivne Ai. Jõustage ennast. Juurdepääs siia.
- PlatoAiStream. Web3 luure. Täiustatud teadmised. Juurdepääs siia.
- PlatoESG. Süsinik, CleanTech, Energia, Keskkond päikeseenergia, Jäätmekäitluse. Juurdepääs siia.
- PlatoTervis. Biotehnoloogia ja kliiniliste uuringute luureandmed. Juurdepääs siia.
- Allikas: https://aws.amazon.com/blogs/big-data/smugmugs-durable-search-pipelines-for-amazon-opensearch-service/
- :on
- :mitte
- 1
- 100
- 12
- 14
- 20
- 2012
- 2018
- 40
- 7
- 9
- a
- Võimalik
- MEIST
- konto
- lisatud
- lisamine
- Täiendavad lisad
- pärast
- võimaldama
- Lubades
- mööda
- Ka
- Amazon
- Amazon Web Services
- an
- ja
- Teine
- mistahes
- arhitektuuri-
- arhitektuur
- OLEME
- AS
- eelis
- At
- Aurora
- AWS
- Varundamine
- põhineb
- BE
- enne
- on
- võrrelda
- kasu
- Kasu
- BEST
- Peale
- Miljard
- miljardeid
- mõlemad
- kuid
- by
- tekste
- Vaidluste lahendamine
- kogumine
- kombinatsioon
- kombineerimine
- võrreldes
- kokkusobiv
- Lõpetab
- konkurent
- konfiguratsioon
- konfigureeritud
- sisaldama
- kontrolli
- Vastav
- kulud
- cover
- Protsessor
- loodud
- kriitiline
- Kriitiline infrastruktuur
- Kliendid
- andmed
- aastakümnete
- Detection
- Määrama
- kindlaksmääratud
- dokument
- dokumendid
- domeen
- Domeenid
- ajendatud
- iga
- võimaldab
- võimaldades
- Lõpp-punkt
- insener
- Sisse
- täielikult
- keskkond
- Eeter (ETH)
- hindamine
- sündmused
- näide
- erutatud
- vähe
- Valdkonnad
- leidmine
- esimene
- sobima
- Järgneb
- eest
- formaat
- Alates
- täielikult
- funktsioon
- Kasum
- Kasvavad
- Olema
- kõrgus
- aitas
- aitab
- ajalooline
- tund
- HTML
- http
- HTTPS
- i
- i3
- ID
- mõju
- tähtsam
- in
- Kaasa arvatud
- indeks
- indeksid
- Infrastruktuur
- juhtumid
- juhised
- integratsioon
- kavatsevad
- huvitatud
- sisse
- sisse
- kutsub
- kirjed
- iteratsioon
- ITS
- ise
- jpg
- hoidma
- pidamine
- Võti
- märksõnad
- silt
- suur
- Hilinemine
- käivitab
- Alltuulekülg
- nagu
- elama
- koormus
- Partii
- vähendada
- põhiline
- Mälu
- sõnum
- kirjad
- Meetrika
- rännanud
- rändavad
- ränne
- miljon
- miljonit klienti
- peegel
- rohkem
- kõige
- liikuma
- mitmekordne
- MySQL
- nimi
- nimelt
- Natural
- vajadustele
- Uus
- äsja
- järgmine
- ei
- number
- of
- maha
- on
- Internetis
- tegutseb
- Valikud
- Valib
- or
- Muu
- meie
- Parallel
- osa
- mustrid
- kohta
- protsent
- jõudlus
- foto
- Fotod
- tükki
- torujuhe
- Platvormid
- Platon
- Platoni andmete intelligentsus
- PlatoData
- ennustatav
- surve
- eelmine
- Peamine
- protsess
- töödeldud
- Produktsioon
- Edu
- tingimusel
- annab
- avaldama
- avaldatud
- Kirjastamine
- jõuda
- vähendamine
- vastus
- Taotlusi
- nõutav
- tulemuseks
- Tulemused
- jooks
- ohutult
- sama
- nägin
- Skaalautuvus
- ketendamine
- käsikiri
- Otsing
- otsimine
- seeme
- segment
- segmendid
- müüma
- saatmine
- Saadetud
- Serverita
- teenus
- Teenused
- Jaga
- Aktsiad
- sarnane
- lihtne
- üheaegselt
- alates
- ühekordne
- jupp
- So
- tarkvara
- allikas
- Personal
- jääma
- püsivalt
- Peatab
- ladustamine
- salvestada
- kauplustes
- Strateegia
- ojad
- selline
- süsteemid
- tabel
- võtab
- Tehniline
- kümneid
- test
- Testimine
- kui
- et
- .
- Allikas
- oma
- Neile
- Seal.
- Need
- see
- kolm
- Läbi
- aeg
- et
- võttis
- jälgida
- liiklus
- vallandada
- Tõde
- Pöörake
- kaks
- all
- ajakohastatud
- Uudised
- Üleslaadimine
- URL
- Kasutus
- kasutama
- kasutamise juhtumid
- Kasutatud
- Kasutaja
- kasutusalad
- kasutamine
- KINNITAGE
- väärtus
- versioon
- väga
- oli
- we
- web
- veebiteenused
- teretulnud
- M
- millal
- kuigi
- koos
- ilma
- kirjutama
- kirjutamine
- kirjalik
- sephyrnet
- null