SmugMugilla on kaksi erittäin suurta verkkovalokuvaalustaa, SmugMug ja Flickr, jonka avulla yli 100 miljoonaa asiakasta voivat turvallisesti tallentaa, etsiä, jakaa ja myydä kymmeniä miljardeja valokuvia. Asiakkaat, jotka lataavat ja etsivät vuosikymmeniä kestäneitä valokuvia, auttoivat muuttamaan haun kriittiseksi infrastruktuuriksi, joka kasvoi tasaisesti siitä lähtien, kun SmugMug käytti sitä ensimmäisen kerran. Amazon CloudSearch julkaisussa 2012, jota seuraa Amazon OpenSearch-palvelu vuodesta 2018 lähtien, miljardeja asiakirjoja ja teratavuja hakutallennustilaa saavutettuaan.
Täällä SmugMug Staff Engineer Lee Shepherd jakaa SmugMugin hakuarkkitehtuurin, jota käytetään julkaisemaan, täyttämään ja peilaamaan live-liikennettä useisiin klustereihin. SmugMug käyttää näitä putkilinjoja vertailuun, validointiin ja uusiin kokoonpanoihin siirtymiseen, mukaan lukien Graviton-pohjaiset r6gd.2xlarge-esiintymät i3.2xlargesta, sekä testaus. Amazon OpenSearch palvelimeton. Katamme kolme julkaisuun, täyttöön ja kyselyihin käytettyä putkilinjaa ilman, että tuodaan piikkisiä epärealistisia liikennemalleja ja ilman vaikutusta tuotantopalveluihin.
Prosessissa on kaksi tärkeintä arkkitehtonista osaa:
- Kestävä totuuden lähde indeksitiedoille. Se on paras käytäntö ja osa varmuuskopiointistrategiaamme, että meillä on kestävä myymälä OpenSearch-hakemiston lisäksi Amazon DynamoDB tarjoaa skaalautuvuuden ja integroinnin AWS Lambda mikä yksinkertaistaa paljon prosessia. Käytämme DynamoDB:tä muihin ei-hakupalveluihin, joten tämä oli luonnollinen sopivuus.
- Lambda-toiminto tietojen julkaisemiseen totuuden lähteestä OpenSearchiin. Käyttämällä funktion aliaksia auttaa suorittamaan useita saman lambda-toiminnon määrityksiä samanaikaisesti ja on avain tietojen synkronointiin.
Julkaiseminen
Julkaisuputkia ohjaavat tapahtumat, kuten käyttäjä syöttää avainsanoja tai kuvatekstejä, uudet lataukset tai tunnisteen havaitseminen Amazonin tunnistus. Nämä tapahtumat käsitellään yhdistämällä tietoja muutamista muista omaisuuskaupoista, kuten Amazon Aurora MySQL -yhteensopiva versio ja Amazonin yksinkertainen tallennuspalvelu (Amazon S3), ennen kuin kirjoitat yhden kohteen DynamoDB:hen.
DynamoDB:hen kirjoittaminen käynnistää Lambda-julkaisutoiminnon DynamoDB Streams Kinesis Adapter, joka ottaa joukon päivitettyjä kohteita DynamoDB:stä ja indeksoi ne OpenSearchiin. DynamoDB Streams Kinesis Adapter -sovittimen käyttämisessä on muita etuja, kuten vaadittavien samanaikaisten lambda-osien määrän vähentäminen.
Julkaisu Lambda-funktio käyttää ympäristömuuttujia määrittääkseen, mihin OpenSearch-verkkotunnukseen ja -hakemistoon julkaistaan. Tuotantoalias on määritetty kirjoittamaan tuotanto OpenSearch-toimialueelle DynamoDB-taulukon tai Kinesis Streamin ulkopuolella
Uusia määrityksiä testattaessa tai siirrettäessä siirtoalias määritetään kirjoittamaan uuteen OpenSearch-toimialueeseen, mutta käyttämään samaa triggeriä kuin tuotantoalias. Tämä mahdollistaa tietojen kaksoisindeksoinnin molempiin OpenSearch Service -verkkotunnuksiin samanaikaisesti.
Tässä on esimerkki DynamoDB-taulukkokaaviosta:
LastUpdated-arvoa käytetään asiakirjaversiona indeksoitaessa, jolloin OpenSearch voi hylätä kaikki epäjärjestyksessä olevat päivitykset.
Täyttö
Nyt kun muutoksia julkaistaan molempiin verkkotunnuksiin, uusi verkkotunnus (hakemisto) on täytettävä historiallisilla tiedoilla. Hiljattain luodun hakemiston täyttämiseksi yhdistelmä Amazonin yksinkertainen jonopalvelu (Amazon SQS) ja DynamoDB:tä käytetään. Komentosarja täyttää SQS-jonon viesteillä, jotka sisältävät ohjeet rinnakkaisskannaus DynamoDB-taulukon segmentti.
SQS-jono käynnistää Lambda-toiminnon, joka lukee viestiohjeet, hakee erän kohteita vastaavasta DynamoDB-taulukon segmentistä ja kirjoittaa ne OpenSearch-hakemistoon. Uudet viestit kirjoitetaan SQS-jonoon segmentin etenemisen seuraamiseksi. Kun segmentti on valmis, SQS-jonoon ei kirjoiteta enää viestejä ja prosessi pysähtyy.
Samanaikaisuus määräytyy segmenttien lukumäärän mukaan, ja Lambdan samanaikaisuuden skaalaus tarjoaa lisäsäätimiä. SmugMug pystyy indeksoimaan yli miljardi dokumenttia tunnissa OpenSearch-kokoonpanossaan, mutta sillä ei ole mitään vaikutusta tuotantoalueeseen.
NodeJS AWS-SDK -pohjaista komentosarjaa käytetään SQS-jonon siementämiseen. Tässä on katkelma SQS-määrityskomentosarjan vaihtoehdoista:
Tuloksena olevan SQS-viestin muodon lisäksi:
Peilaus
Viimeinen, meidän peilattu hakukysely tulokset suoritetaan lähettämällä OpenSearch-kysely SQS-jonoon tuotantoalueen lisäksi. SQS-jono käynnistää Lambda-toiminnon, joka toistaa kyselyn replikatoimialueelle. Näiden pyyntöjen hakutuloksia ei lähetetä millekään käyttäjälle, mutta ne mahdollistavat tuotantokuorman replikoinnin testattavassa OpenSearch-palvelussa ilman, että se vaikuttaa tuotantojärjestelmiin tai asiakkaisiin.
Yhteenveto
Uutta OpenSearch-verkkotunnusta tai -kokoonpanoa arvioitaessa tärkeimmät mittarit, joista olemme kiinnostuneita, ovat kyselyn viiveen tehokkuus, nimittäin käytetyt latenssit (viiveet per aika) ja mikä tärkeintä haun latenssit. Siirtyessämme Graviton R6gd:hen näimme noin 40 prosenttia pienemmät P50-P99-viiveet sekä samankaltaisen suorittimen käytön lisäyksen i3:een verrattuna (ottaen huomioon Gravitonin alhaisemmat kustannukset). Toinen tervetullut etu oli ennakoitavampi ja valvottavampi JVM-muistin paine, joka johtuu roskienkeruumuutoksista, jotka johtuvat G1GC:n lisäämisestä R6gd:hen ja muihin uusiin instansseihin.
Tämän putkilinjan avulla testaamme myös OpenSearch Serverlessia ja löydämme sen parhaat käyttötapaukset. Olemme innoissamme palvelusta ja aiomme saada aikaan täysin palvelimettoman arkkitehtuurin. Pysy kuulolla tuloksista.
Tietoja Tekijät
Lee Shepherd on SmugMug Staff -ohjelmistosuunnittelija
Aydn Bekirov on Amazon Web Services pääasiallinen tekninen asiakaspäällikkö
- SEO-pohjainen sisällön ja PR-jakelu. Vahvista jo tänään.
- PlatoData.Network Vertical Generatiivinen Ai. Vahvista itseäsi. Pääsy tästä.
- PlatoAiStream. Web3 Intelligence. Tietoa laajennettu. Pääsy tästä.
- PlatoESG. hiili, CleanTech, energia, ympäristö, Aurinko, Jätehuolto. Pääsy tästä.
- PlatonHealth. Biotekniikan ja kliinisten kokeiden älykkyys. Pääsy tästä.
- Lähde: https://aws.amazon.com/blogs/big-data/smugmugs-durable-search-pipelines-for-amazon-opensearch-service/
- :On
- :ei
- 1
- 100
- 12
- 14
- 20
- 2012
- 2018
- 40
- 7
- 9
- a
- pystyy
- Meistä
- Tili
- lisä-
- Lisäksi
- lisä-
- Jälkeen
- sallia
- Salliminen
- pitkin
- Myös
- Amazon
- Amazon Web Services
- an
- ja
- Toinen
- Kaikki
- arkkitehtuurin
- arkkitehtuuri
- OVAT
- AS
- etu
- At
- aamurusko
- AWS
- Varmuuskopiointi
- perustua
- BE
- ennen
- ovat
- benchmark
- hyödyttää
- Hyödyt
- PARAS
- Jälkeen
- Miljardi
- miljardeja
- sekä
- mutta
- by
- kuvatekstit
- Muutokset
- kokoelma
- yhdistelmä
- yhdistely
- verrattuna
- yhteensopiva
- Täydentää
- samanaikainen
- Konfigurointi
- määritetty
- sisältää
- valvonta
- vastaava
- kustannukset
- kattaa
- prosessori
- luotu
- kriittinen
- Kriittinen infrastruktuuri
- Asiakkaat
- tiedot
- vuosikymmeninä
- Detection
- Määrittää
- määritetty
- asiakirja
- asiakirjat
- verkkotunnuksen
- verkkotunnuksia
- ajanut
- kukin
- mahdollistaa
- mahdollistaa
- päätepiste
- insinööri
- kirjoittamalla
- täysin
- ympäristö
- Eetteri (ETH)
- arviointiin
- Tapahtumat
- esimerkki
- innoissaan
- harvat
- Fields
- löytäminen
- Etunimi
- sovittaa
- seurannut
- varten
- muoto
- alkaen
- täysin
- toiminto
- voitto
- Kasvava
- Olla
- korkeus
- auttanut
- auttaa
- historiallinen
- tunti
- HTML
- http
- HTTPS
- i
- i3
- ID
- Vaikutus
- merkittävästi
- in
- Mukaan lukien
- indeksi
- indeksit
- Infrastruktuuri
- tapauksia
- ohjeet
- integraatio
- aikovat
- kiinnostunut
- tulee
- käyttöön
- vedotaan
- kohdetta
- iteraatio
- SEN
- itse
- jpg
- Pitää
- pito
- avain
- avainsanat
- Merkki
- suuri
- Viive
- käynnistää
- Lee
- pitää
- elää
- kuormitus
- Erä
- alentaa
- tärkein
- Muisti
- viesti
- viestien
- Metrics
- vaeltaa
- siirtyvät
- muutto
- miljoona
- miljoonaa asiakasta
- peili
- lisää
- eniten
- liikkua
- moninkertainen
- MySQL
- nimi
- nimittäin
- Luonnollinen
- tarpeet
- Uusi
- hiljattain
- seuraava
- Nro
- numero
- of
- pois
- on
- verkossa
- toimii
- Vaihtoehdot
- opts
- or
- Muut
- meidän
- Parallel
- osa
- kuviot
- varten
- prosentti
- suorituskyky
- kuva
- Valokuvat
- kappaletta
- putki
- Platforms
- Platon
- Platonin tietotieto
- PlatonData
- Ennustettavissa
- paine
- edellinen
- Pääasiallinen
- prosessi
- jalostettu
- tuotanto
- Edistyminen
- mikäli
- tarjoaa
- julkaista
- julkaistu
- Julkaiseminen
- päästäisiin
- vähentämällä
- vastaus
- pyynnöt
- tarvitaan
- Saatu ja
- tulokset
- ajaa
- turvallisesti
- sama
- näki
- skaalautuvuus
- skaalaus
- käsikirjoitus
- Haku
- haku
- siemenet
- segmentti
- segmentit
- Myydään
- lähettäminen
- lähetetty
- serverless
- palvelu
- Palvelut
- Jaa:
- osakkeet
- samankaltainen
- Yksinkertainen
- samanaikaisesti
- koska
- single
- pätkä
- So
- Tuotteemme
- lähde
- Henkilöstö
- pysyä
- tasaisesti
- Lopettaa
- Levytila
- verkkokaupasta
- varastot
- Strategia
- puroihin
- niin
- järjestelmät
- taulukko
- vie
- Tekninen
- kymmeniä
- testi
- Testaus
- kuin
- että
- -
- Lähde
- heidän
- Niitä
- Siellä.
- Nämä
- tätä
- kolmella
- Kautta
- aika
- että
- otti
- raita
- liikenne
- laukaista
- Totuus
- VUORO
- kaksi
- varten
- päivitetty
- Päivitykset
- Ladataan
- URL
- Käyttö
- käyttää
- Käytä koteloita
- käytetty
- käyttäjä
- käyttötarkoituksiin
- käyttämällä
- VAHVISTA
- arvo
- versio
- hyvin
- oli
- we
- verkko
- verkkopalvelut
- tervetuloa
- Mitä
- kun
- vaikka
- with
- ilman
- kirjoittaa
- kirjoittaminen
- kirjallinen
- zephyrnet
- nolla-