Tapahtumaohjautuva arkkitehtuuri
Tutustukaa siihen, miten Redis Pub/Sub voi tukea tapahtumaohjautuvien mikropalvelujen välistä viestintää ja ilmoituksia.
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!
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
- Tilaukset hahmonsovituksella
- Reaaliaikaisen chatin suunnittelu
- Tapahtumaohjautuva arkkitehtuuri
- Läsnäolon ja online-tilan seuranta