SmugMug upravlja dve zelo veliki spletni foto platformi, SmugMug in Flickr, ki več kot 100 milijonom strank omogoča varno shranjevanje, iskanje, skupno rabo in prodajo več deset milijard fotografij. Stranke, ki so nalagale in iskale po desetletjih fotografij, so pomagale spremeniti iskanje v kritično infrastrukturo, ki se nenehno povečuje, odkar je SmugMug prvič uporabljen Amazon CloudSearch v letu 2012, ki mu je sledil Storitev Amazon OpenSearch od leta 2018, potem ko smo dosegli milijarde dokumentov in terabajtov prostora za iskanje.
Tukaj Lee Shepherd, osebni inženir SmugMug, deli iskalno arhitekturo SmugMug, ki se uporablja za objavljanje, zapolnjevanje in zrcaljenje prometa v živo v več gruč. SmugMug uporablja te cevovode za primerjavo, preverjanje in selitev na nove konfiguracije, vključno s primerki r6gd.2xlarge, ki temeljijo na Gravitonu, iz i3.2xlarge, skupaj s testiranjem Amazon OpenSearch brez strežnika. Pokrivamo tri cevovode, ki se uporabljajo za objavljanje, zapolnjevanje in poizvedovanje, ne da bi uvedli nerealne prometne vzorce in brez vpliva na proizvodne storitve.
Za proces sta ključna dva glavna arhitekturna dela:
- Trajen vir resnice za indeksne podatke. To je najboljša praksa in del naše varnostne strategije, da imamo trajno shrambo zunaj indeksa OpenSearch, in Amazon DynamoDB zagotavlja razširljivost in integracijo z AWS Lambda kar poenostavi veliko postopka. DynamoDB uporabljamo za druge storitve, ki niso iskalne, zato je bilo to naravno prileganje.
- Funkcija Lambda za objavo podatkov iz vira resnice v OpenSearch. Uporaba vzdevki funkcij pomaga izvajati več konfiguracij iste funkcije Lambda hkrati in je ključnega pomena za ohranjanje sinhronizacije podatkov.
Založništvo
Cevovod za objavljanje poteka na podlagi dogodkov, kot so uporabnik, ki vnese ključne besede ali napise, nova nalaganja ali zaznavanje oznak prek Amazonsko ponovno vžiganje. Ti dogodki se obdelujejo in združujejo podatke iz nekaj drugih shramb sredstev, kot je Amazon Aurora MySQL združljiva izdaja in Preprosta storitev shranjevanja Amazon (Amazon S3), preden zapišete eno postavko v DynamoDB.
Pisanje v DynamoDB prikliče funkcijo objavljanja Lambda prek DynamoDB Streams Kinesis Adapter, ki vzame paket posodobljenih elementov iz DynamoDB in jih indeksira v OpenSearch. Obstajajo še druge prednosti uporabe DynamoDB Streams Kinesis Adapterja, kot je zmanjšanje števila zahtevanih sočasnih Lambda.
Objavljiva funkcija Lambda uporablja spremenljivke okolja, da določi, v kateri domeni in indeksu OpenSearch objaviti. Produkcijski vzdevek je konfiguriran za pisanje v produkcijsko domeno OpenSearch, izven tabele DynamoDB ali Kinesis Stream
Pri preskušanju novih konfiguracij ali selitvi je selitveni vzdevek konfiguriran za pisanje v novo domeno OpenSearch, vendar uporablja isti sprožilec kot produkcijski vzdevek. To omogoča dvojno indeksiranje podatkov za obe domeni storitve OpenSearch hkrati.
Tukaj je primer sheme tabele DynamoDB:
Vrednost 'LastUpdated' se pri indeksiranju uporablja kot različica dokumenta, kar OpenSearch omogoča, da zavrne vse neustrezne posodobitve.
Zasipavanje
Zdaj, ko so objavljene spremembe obeh domen, je treba novo domeno (indeks) zapolniti s preteklimi podatki. Če želite zapolniti novo ustvarjeni indeks, uporabite kombinacijo Storitev Amazon Simple Queue (Amazon SQS) in uporablja se DynamoDB. Skript napolni čakalno vrsto SQS s sporočili, ki vsebujejo navodila za vzporedno skeniranje segment tabele DynamoDB.
Čakalna vrsta SQS zažene funkcijo Lambda, ki prebere navodila sporočila, pridobi paket elementov iz ustreznega segmenta tabele DynamoDB in jih zapiše v indeks OpenSearch. Nova sporočila se zapišejo v čakalno vrsto SQS, da se spremlja napredek skozi segment. Ko je segment končan, se v čakalno vrsto SQS ne piše več sporočil in proces se sam ustavi.
Sočasnost je določena s številom segmentov, z dodatnimi kontrolami, ki jih zagotavlja skaliranje sočasnosti Lambda. SmugMug lahko indeksira več kot 1 milijardo dokumentov na uro v svoji konfiguraciji OpenSearch, pri čemer nima vpliva na produkcijsko domeno.
Za sejanje čakalne vrste SQS se uporablja skript, ki temelji na NodeJS AWS-SDK. Tukaj je delček možnosti konfiguracijskega skripta SQS:
Skupaj z obliko dobljenega sporočila SQS:
Zrcaljenje
Zadnji, naš zrcaljena iskalna poizvedba rezultati se izvajajo tako, da poleg naše produkcijske domene pošljejo poizvedbo OpenSearch v čakalno vrsto SQS. Čakalna vrsta SQS zažene funkcijo Lambda, ki ponovno predvaja poizvedbo v domeno replike. Rezultati iskanja iz teh zahtev se ne pošljejo nobenemu uporabniku, ampak omogočajo repliciranje produkcijske obremenitve storitve OpenSearch, ki se preskuša, brez vpliva na proizvodne sisteme ali stranke.
zaključek
Pri ocenjevanju nove domene ali konfiguracije OpenSearch so glavne metrike, ki nas zanimajo, zmogljivost zakasnitve poizvedbe, in sicer zakasnitve (zakasnitve na čas) in kar je najpomembneje zakasnitve pri iskanju. Pri našem prehodu na Graviton R6gd smo opazili približno 40 odstotkov nižje zakasnitve P50-P99, skupaj s podobnimi dobički pri uporabi procesorja v primerjavi z i3 (če zanemarimo Gravitonove nižje stroške). Druga dobrodošla prednost je bil bolj predvidljiv in nadzorljiv pritisk na pomnilnik JVM s spremembami zbiranja smeti zaradi dodajanja G1GC na R6gd in drugih novih primerkih.
S tem cevovodom preizkušamo tudi OpenSearch Serverless in iščemo njegove najboljše primere uporabe. Navdušeni smo nad to storitvijo in v celoti nameravamo sčasoma imeti popolnoma brezstrežniško arhitekturo. Spremljajte rezultate.
O avtorjih
Lee Shepherd je programski inženir osebja SmugMug
Aydn Bekirov je glavni tehnični vodja računa Amazon Web Services
- Distribucija vsebine in PR s pomočjo SEO. Okrepite se še danes.
- PlatoData.Network Vertical Generative Ai. Opolnomočite se. Dostopite tukaj.
- PlatoAiStream. Web3 Intelligence. Razširjeno znanje. Dostopite tukaj.
- PlatoESG. Ogljik, CleanTech, Energija, Okolje, sončna energija, Ravnanje z odpadki. Dostopite tukaj.
- PlatoHealth. Obveščanje o biotehnologiji in kliničnih preskušanjih. Dostopite tukaj.
- vir: https://aws.amazon.com/blogs/big-data/smugmugs-durable-search-pipelines-for-amazon-opensearch-service/
- : je
- :ne
- 1
- 100
- 12
- 14
- 20
- 2012
- 2018
- 40
- 7
- 9
- a
- Sposobna
- O meni
- Račun
- dodano
- Poleg tega
- Dodatne
- po
- omogočajo
- Dovoli
- skupaj
- Prav tako
- Amazon
- Amazon Web Services
- an
- in
- Še ena
- kaj
- architectural
- Arhitektura
- SE
- AS
- sredstvo
- At
- aurora
- AWS
- backup
- temeljijo
- BE
- pred
- počutje
- merilo
- koristi
- Prednosti
- BEST
- Poleg
- Billion
- milijardah
- tako
- vendar
- by
- napisi
- Spremembe
- zbirka
- kombinacija
- združevanje
- v primerjavi z letom
- združljiv
- Zaključi
- sočasno
- konfiguracija
- konfigurirano
- vsebujejo
- Nadzor
- Ustrezno
- stroški
- pokrov
- CPU
- ustvaril
- kritično
- Kritična infrastruktura
- Stranke, ki so
- datum
- desetletja
- Odkrivanje
- Ugotovite,
- določi
- dokument
- Dokumenti
- domena
- domen
- vozi
- vsak
- omogoča
- omogočanje
- Končna točka
- inženir
- V
- popolnoma
- okolje
- Eter (ETH)
- ocenjevanje
- dogodki
- Primer
- razburjen
- Nekaj
- Področja
- iskanje
- prva
- fit
- sledili
- za
- format
- iz
- v celoti
- funkcija
- zaslužek
- Pridelovanje
- Imajo
- višina
- pomagal
- Pomaga
- zgodovinski
- uro
- HTML
- http
- HTTPS
- i
- i3
- ID
- vpliv
- kar je pomembno
- in
- Vključno
- Indeks
- indekse
- Infrastruktura
- primerov
- Navodila
- integracija
- nameravajo
- zainteresirani
- v
- Predstavljamo
- prikliče
- Izdelkov
- ponovitev
- ITS
- sam
- jpg
- Imejte
- vzdrževanje
- Ključne
- ključne besede
- label
- velika
- Latenca
- izstrelki
- Lee
- kot
- v živo
- obremenitev
- Sklop
- nižje
- Glavne
- Spomin
- Sporočilo
- sporočil
- Meritve
- selitev
- selitev
- migracije
- milijonov
- milijonov strank
- ogledalo
- več
- Najbolj
- premikanje
- več
- MySQL
- Ime
- in sicer
- naravna
- potrebe
- Novo
- na novo
- Naslednja
- št
- Številka
- of
- off
- on
- na spletu
- deluje
- možnosti
- Opcije
- or
- Ostalo
- naši
- vzporedno
- del
- vzorci
- za
- odstotkov
- performance
- fotografija
- slike
- kosov
- plinovod
- Platforme
- platon
- Platonova podatkovna inteligenca
- PlatoData
- Predvidljivo
- tlak
- prejšnja
- , ravnateljica
- Postopek
- obdelani
- proizvodnja
- Napredek
- če
- zagotavlja
- objavijo
- objavljeno
- Založništvo
- dosegli
- zmanjšanje
- odgovori
- zahteva
- obvezna
- rezultat
- Rezultati
- Run
- varno
- Enako
- Videl
- Prilagodljivost
- skaliranje
- script
- Iskalnik
- iskanje
- seme
- Segment
- segmentih
- prodaja
- pošiljanja
- poslan
- Brez strežnika
- Storitev
- Storitve
- Delite s prijatelji, znanci, družino in partnerji :-)
- Delnice
- Podoben
- Enostavno
- hkrati
- saj
- sam
- delček
- So
- Software
- vir
- Osebje
- bivanje
- vztrajno
- Postanki
- shranjevanje
- trgovina
- trgovine
- Strategija
- tokovi
- taka
- sistemi
- miza
- meni
- tehnični
- deset
- Test
- Testiranje
- kot
- da
- O
- Vir
- njihove
- Njih
- Tukaj.
- te
- ta
- 3
- skozi
- čas
- do
- vzel
- sledenje
- Prometa
- sprožijo
- Resnica
- OBRAT
- dva
- pod
- posodobljeno
- posodobitve
- Prenos
- URL
- Uporaba
- uporaba
- primeri uporabe
- Rabljeni
- uporabnik
- uporablja
- uporabo
- POTRDI
- vrednost
- različica
- zelo
- je
- we
- web
- spletne storitve
- dobrodošli
- Kaj
- kdaj
- medtem
- z
- brez
- pisati
- pisanje
- pisni
- zefirnet
- nič