IRC-Galleria

Garo

Garo

tänään geokätköilee. jei
Galtsun yhteisöihin on juuri julkaistu kävijä- ja kommenttilaskurit, jotka kertovat jatkuvasti totuudenmukaisen tiedon kuinka monta kertaa yhteisössä on käyty ja kuinka monta kommenttia yhteisöön on kirjoitettu vuoden 2008 heinäkuusta lähtien.

Pystyimme alustamaan käyntilaskurit alkamaan vuoden 2008 heinäkuusta alkaen käyttämällä hyväksi yhteisöistä keräämiämme tilastotietoja. Tämä blogaus valoittaa Galtsun yhteisöissä olevan kävijä- ja kommenttilaskurin taustalla olevasta tekniikasta ja siitä, miten nämä ovat toteutettu.

Galtsuun tulee jatkuvasti valtava määrä sivulatauksia, jotka jakautuvat yli miljoonaan yhteisöön. Miljoonan laskurin ylläpitäminen ja kasvattaminen jokaisella sivunlatauksella esimerkiksi perinteisessä tietokannassa olisi mahdollista, mutta aiheuttaisi täysin tarpeetonta kuormitusta, joka hidastaisi Galtsun muuta toimintaa.

Toisena vaihtoehtona mietittiin laskureiden tallettamista memcached-klusteriin. Memcached on erittäin nopea muistinvarainen tietovarasto, johon voi tallettaa tietoa yksittäisten avaimien taakse. Avaimena voisi toimia esimerkiksi yhteisön uniikki tunniste (id) ja arvona käyntien määrä. Tämä sopisi hyvin, sillä memcachedissa on suora komento, jolla voisi kasvattaa tälläisen laskurin arvoa jokaisella sivulatauksella. Haittapuolena memcached ei pysty tallettamaan muistissa olevia laskureita levylle, joten esimerkiksi palvelimen uudelleenkäynnistyksen yhteydessä kaikki sivulataukset nollautuisivat.

Pelastavana ratkaisuna päädyttiin asentamaan Redis-palvelin, joka on ominaisuuksiltaan lyhyesti tiivistettynä "memcached joka osaa tallettaa tiedot välillä levylle." Redis on lisäksi käytännössä yhtä nopea kuin memcached ja siitä löytyy samanlainen laskurinkasvatustoiminto kuin memcachedissa.

Jokaisella sivunlatauksella Gallerian takana toimiva php-koodi käy
kasvattamassa Redis:ssä olevaa laskuria nimeltä
"community:$community_id:impressioncount", jossa $community_id on yhteisön uniikki tunniste. Vastauksena saadaan laskurin uusi arvo, eli yhteisön käyntimäärä, joka voidaan näyttää yhteisön tiedoissa. Koko operaatiossa kuluu aikaa alle tuhannesosasekuntti (keskimäärin 0.25 ms)!

Etkö vielä ole jäsen?

Liity ilmaiseksi

Rekisteröityneenä käyttäjänä voisit

Lukea ja kirjoittaa kommentteja, kirjoittaa blogia ja keskustella muiden käyttäjien kanssa lukuisissa yhteisöissä.