Redis-välimuisti ja viestinvälitys (Pub/Sub, Streams) · Oppitunti

Tapahtumaohjautuva arkkitehtuuri

Tutustukaa siihen, miten Redis Pub/Sub voi tukea tapahtumaohjautuvien mikropalvelujen välistä viestintää ja ilmoituksia.

Oppitunti 3/411 vaihetta

Tapahtumaohjautuva arkkitehtuuri on ilmainen Redis-välimuisti ja viestinvälitys (Pub/Sub, Streams)-oppitunti CoddyKitissä. Tämä on oppitunti 3/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu Redis-välimuisti ja viestinvälitys (Pub/Sub, Streams)-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Redis-välimuisti ja viestinvälitys (Pub/Sub, Streams)-kurssilla on yhteensä 4 oppituntia.

Mikä on tapahtumapohjainen arkkitehtuuri?

Tervetuloa! Tässä oppitunnissa tutustumme tapahtumapohjaiseen arkkitehtuuriin (Event-Driven Architecture, EDA) ja siihen, miksi Redis Pub/Sub sopii siihen erinomaisesti.

EDA on ohjelmistojen suunnittelumalli, jossa komponentit kommunikoivat reagoimalla tilan muutoksiin, joita kutsutaan tapahtumiksi.

  • Ajattele sitä uutiskanavana: tuottajat julkaisevat uutisia (tapahtumia), ja kaikki kiinnostuneet (kuluttajat) voivat virittäytyä kuuntelemaan.

EDA:n keskeiset käsitteet

EDA perustuu kolmeen pääkomponenttiin:

  • Tapahtumat: Tietue jostakin tapahtuneesta asiasta (esim. 'käyttäjä rekisteröityi' tai 'tilaus tehtiin'). Ne ovat muuttumattomia tosiasioita.
  • Tapahtumatuottajat: Palvelut, jotka havaitsevat tapahtuman ja julkaisevat sen tapahtumakanavalle.
  • Tapahtumakuluttajat: Palvelut, jotka tilaavat tapahtumakanavia ja reagoivat tiettyihin tapahtumiin.

Nämä komponentit kommunikoivat epäsuorasti.

Miksi käyttää EDA:ta?

EDA tarjoaa merkittäviä etuja erityisesti monimutkaisissa järjestelmissä:

  • Löyhä kytkentä: Tuottajien ei tarvitse tietää kuluttajista, joten palvelut pysyvät itsenäisinä.
  • Skaalautuvuus: Voitte lisätä uusia kuluttajia helposti muuttamatta tuottajia.
  • Reaaliaikainen reagointi: Tapahtumat käsitellään niiden tapahtuessa, mikä mahdollistaa välittömän reagoinnin.
  • Joustavuus: Uusia ominaisuuksia voidaan lisätä yksinkertaisesti luomalla uusia kuluttajia.

Redis Pub/Sub tapahtumaväylänä

Redis Pub/Sub toimii ihanteellisena tapahtumaväylänä EDA:lle.

  • Tapahtumaväylä on tapahtumien keskitetty viestintäkanava.
  • Redisissä kanavat toimivat tällaisina tapahtumaväylinä.

Tuottajat julkaisevat tapahtumia Redis-kanavalle, ja kaikki kyseisen kanavan tilanneet kiinnostuneet kuluttajat vastaanottavat tapahtuman.

Mikropalvelujen irtikytkentä

Yksi EDA:n ja Redis Pub/Subin suurimmista eduista on mikropalvelujen irtikytkentä.

Kuvittele käyttäjien rekisteröintipalvelu. Ilman EDA:ta se saattaisi kutsua suoraan sähköpostipalvelua, lokipalvelua ja niin edelleen.

EDA:n kanssa rekisteröintipalvelu julkaisee vain 'käyttäjä rekisteröityi' -tapahtuman. Sähköposti- ja lokipalvelut tilaavat tapahtuman ja reagoivat siihen itsenäisesti. Tämä helpottaa palvelujen rakentamista ja ylläpitoa!

Esimerkki: käyttäjän rekisteröitymistapahtuma

Tarkastellaan käytännön esimerkkiä: käyttäjä rekisteröityy sovellukseenne.

User Service (tuottaja) rekisteröi käyttäjän ja julkaisee sitten user:registered-tapahtuman Redis-kanavalle.

Muut palvelut, kuten Notification Service tai Analytics Service (kuluttajat), voivat sitten tilata tämän kanavan ja suorittaa omat tehtävänsä.

Tuottaja: tapahtuman julkaiseminen

Näin Python-palvelu voisi julkaista user:registered-tapahtuman uuden käyttäjän rekisteröitymisen jälkeen. Varmista, että Redis on käynnissä!

import redis
import json
import time

r = redis.Redis(decode_responses=True)

def register_user(u_id, name, mail):
    print(f"User {name} registering...")
    event_data = {
        "user_id": u_id,
        "username": name,
        "email": mail,
        "timestamp": time.time()
    }
    r.publish("user_events", json.dumps(event_data))
    print(f"Published 'user:registered' for {name}")

if __name__ == "__main__":
    register_user("101", "alice", "alice@example.com")
    time.sleep(0.5)
    register_user("102", "bob", "bob@example.com")

Kuluttaja: tapahtumaan reagoiminen

Katsotaan seuraavaksi, kuinka Notification Service (kuluttaja) voisi tilata kanavan user_events ja lähettää tervetuloviestin sähköpostitse.

Suorita tämä koodi erillisessä päätteessä tuottajan käynnistämisen jälkeen.

import redis
import json
import time

r = redis.Redis(decode_responses=True)
p = r.pubsub()

def send_welcome_email(user_data):
    print(f"Sending email to {user_data['email']}")
    time.sleep(0.3) # Simulate sending
    print(f"Email sent to {user_data['username']}.")

if __name__ == "__main__":
    print("Notification Service started.")
    print("Subscribing to 'user_events'...")
    p.subscribe('user_events')
    for msg in p.listen():
        if msg['type'] == 'message':
            try:
                data = json.loads(msg['data'])
                print(f"Received: {data['username']}")
                send_welcome_email(data)
            except json.JSONDecodeError:
                print(f"Error decoding: {msg['data']}")
        time.sleep(0.01)

Ilmoitukset ja reaaliaikaiset päivitykset

Mikropalvelujen välisen viestinnän lisäksi Redis Pub/Sub soveltuu EDA:ssa erinomaisesti reaaliaikaisiin ilmoituksiin.

  • Chat-sovellukset: Lähetä uudet viestit heti kaikille osallistujille.
  • Reaaliaikaiset koontinäytöt: Päivitä käyttäjien mittarit tai tila reaaliajassa.
  • Hälytykset: Ilmoita järjestelmän kriittisistä tapahtumista ylläpitäjille.

Pub/Subin välittömyys tekee näiden käyttötapausten toteuttamisesta helppoa.

Pikatarkistus: EDA ja Redis

Mikä seuraavista kuvaa parhaiten Redis Pub/Subin roolia tapahtumapohjaisessa arkkitehtuurissa?

Kertaus: EDA ja Redis Pub/Sub

Olet oppinut, että Redis Pub/Sub on tehokas työkalu tapahtumapohjaisten arkkitehtuurien rakentamiseen!

  • EDA perustuu tapahtumiin, tuottajiin ja kuluttajiin viestinnässä.
  • Redis Pub/Sub toimii tehokkaana tapahtumaväylänä.
  • Se mahdollistaa mikropalvelujen löyhän kytkennän ja skaalautuvuuden.
  • Se sopii erinomaisesti reaaliaikaisiin ilmoituksiin ja palvelujen väliseen viestintään.

Tämä malli tekee sovelluksistasi vikasietoisempia ja joustavampia. Hienosti tehty!

Aloita maksutta

Opi Redis-välimuisti ja viestinvälitys (Pub/Sub, Streams) tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
12
Oppitunnit
48

Usein kysytyt kysymykset

Onko oppitunti ”Tapahtumaohjautuva arkkitehtuuri” ilmainen?

Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Redis-välimuisti ja viestinvälitys (Pub/Sub, Streams)-oppimispolun 3 oppituntia, myös oppitunnin “Tapahtumaohjautuva arkkitehtuuri”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Redis-välimuisti ja viestinvälitys (Pub/Sub, Streams)-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Tapahtumaohjautuva arkkitehtuuri”?

Tutustukaa siihen, miten Redis Pub/Sub voi tukea tapahtumaohjautuvien mikropalvelujen välistä viestintää ja ilmoituksia. Harjoittelet Redis-välimuisti ja viestinvälitys (Pub/Sub, Streams)-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Redis-välimuisti ja viestinvälitys (Pub/Sub, Streams)-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Redis-välimuisti ja viestinvälitys (Pub/Sub, Streams)-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 3/4.

Kuinka kauan ”Tapahtumaohjautuva arkkitehtuuri”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä Redis-välimuisti ja viestinvälitys (Pub/Sub, Streams)-oppitunnilla?

Kyllä. Jokainen Redis-välimuisti ja viestinvälitys (Pub/Sub, Streams)-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. Tilaukset hahmonsovituksella
  2. Reaaliaikaisen chatin suunnittelu
  3. Tapahtumaohjautuva arkkitehtuuri
  4. Läsnäolon ja online-tilan seuranta
← Takaisin: Redis-välimuisti ja viestinvälitys (Pub/Sub, Streams)