A SmugMug két nagyon nagy online fotóplatformot üzemeltet, SmugMug és a Flickr, amely több mint 100 millió ügyfél számára teszi lehetővé több tízmilliárd fénykép biztonságos tárolását, keresését, megosztását és eladását. A több évtizedes fényképeket feltöltő és a köztük kereső ügyfelek segítettek a keresést kritikus infrastruktúrává alakítani, ami folyamatosan nőtt a SmugMug első használata óta. Amazon CloudSearch 2012-ben, majd Amazon OpenSearch szolgáltatás 2018 óta, miután elérte a több milliárd dokumentumot és a terabájtnyi keresési tárhelyet.
Itt Lee Shepherd, a SmugMug személyzeti mérnöke megosztja a SmugMug keresési architektúráját, amelyet az élő forgalom több fürt számára történő közzétételére, háttérkitöltésére és tükrözésére használnak. A SmugMug ezeket a folyamatokat használja az összehasonlításhoz, az ellenőrzéshez és az új konfigurációkra való migráláshoz, beleértve a Graviton alapú r6gd.2xlarge példányokat az i3.2xlarge-ból, valamint a tesztelést Amazon OpenSearch kiszolgáló nélküli. A közzétételhez, a háttérkitöltéshez és a lekérdezéshez használt három folyamatot fedjük le anélkül, hogy tüskés irreális forgalmi mintákat vezetnénk be, és anélkül, hogy bármilyen hatással lenne a termelési szolgáltatásokra.
A folyamat szempontjából két fő építészeti elem van:
- Tartós igazságforrás az indexadatokhoz. Ez a legjobb gyakorlat és tartalék stratégiánk része, hogy az OpenSearch indexen túl is legyen tartós üzletünk, és Amazon DynamoDB méretezhetőséget és integrációt biztosít AWS Lambda ami nagyban leegyszerűsíti a folyamatot. A DynamoDB-t más, nem keresési szolgáltatásokhoz használjuk, így ez természetes volt.
- Lambda funkció az igazság forrásából származó adatok közzétételéhez az OpenSearch rendszerben. Használata függvényálnevek segít ugyanannak a Lambda funkciónak több konfigurációjának egyidejű futtatásában, és kulcsfontosságú az adatok szinkronban tartásában.
Kiadás
A közzétételi folyamatot olyan események hajtják, mint például a kulcsszavak vagy feliratok beírása, új feltöltések vagy címkeészlelés. Amazon felismerés. Ezeket az eseményeket a rendszer feldolgozza, egyesítve néhány más eszközboltból származó adatokat, például Amazon Aurora MySQL-kompatibilis kiadás és a Amazon Simple Storage Service (Amazon S3), mielőtt egyetlen elemet írna a DynamoDB-be.
A DynamoDB-be való írás egy Lambda közzétételi funkciót hív meg a következőn keresztül DynamoDB Streams Kinesis Adapter, amely átvesz egy csomó frissített elemet a DynamoDB-ből, és indexeli őket az OpenSearch-be. A DynamoDB Streams Kinesis Adapter használatának további előnyei is vannak, például csökkenti a szükséges egyidejű lambdák számát.
A közzétételi Lambda függvény környezeti változók segítségével határozza meg, hogy melyik OpenSearch tartományban és indexben tegye közzé. Az éles álnév úgy van beállítva, hogy a DynamoDB táblán vagy a Kinesis Streamen kívül írjon az éles OpenSearch tartományba
Új konfigurációk tesztelésekor vagy áttelepítésekor a migrációs álnév úgy van beállítva, hogy az új OpenSearch tartományba írjon, de ugyanazt az eseményindítót használja, mint az éles álnév. Ez lehetővé teszi az adatok kettős indexelését mindkét OpenSearch szolgáltatási tartományba egyidejűleg.
Íme egy példa a DynamoDB táblasémára:
A 'LastUpdated' értéket használja a dokumentum verziója az indexelés során, így az OpenSearch visszautasíthat minden nem megfelelő frissítést.
Visszatöltés
Most, hogy mindkét tartomány módosításait közzéteszik, az új tartományt (indexet) ki kell tölteni előzményadatokkal. Egy újonnan létrehozott index háttérkitöltéséhez a kombinációja Amazon Simple Queue Service (Amazon SQS) és DynamoDB-t használnak. A parancsfájl az SQS-sort olyan üzenetekkel tölti fel, amelyek utasításokat tartalmaznak párhuzamos szkennelés a DynamoDB tábla egy szegmense.
Az SQS-sor elindít egy Lambda-függvényt, amely beolvassa az üzenet utasításait, lekér egy tételt a DynamoDB tábla megfelelő szegmenséből, és beírja azokat egy OpenSearch indexbe. Az új üzenetek az SQS-sorba íródnak, hogy nyomon követhessék a szegmensen való előrehaladást. A szegmens befejezése után a rendszer nem ír több üzenetet az SQS-sorba, és a folyamat leáll.
Az egyidejűséget a szegmensek száma határozza meg, a Lambda párhuzamossági skálázás pedig további vezérlőket biztosít. A SmugMug óránként több mint 1 milliárd dokumentumot képes indexelni az OpenSearch konfigurációjában, miközben nincs hatással az éles tartományra.
Egy NodeJS AWS-SDK alapú szkriptet használnak az SQS várólista indításához. Íme egy részlet az SQS konfigurációs szkript opcióiból:
Az eredményül kapott SQS üzenet formátumával együtt:
Tükrözés
Végül a miénk tükrözött keresési lekérdezés Az eredmények úgy futnak le, hogy OpenSearch lekérdezést küldenek egy SQS-sorba, az éles tartományon kívül. Az SQS-sor elindít egy Lambda-függvényt, amely újrajátssza a lekérdezést a replikatartományba. Az ezekből a kérésekből származó keresési eredményeket a rendszer nem küldi el egyetlen felhasználónak sem, de lehetővé teszik a tesztelés alatt álló OpenSearch szolgáltatás termelési terhelésének replikálását anélkül, hogy ez hatással lenne az éles rendszerekre vagy az ügyfelekre.
Következtetés
Egy új OpenSearch tartomány vagy konfiguráció értékelésekor a fő mérőszámok, amelyekre kíváncsiak vagyunk, a lekérdezés késleltetési teljesítménye, nevezetesen az igénybe vett késések (időnkénti késések), és ami a legfontosabb a keresési késések. A Graviton R6gd-re való átállás során körülbelül 40 százalékkal alacsonyabb P50-P99 késleltetést tapasztaltunk, valamint hasonló növekedést tapasztaltunk a CPU-használatban az i3-hoz képest (figyelmen kívül hagyva a Graviton alacsonyabb költségeit). Egy másik örvendetes előny a jobban kiszámítható és nyomon követhető JVM memórianyomás volt a szemétgyűjtési változások miatt, amelyek a G1GC hozzáadásával az R6gd-hez és más új példányokhoz vezettek.
Ezzel a folyamattal teszteljük az OpenSearch Serverless-t is, és megtaláljuk a legjobb használati eseteket. Izgatottan várjuk ezt a szolgáltatást, és teljes mértékben szándékunkban áll egy teljesen szerver nélküli architektúrát idővel megvalósítani. Maradjon velünk az eredményekért.
A szerzőkről
Lee Shepherd SmugMug személyzeti szoftvermérnök
Aydn Bekirov az Amazon Web Services fő műszaki ügyfélmenedzsere
- SEO által támogatott tartalom és PR terjesztés. Erősödjön még ma.
- PlatoData.Network Vertical Generative Ai. Erősítse meg magát. Hozzáférés itt.
- PlatoAiStream. Web3 Intelligence. Felerősített tudás. Hozzáférés itt.
- PlatoESG. Carbon, CleanTech, Energia, Környezet, Nap, Hulladékgazdálkodás. Hozzáférés itt.
- PlatoHealth. Biotechnológiai és klinikai vizsgálatok intelligencia. Hozzáférés itt.
- Forrás: https://aws.amazon.com/blogs/big-data/smugmugs-durable-search-pipelines-for-amazon-opensearch-service/
- :is
- :nem
- 1
- 100
- 12
- 14
- 20
- 2012
- 2018
- 40
- 7
- 9
- a
- Képes
- Rólunk
- Fiók
- hozzáadott
- mellett
- További
- Után
- lehetővé
- lehetővé téve
- mentén
- Is
- amazon
- Az Amazon Web Services
- an
- és a
- Másik
- bármilyen
- építészeti
- építészet
- VANNAK
- AS
- vagyontárgy
- At
- Sárgásvörös
- AWS
- mentés
- alapján
- BE
- előtt
- hogy
- benchmark
- haszon
- Előnyök
- BEST
- Túl
- Billió
- milliárd
- mindkét
- de
- by
- feliratok
- Változások
- gyűjtemény
- kombináció
- kombinálása
- képest
- összeegyeztethető
- Befejezi
- egyidejű
- Configuration
- konfigurálva
- tartalmaz
- ellenőrzések
- Megfelelő
- kiadások
- terjed
- CPU
- készítette
- kritikai
- Kritikus infrastruktúra
- Ügyfelek
- dátum
- évtizedek
- Érzékelés
- Határozzuk meg
- eltökélt
- dokumentum
- dokumentumok
- domain
- domainek
- hajtott
- minden
- lehetővé teszi
- lehetővé téve
- Endpoint
- mérnök
- belépés
- teljesen
- Környezet
- Eter (ETH)
- értékelő
- események
- példa
- izgatott
- kevés
- Fields
- megtalálása
- vezetéknév
- megfelelő
- követ
- A
- formátum
- ból ből
- teljesen
- funkció
- Nyereség
- Növekvő
- Legyen
- magasság
- segített
- segít
- történeti
- óra
- HTML
- http
- HTTPS
- i
- i3
- ID
- Hatás
- ami fontos
- in
- Beleértve
- index
- indexek
- Infrastruktúra
- példányok
- utasítás
- integráció
- szándékozik
- érdekelt
- bele
- bevezetéséről
- behívja
- tételek
- ismétlés
- ITS
- maga
- jpg
- Tart
- tartás
- Kulcs
- kulcsszavak
- Címke
- nagy
- Késleltetés
- elindítja
- Lee
- mint
- él
- kiszámításának
- Sok
- alacsonyabb
- Fő
- Memory design
- üzenet
- üzenetek
- Metrics
- vándorol
- vándorló
- elvándorlás
- millió
- millió ügyfél
- tükör
- több
- a legtöbb
- mozog
- többszörös
- MySQL
- név
- ugyanis
- Természetes
- igények
- Új
- újonnan
- következő
- nem
- szám
- of
- kedvezmény
- on
- online
- működik
- Opciók
- opts
- or
- Más
- mi
- Párhuzamos
- rész
- minták
- mert
- százalék
- teljesítmény
- képek
- darabok
- csővezeték
- Platformok
- Plató
- Platón adatintelligencia
- PlatoData
- Kiszámítható
- nyomás
- előző
- Fő
- folyamat
- feldolgozott
- Termelés
- Haladás
- feltéve,
- biztosít
- közzétesz
- közzétett
- Kiadás
- elérése
- csökkentő
- válasz
- kéri
- kötelező
- kapott
- Eredmények
- futás
- biztosan
- azonos
- látta
- skálázhatóság
- skálázás
- forgatókönyv
- Keresés
- keres
- mag
- részes
- szegmensek
- elad
- elküldés
- küldött
- vagy szerver
- szolgáltatás
- Szolgáltatások
- Megosztás
- Megoszt
- hasonló
- Egyszerű
- egyszerre
- óta
- egyetlen
- töredék
- So
- szoftver
- forrás
- Személyzet
- tartózkodás
- folyamatosan
- Leállítja
- tárolás
- tárolni
- árnyékolók
- Stratégia
- patakok
- ilyen
- Systems
- táblázat
- tart
- Műszaki
- tíz
- teszt
- Tesztelés
- mint
- hogy
- A
- The Source
- azok
- Őket
- Ott.
- Ezek
- ezt
- három
- Keresztül
- idő
- nak nek
- vett
- vágány
- forgalom
- kiváltó
- igazság
- FORDULAT
- kettő
- alatt
- frissítve
- Frissítés
- Feltöltés
- URL
- Használat
- használ
- felhasználási esetek
- használt
- használó
- használ
- segítségével
- ÉRVÉNYESÍT
- érték
- változat
- nagyon
- volt
- we
- háló
- webes szolgáltatások
- fogadtatás
- Mit
- amikor
- míg
- val vel
- nélkül
- ír
- írás
- írott
- zephyrnet
- nulla