Oikeiden työkalujen ja kuvioiden käyttäminen tapahtumiin perustuville arkkitehtuurille

Tapahtumiin perustuvat arkkitehtuurit tukevat tapahtumien tehokasta tuotantoa ja kulutusta, jotka ilmoittavat järjestelmän tai sovelluksen tilojen muutoksista. Nämä arkkitehtuurit mahdollistavat järjestelmien ja tukiprosessien väliset joustavat yhteydet ja lähes reaaliaikaiset päivitykset, jotka toimivat eri järjestelmissä. Vaikka tapahtumiin perustuvien arkkitehtuurien hyödyt ovat helposti näkyvissä, toteutuksen lisätiedot eivät ole aina yhtä selkeitä. Mitä ominaisuuksia sinun tulisi huomioida tapahtumiin perustuvissa arkkitehtuurikuvioissa? Mitä tiettyjä ongelmia nämä kuviot ratkaisevat? Mitä erityisiä huomioitavia asioita sovelletaan ratkaisuihisi ja mitkä ovat optimaaliset tavat ratkaista ne?

Tämä opas esittää kuviot, joita käytetään tapahtumiin perustuvien optimaalisten arkkitehtuurien rakentamiseen, kun käytät Salesforce-teknologioita. Se käsittelee myös Salesforcesta saatavilla olevia työkaluja ja tarjoaa työkalujen suosituksia useille käyttötarkoituksille. Lisätietoja Salesforceen liittyvistä datataso-integraatioista on Datan integroinnin päätöksentekooppaassamme.

  • Käytä tapahtumiin perustuvia arkkitehtuuria prosesseille, jotka eivät vaadi synkronoituja vastauksia pyyntöihin. Tässä oppaassa kuvatut kuviot on suunniteltu datan yhdenmukaisuutta, skaalattavuutta ja uudelleenkäyttöä varten, mikä auttaa pitämään teknisen velan mahdollisimman pienenä, kun organisaatiosi sovellusalue kehittyy. (Lisätietoja on kohdassa Hyvin rakennettu - läpimeno).

  • Jos MuleSoft tai muu Enterprise Service Bus (ESB) -ratkaisu kuuluu olemassa olevaan näkymään, käytä sitä aina, kun se on mahdollista. Nämä ratkaisut on suunniteltu tukemaan tapahtumiin perustuvia arkkitehtuurikuvioita ja niillä on tehokkaita ominaisuuksia, joiden avulla voit käyttää integraatioita uudelleen koko organisaatiossasi.

  • Käytä Pub/Sub API -rajapintaa tuleville julkaisu-/tilauskuvioille sen sijaan, että rakentaisit omia tapahtumien käsittelijöitä käyttämällä muita API-rajapintoja, mukaan lukien Streaming API:a. Nyt kun Pub/Sub API on yleisesti käytettävissä, käytä sitä kaikille uusille julkaisu-/tilauskuvioille. Suunnittele olemassa olevien tapahtumaviestien siirtäminen Pub/Sub API:iin käyttämällä muita sovellusalustan API-rajapintoja, kuten Streaming API:a tai mukautettuja Apex, kun se on mahdollista.

  • Sovellusalustan tapahtumat ja muutostietojen taltiointi (CDC) ovat suosittuja mekanismeja tietueiden ja kenttien muutosten julkaisemiseen, joita muut järjestelmät tarvitsevat. Emme suosittele käyttämään PushTopicia tai yleisiä tapahtumia uusille toteutuksille. Salesforce jatkaa PushTopicin ja yleisten tapahtumien tukemista nykyisten ominaisuuksien sisällä, mutta ei aio investoida tähän teknologiaan.

Salesforce Platform Salesforce Platform on kattava tekoälyn perustuva alusta, joka yhdistää työntekijät, itsenäiset tekoälyn agentit, yritystiedot ja sovellukset yhteen luotettuun järjestelmään tuottavuuden ja asiakaskokemuksen parantamiseksi. Se mahdollistaa "aktiivisen yrityksen" luomisen yhdistämällä Customer 360 -sovellukset, Data Cloudin ja Slackin kokonaisvaltaista automatisointia varten.
MuleSoft MuleSoft on Salesforcen johtava integraatioalusta, jonka avulla organisaatiot voivat yhdistää sovelluksia, dataa ja laitteita paikallisissa ja pilviympäristöissä. MuleSoft on alusta, joka tarjoaa IT-järjestelmille mahdollisuuden avata datan eri järjestelmissä, kehittää skaalattavia integraatio- ja automatisointikehyksiä sekä luoda erillisiä ja yhdistettyjä käyttökokemuksia – nopeasti.

Tapahtumiin perustuvia arkkitehtuuria (EDA) suositellaan skenaarioille, jotka vaativat lähes reaaliaikaisia ilmoituksia, jakavat raskaan tai monimutkaisen viestin käsittelyn kuormituksen ja integroivat järjestelmiä, kuten IoT ja mobiililaitteet, jotka vaativat yhteyden kestävyyden jonojen avulla. EDA:ta ei kuitenkaan tulisi ottaa käyttöön prosesseille, jotka vaativat välittömiä, synkronoituja ihmisten vastauksia, koska ne on suunniteltu ei-synkronoitavaksi suoritukseksi. Ne eivät myöskään sovellu hyvin, jos lähdedata muuttuu niin harvoin, että yksinkertaisempi malli, kuten eräkäsittely, riittäisi.

Alla on useita yleisiä skenaarioita, jotka sopivat usein hyvin tapahtumiin perustuvaan arkkitehtuuriin:

PäätöspisteOhjeet
Lähes reaaliaikaiset ilmoituksetTapahtumiin perustuvat arkkitehtuurikuviot, kuten julkaise/tilaa, fanout ja streaming, toimivat tavallisesti hyvin skenaarioissa, joissa useiden sovellusten täytyy saada ilmoituksia tilojen muutoksista tai tietueiden päivityksistä lähes reaaliajassa.
Yhdensuuntainen käsittelyKuvioita, kuten julkaise/tilaa, sovelletaan tavallisesti hyvin skenaarioissa, joissa suuret datamäärät tai erittäin monimutkaiset viestit vaativat käsittelykuorman jakamista useille järjestelmille.
Suuren määrän lukematKuljetut viestit- ja Jonot-kuvioita käytetään tavallisesti skenaarioissa, joissa organisaatiot kokevat kasvua, ja tuotettujen viestien määrä saattaa ylittää tilaajien kyvyn käsitellä niitä välittömästi.
Suuren määrän kirjoituksetStreaming- ja Queuing-kuviot toimivat hyvin monissa tilanteissa, joissa organisaatiot näkevät tuotettujen viestien määrän nousevan.
Saman datan lähettäminen eri järjestelmiinJulkaiseminen/tilaaminen on yleensä melko yleinen ratkaisu organisaatioille, joiden täytyy lähettää samoja tietoja useisiin järjestelmiin, mutta useimmat tässä kuvatut kuviot voivat ratkaista sen. Muista tutustua niihin tarkemmin löytääksesi sopivimman vaihtoehdon.
Uuden järjestelmän tai laitteen säännöllinen käyttöönottoJulkaise/tilaa-, Streaming- ja Queuing-kuviot toimivat tavallisesti hyvin skenaarioissa, joissa kokonaismaailma on tavallisesti vaihtumassa ja uusia järjestelmiä ja laitteita lisätään säännöllisesti. Tässä skenaariossa uudesta järjestelmästä tai laitteesta täytyy yksinkertaisesti tulla tapahtumaväylän tilaaja tai se on liitetty jonoon, jotta se voi aloittaa viestien vastaanottamisen eikä vaatia mukautettua Pisteestä pisteeseen -integraatiota.
IoT-laitteetKoska IoT-laitteet tarjoavat usein päivityksiä ja voivat myös luoda joissakin tilanteissa paljon viestejä, Streaming- ja Queuing-kuviot toimivat tavallisesti hyvin, kun niitä integroidaan IT-ympäristöön.
Offline-mobiililaitteet ja -järjestelmätMobiililaitteet, joiden täytyy toimia alueilla, joilla on heikko laatu tai joilla ei ole internet-yhteyttä tai järjestelmät, jotka saattavat olla offline-tilassa viestien toimittamisen aikana, hyötyvät Jonot-kuviosta, jonka avulla he voivat muodostaa yhteyden jonoihinsa ja noutaa asiaankuuluvia viestejä, kun he ovat takaisin online-tilassa.

Useimmilla suurilla organisaatioilla on monimutkaisia IT-ympäristöjä, joissa on järjestelmien yhdistelmä eri ominaisuuksilla. On mahdollista tai erittäin todennäköistä, että organisaatiollasi on vanhoja järjestelmiä, jotka eivät tue tapahtumiin perustuvia integraatioita. Sinulla saattaa myös olla käyttötarkoituksia, joissa tapahtumiin perustuvat integraatiot eivät ole järkeviä, vaikka järjestelmät tukisivat niitä (esimerkiksi SFTP-tiedostojen siirrot kolmansilta osapuolilta). Jos otat askeleen taaksepäin ja tarkastelet organisaatiosi IT-ympäristöä kokonaisuutena, todennäköisesti — aivan kuten muutkin arkkitehtoniset ratkaisut — käytät erilaisia kuvioita eri skenaarioiden tukemiseksi. Kun päätät tehdä integraatioista tapahtumiin perustuvia, pidä sitä toisena työkaluna työkalupakissasi. Sitä voidaan ja pitäisi käyttää oikeissa skenaarioissa, mutta se ei ole lähestymistapa jokaiselle järjestelmälle. Kattavan integraatiostrategian kehittäminen auttaa sinua määrittämään, milloin tässä oppaassa kuvatut kuviot eivät välttämättä ole sopivia.

Monet skenaariot vaativat tapahtumiin perustuvia arkkitehtuuria, ja joissakin skenaarioissa tapahtumiin perustuvat arkkitehtuurit toimivat, vaikka ne eivät sovellu parhaiten. Joissakin tilanteissa tapahtumiin perustuvia arkkitehtuuria ei kuitenkaan tulisi käyttää. Alla on joitakin päätöspisteiden kysymyksiä, jotka auttavat sinua tunnistamaan nämä skenaariot:

PäätöspisteOhjeita / Kysyttävät kysymykset
LiiketoimintavaatimuksetOnko jokin [Milloin käyttää tapahtumiin perustuvaa arkkitehtuuria](#milloin-käyttää-tapahtumiin-perustuvaa-arkkitehtuuria) -osiossa kuvattu toiminnoista todellista liiketoimintatarpeita?
Tekniset vaatimuksetSoveltuuko suunnittelemaasi integraatiota selkeästi eri kuvioon, kuten datan virtuaaliin, erään tai pyyntöön/vastaukseen? Toisin sanoen, yritätkö asettaa neliökuvakkeen pyöreään reikään?
Prosessit, jotka vaativat ihmisiä odottamaan vastauksiaKaikki integraatiot, jotka sisältävät ihmisen odottavan vastausta kohdejärjestelmästä, eivät sovellu hyvin tapahtumiin perustuville arkkitehtuureille, koska ne on suunniteltu asynkroniseen suoritukseen eivätkä ne voi taata vastausaikaa. Mieti, ovatko tällaiset prosessit optimaalisia organisaatiollesi ennen teknisten ratkaisujen käyttöönottoa. Lisätietoja on kohdassa [Well-Architected - Process Design](/docs/architect/fi-fi/well-architected/guide/automated#prosessien-suunnittelu).
Lähdödatan muuttaminen useinJos lähdejärjestelmäsi data muuttuu niin harvoin, että säännölliset päivitykset riittävät, voit todennäköisesti yksinkertaistaa arkkitehtuuria käyttämällä [batch patterns] (https://developer.salesforce.com/docs/atlas.en-us.integration_patterns_and_practices.meta/integration_patterns_and_practices/integ_pat_batch_data_sync.htm) tapahtumiin perustuvien kuvioiden sijaan.
ToteutusvaatimuksetTukeeko useimmat ratkaisusi järjestelmät tapahtumiin perustuvia arkkitehtuuria? Mitä vaaditaan tapahtumiin perustuvien arkkitehtuurien käyttämiseksi järjestelmissä, jotka eivät tue niitä (esimerkiksi päivitykset, mukautukset tai middleware)? Mitä vaivaa näiden vaatimusten täyttäminen vaatii?
Viestien rakenteen vakausKuinka usein viestirakenteesi täytyy muuttua? Mihin järjestelmiin muutos vaikuttaa ja mikä on korjausprosessi?
Organisaation hallintaOnko sinulla hallintarakenne, joka varmistaa, että kaikki sidosryhmät ovat tietoisia viestirakenteiden muutoksista, käynnistimistä ja muista arkkitehtuuriin ja prosesseihin liittyvistä päätöksistä ja että he voivat vaikuttaa niihin?
Pakolliset taitojen joukotOnko henkilökunnallasi kokemusta tapahtumiin perustuvista arkkitehtuurista ja osaavatko he tukea niitä?

Tapahtumiin perustuvia arkkitehtuurikuvioita on useita. Jotkin ovat yleisiä käyttötarkoituskuvioita, joita voidaan soveltaa käyttötarkoituksiin, joilla ei ole muita erityisvaatimuksia kuin tapahtumiin perustuva käyttö; katso esimerkiksi lisätietoja kohdasta Well-Architected - Interoperability. Muita kuvioita sovelletaan tässä kuvattuihin käyttötarkoituksiin, kuten suuria datamääriä sisältävät integraatiot tai skenaariot, jotka vaativat viestien pidemmän säilytyksen.

Alla oleva taulukko vertaa tässä asiakirjassa kuvattujen kuvioiden attribuutteja. Käytä sitä nopeana viitteenä, kun sinun täytyy tunnistaa tietyn käyttötarkoituksen mahdolliset kuviot.

KuvioLähes reaaliaikainenYksilöllisen viestin kopiointiTakuutoimitusViestin koon pienentäminenDatan muuntaminen
Julkaise/tilaa
Fanout (Fanout)
Välitetyt viestit
Streaming
Jonot

Salesforce tarjoaa useita työkaluja, jotka auttavat sinua ratkaisemaan tapahtumiin perustuvia käyttötarkoituksia. Tämä taulukko sisältää yleiskatsauksen käytettävissä olevista työkaluista.

TyökaluKuvausVaaditut taidot
MuleSoftAnypoint PlatformSovellusalusta, joka sallii datan integroinnin käyttämällä API-kerroksia.Pro-koodi
Salesforcen Pub/Sub-liitinLiitin Pub/Sub API:lle, joka tarjoaa yhden käyttöliittymän sovellusalustan tapahtumien julkaisemiseen ja tilaamiseen, reaaliaikaisiin tapahtumien valvontatapahtumiin ja muutostietojen datan taltiointi.Pro-koodi
MuleSoft Anypoint JMS -liitinLiitin, joka sallii viestien lähettämisen ja vastaanottamisen jonoihin ja aiheisiin mille tahansa viestintäpalvelulle, joka käyttää Java Message Service (JMS) -määritystä.Pro-koodi
MuleSoft Anypoint Apache Kafka -liitinLiitin, joka siirtää dataa Apache Kafkan ja yrityssovellusten ja -palveluiden välillä.Pro-koodi
MuleSoft Anypoint Solace -liitinLiitin Solace PubSub+ -tapahtumien välittäjille ja natiivinen API-integraatio JCSMP Java SDK:n avullaPro-koodi
MuleSoft Anypoint MQ -liitinUsean vuokralaisen pilvipalvelu, jonka avulla asiakkaat voivat suorittaa edistyneitä asynkronisia viestejä sovelluksilleen.Pro-koodi
MuleSoft Anypoint MQTT -liitinMQTT (Message Queuing Telemetry Transport) v3.x-protokollan mukainen MuleSoft-laajennus.Pro-koodi
MuleSoft Anypoint AMQP -liitinLiitin, joka sallii sovelluksesi julkaista ja kuluttaa viestejä AMQP 0.9.1 -yhteensopivan välittäjän avulla.Pro-koodi
MuleSoft Anypoint Event-Driven (ASync) API -rajapintaaToimialakohtainen kieli, joka tukee tapahtumiin perustuvien API-rajapintojen julkaisemista erottamalla ne tapahtuma-, kanava- ja kuljetuskerroiksi.Pro-koodi
MuleSoft Anypoint MQMonitason pilvipalvelun viestintäpalvelu, jonka avulla asiakkaat voivat suorittaa edistyneitä asynkronisia viestejä sovellustensa välillä.Pro-koodi
MuleSoftin Anypoint-datavirratMuleSoft Anypointissa käytettävissä oleva kehysjärjestelmä streaming-datan julkaisemiseen ja tilaamiseen.Pro-koodi
Salesforce Platform (Salesforce-alusta)Apache Kafka on HerokuHeroku-lisäosa, joka tarjoaa Apache Kafkan palveluna ja täyden sovellusalustan integroinnin Heroku-alustaan.Pro-koodi
Muuta datan taltiointiinMuutostapahtumaloki, joka julkaisee Salesforce-tietueisiin tehdyt muutokset. Muutoksiin sisältyy uuden tietueen luominen, olemassa olevan tietueen päivittäminen, tietueen poistaminen ja tietueen poistamisen kumoaminen.Low-code to Pro-code
Lähtevät viestitToiminnot, jotka lähettävät XML-viestejä ulkoisiin päätepisteisiin, kun kenttäarvot päivitetään Salesforcessa.Alhainen koodi
Sovellusalustan tapahtumatSuojatut ja skaalattavat viestit, jotka sisältävät mukautettuja tapahtumadataa.Low-code to Pro-code
Pub/Sub APIAPI, joka sallii sovellusalustan tapahtumien, muutostietojen datan taltiointi ja/tai reaaliaikaisten Event Monitoring -tapahtumien tilaamisen.Pro-koodi
TapahtumaviittauksetSallii sovellusalustan tapahtumien ja muutostietojen datan taltiointi lähettämisen Salesforcesta Amazon EventBridgeen. Huomaa, että tapahtumasiirrot muodostavat yhteyden vain AWS Eventbridgeen.Alhainen koodi

Kun kriittinen tietue muuttaa ydinsovelluksen tilaa — esimerkiksi tila siirtyy ”Käsitellään”-tilasta ”Lähetetty”-tilaan — useat muut järjestelmät vaativat todennäköisesti lähes reaaliaikaisen ilmoituksen suorittaakseen asiaankuuluvia tehtäviään. Erityinen liiketoimintatarve syntyy, kun näiden muutosten määrä on suuri ja viestit ovat monimutkaisia, mikä tekee perinteisistä Pisteestä pisteeseen -integraatioista raskaita ja vaikeita ylläpitää. Haavoittuvien ja mukautettujen yhteyksien luominen jokaiselle riippuvaiselle sovellukselle aiheuttaa teknistä velkaa ja estää organisaation nopean skaalautumisen. Näiden usein tapahtuvien datan synkronointien hallintaan tarvitaan vankka integraatiomenetelmä, joka ei yhdistä lähdesysteemiä suoraan kaikkiin kuluttaviin järjestelmiin.

Alla oleva kaavio kuvaa tyypillistä julkaisun/tilauksen kuviota, jossa useat julkaisijat ja tilaajat jakavat tietoja tapahtumaväylän kautta. Tämä peruskuvio muodostaa perustan tarkemmille kuvioille, jotka löytyvät tästä oppaasta. Tämän kuvion tärkeimmät ominaisuudet ovat:

  • Julkaisijoiden ja tilaajien välillä ei ole suoraa yhteyttä. Julkaisijat lähettävät vain viestejä tapahtumaväylään, joka lähettää ne kaikkiin muihin järjestelmiin, jotka haluavat kuunnella niitä.

  • Sama järjestelmä voi olla sekä julkaisija että tilaaja.

  • Järjestelmät voivat julkaista tai tilata useita tapahtumatyyppejä.

  • Kuten tässä oppaassa kaikissa kuvioissa, julkaise/tilaa-kuvio kuuluu yleiseen integraatiokuvion kategoriaan, joka tunnetaan etätoimenpiteen kutsuna (RPI) tai yksinkertaisesti "julkaise ja unohda".

Tämä tason 2 kaavio näyttää esimerkin julkaise/tilaa-kuviosta, joka sisältää useita julkaisijoita, useita tilaajia ja useita tapahtumia, jotka toimitetaan tapahtumaväylän kanavien kautta. Tässä kuviossa sama järjestelmä voi olla sekä julkaisija että tilaaja ja järjestelmä voi tilata useita tapahtumia.
Tapahtumakulku ja toimintatapaTietosisällöissä huomioitavia asioita
Käytettävissä olevat työkalutVaaditut taidotJulkaiseTilaa kauttaToistoaikaTietosisällön rakenneTietosisällön rajoitukset
MuleSoftAnypoint PlatformPro-koodiAPI-rajapinnatAPI-rajapinnatKuten määritettyKäyttäjä määritettyEi mitään
Salesforcen Pub/Sub-liitinPro-koodiAPI-rajapinnatAPI-rajapinnatKuten määritettyKäyttäjä määritettyEi mitään
MuleSoft Anypoint JMS -liitinPro-koodiAPI-rajapinnatAPI-rajapinnatKuten määritettyKäyttäjä määritettyEi mitään
MuleSoft Anypoint Apache Kafka -liitinPro-koodiAPI-rajapinnatAPI-rajapinnatKuten määritettyKäyttäjä määritettyEi mitään
MuleSoft Anypoint Solace -liitinPro-koodiAPI-rajapinnatAPI-rajapinnatKuten määritettyKäyttäjä määritettyEi mitään
MuleSoft Anypoint MQ -liitinPro-koodiAPI-rajapinnatAPI-rajapinnatKuten määritettyKäyttäjä määritettyEi mitään
MuleSoft Anypoint MQTT -liitinPro-koodiAPI-rajapinnatAPI-rajapinnatKuten määritettyKäyttäjä määritettyEi mitään
MuleSoft Anypoint AMQP -liitinPro-koodiAPI-rajapinnatAPI-rajapinnatKuten määritettyKäyttäjä määritettyEi mitään
MuleSoft Anypoint Event-Driven (ASync) API -rajapintaaPro-koodiAPI-rajapinnatAPI-rajapinnatKuten määritettyKäyttäjä määritettyEi mitään
MuleSoft Anypoint MQPro-koodiAPI-rajapinnatAPI-rajapinnatKuten määritettyKäyttäjä määritettyEi mitään
Salesforce Platform (Salesforce-alusta)Apache Kafka on HerokuPro-koodiAPI-rajapinnat, tietueiden muutokset Heroku PostgresissaN/A1–6 viikkoaKäyttäjä määritettyKäyttäjä määritetty
Muuta datan taltiointiinLow-code to Pro-codeTietueiden muutoksetApex, API, Lightning (LWC)3 päivääEsimääritetty1 MB
Lähtevät viestit*Alhainen koodiKulkujen ja työnkulkusäännötN/A24 tuntiaKäyttäjä määritetty100 ilmoitusta per viesti
Sovellusalustan tapahtumatLow-code to Pro-codeAPI, Apex, KulkuApex, API, Kulku, LWC3 päivääKäyttäjä määritetty1 MB
Pub/Sub APIPro-koodiPub/Sub API tai API, Apex, KulkuPub/Sub API3 päivääKäyttäjä määritetty1 MB
Event Relays**Alhainen koodiSovellusalustan tapahtumat, muutostietojen datan taltiointiAPI3 päivääKäyttäjä määritetty1 MB
*Salesforce jatkaa lähtevien viestien tukemista nykyisten ominaisuuksien mukaisesti, mutta ei aio tehdä lisää investointeja tähän teknologiaan. **Event Relays muodostaa yhteyden vain AWS Eventbridgeen

Kun organisaation täytyy lähettää välittömiä päivityksiä suurelle määrälle asiakassovelluksia, kuten työntöilmoituksia tai SMS-viestejä mobiililaitteille, perinteinen prosessi, joka luo yksilöllisiä lähetyksiä jokaiselle vastaanottajalle, muuttuu nopeasti skaalattavuuden pullonkaulaksi. Tässä tapauksessa ydinliiketoimintatarpeena on yhden tietojen — kuten tilihälytyksen tai kriittisen palvelun muutoksen ilmoituksen — nopea ja tehokas jakaminen useille päätepisteiden sovelluksille samanaikaisesti. Virtaviivaistettu lähestymistapa tämän vaatimuksen täyttämiseen sisältää kaikkien viestien reitittämisen yhden jonon kautta, joka toimii kaikkien kuluttavien järjestelmien tapahtumatietojen keskipisteenä. Tämä lähestymistapa parantaa suorituskykyä poistamalla monien erillisten viestien kopioiden hallinta.

fanout-kuviossa viestit toimitetaan yhteen tai useampaan kohteeseen (eli kuunteleviin asiakkaisiin tai tilaajiin) yhden viestijonon kautta. Tilaajat hakevat saman viestin jonosta oman yksilöllisen kopionsa sijaan. (Huomaa, että tämä parantaa suorituskykyä, mutta se voi myös vaikeuttaa sen vahvistamista, vastaanottiko tietty tilaaja viestin vai ei).

Tämä tason 3 dokumentaatio- ja toteutuskaavio näyttää esimerkin fanout-kuviosta. Se kuvaa tapahtuman, joka julkaistaan ja kirjoitetaan yhteen jonoon, kun tietuetta muokataan käyttäjän vuorovaikutuksen, kulun tai erätyön kautta. Tilaajien järjestelmässä on useita palveluja, jotka vastaanottavat saman tapahtuman viestijonosta.
Tapahtumakulku ja toimintatapaTietosisällöissä huomioitavia asioita
Käytettävissä olevat työkalutVaaditut taidotJulkaiseTilaa kauttaToistoaikaTietosisällön rakenneTietosisällön rajoitukset
MuleSoftMuleSoft Anypoint JMS -liitinPro-koodiAPI-rajapinnatAPI-rajapinnatKuten määritettyKäyttäjä määritettyEi mitään
Salesforcen Pub/Sub-liitinPro-koodiAPI-rajapinnatAPI-rajapinnatKuten määritettyKäyttäjä määritettyEi mitään
MuleSoft Anypoint Apache Kafka -liitinPro-koodiAPI-rajapinnatAPI-rajapinnatKuten määritettyKäyttäjä määritettyEi mitään
MuleSoft Anypoint Solace -liitinPro-koodiAPI-rajapinnatAPI-rajapinnatKuten määritettyKäyttäjä määritettyEi mitään
MuleSoft Anypoint MQ -liitinPro-koodiAPI-rajapinnatAPI-rajapinnatKuten määritettyKäyttäjä määritettyEi mitään
MuleSoft Anypoint MQTT -liitinPro-koodiAPI-rajapinnatAPI-rajapinnatKuten määritettyKäyttäjä määritettyEi mitään
MuleSoft Anypoint AMQP -liitinPro-koodiAPI-rajapinnatAPI-rajapinnatKuten määritettyKäyttäjä määritettyEi mitään
MuleSoft Anypoint MQPro-koodiAPI-rajapinnatAPI-rajapinnatKuten määritettyKäyttäjä määritettyEi mitään
Salesforce Platform (Salesforce-alusta)Apache Kafka on HerokuPro-koodiAPI-rajapinnat, tietueiden muutokset Heroku PostgresissaN/A1–6 viikkoaKäyttäjä määritettyKäyttäjä määritetty
Muuta datan taltiointiinLow-code to Pro-codeTietueiden muutoksetApex, API, Lightning (LWC)3 päivääEsimääritetty1 MB
Sovellusalustan tapahtumatLow-code to Pro-codeAPI, Apex, KulkuApex, API, Kulku, LWC3 päivääKäyttäjä määritetty1 MB
Pub/Sub APIPro-koodiPub/Sub API tai Apex, API, KulkuPub/Sub API3 päivääKäyttäjä määritetty1 MB
Tapahtumaseurattajat*Alhainen koodiSovellusalustan tapahtumat, muutostietojen datan taltiointiAPI3 päivääKäyttäjä määritetty1 MB
*Event Relays lähettää dataa vain AWS Eventbridgeen

Joissakin tapahtumaskenaarioissa on merkittävä viestien määrä, joka uhkaa täyttää synkronointi- ja transformaatioprosessien kapasiteetin, tai monimutkainen monivaiheinen logiikka, joka vaaditaan tapahtumadatan käsittelemiseen ja muuntamiseen.

Joitakin esimerkkejä ovat:

  • Kausittaiset äänenvoimakkuuden pikavalinnat: Verkossa toimivien jälleenmyyjien määrä saattaa nousta, kun heidän tuotteidensa valikoima on ”kaudella”. Kun suuri määrä asiakkaita tekee ostoksia samanaikaisesti, luotujen tapahtumien määrä voi ylittää synkronointi- ja transformaatioprosessien kapasiteetin väliaikaisesti. Lisätietoja on kohdassa Well-Architected - Data Handling.

  • Tapausten tai korvausvaatimusten hallinta: Palveluun perustuvat yhtiöt saattavat nähdä tapausten tai korvausvaatimusten määrän kasvavan käyttökatkosten aikana.

  • Monimutkaiset datan transformaatiot: Organisaatiot, jotka tarvitsevat monimutkaista logiikkaa viestien muuntamiseen, ovat usein huolissaan siitä, että tapahtumat luodaan nopeammin kuin niitä voidaan muuntaa.

Tämä kuvio ratkaisee ongelman, kun viestejä luodaan nopeammin kuin mitä niitä voidaan muuntaa. Se varmistaa, että suuria viestien määriä ja vaadittuja datan manipulointeja voidaan käsitellä luotettavasti, lisäämällä streaming-viestialustan ja segmentoimalla viestien käsittelyn logiikkaa erillisiin komponentteihin.

Kulutetut viestit -kuvio toimii segmentoimalla viestien käsittelyn logiikkaa useisiin komponentteihin:

  • Yksi komponentti käsittelee viestien reitityksen määrittämällä vaaditut transformaatiot ja lopullisen kohteen.

  • Erillinen komponenttijoukko käsittelee viestin transformaation eri kerrokset (esimerkiksi kenttäkartoitukset, objektien suhteet jne.).

  • Viimeinen komponentti kirjoittaa lopullisen, muokatun viestin.

Tämä tason 3 dokumentaatio- ja toteutuskaavio näyttää esimerkin prosessikulusta välitetyille viesteille, jotka sisältävät julkaisijan, tilaajan ja viestin. Viesti jaetaan useisiin eri osioihin, jotka muunnetaan yksittäin ja jotka sitten kokoontuvat uudelleen ennen kuin ne lähetetään tilaajalle.
Tapahtumakulku ja toimintatapaTietosisällöissä huomioitavia asioita
Käytettävissä olevat työkalutVaaditut taidotJulkaiseTilaa kauttaToistoaikaTietosisällön rakenneTietosisällön rajoitukset
MuleSoftMuleSoft Anypoint Apache Kafka -liitinPro-koodiAPI-rajapinnatAPI-rajapinnatKuten määritettyKäyttäjä määritettyEi mitään
Salesforcen Pub/Sub-liitinPro-koodiAPI-rajapinnatAPI-rajapinnatKuten määritettyKäyttäjä määritettyEi mitään
Salesforce Platform (Salesforce-alusta)Apache Kafka on HerokuPro-koodiAPI-rajapinnat, tietueiden muutokset Heroku PostgresissaN/A1–6 viikkoaKäyttäjä määritettyKäyttäjä määritetty
Muuta datan taltiointiinLow-code to Pro-codeTietueiden muutoksetApex, API, Lightning (LWC)3 päivääEsimääritetty1 MB
Sovellusalustan tapahtumatLow-code to Pro-codeAPI, Apex, KulkuApex, API, Kulku, LWC3 päivääKäyttäjä määritetty1 MB
Pub/Sub APIPro-koodiPub/Sub API tai API, ApexPub/Sub API3 päivääKäyttäjä määritetty1 MB
Tapahtumaseurattajat*Alhainen koodiSovellusalustan tapahtumat, muutostietojen datan taltiointiAPI3 päivääKäyttäjä määritetty1 MB
*Event Relays lähettää dataa vain AWS Eventbridgeen

Jotkin tuottajista luovat jatkuvan tapahtumavirran. Yleinen esimerkki on median streaming, joka sisältää käyttäjien vuorovaikutuksia, jotka tapahtuvat luonnollisesti erillisinä tapahtumina. Useiden järjestelmien täytyy reagoida samaan käyttäjän toimintatapaan samanaikaisesti estämättä ydinsä streaming-kokemusta.

Ota huomioon musiikin streaming-alustan tapahtumat. Näihin voi sisältyä:

  • Seuraa käynnistyneitä/keskeytettyjä/ohitettuja tapahtumia

  • Istuntotapahtumien kuunteleminen aikaleimoilla

  • Luettelon luonti-/muokkaustapahtumat

  • Sosiaaliset jakotapahtumat

  • Lataa offline-kuuntelua varten

Streaming-kuviossa tilaajat käyttävät kutakin tapahtumaketjua ja käsittelevät tapahtumat samassa järjestyksessä kuin missä ne vastaanotettiin. Jokaiselle tilaajalle lähetetään yksilöllisiä kopioita viestiketjuista, jotta voit toimittaa tilaajakohtaista sisältöä ja tunnistaa, ketkä tilaajista saavat mitä viestiketjuja.

Tämä tason 3 dokumentaatio- ja toteutuskaavio näyttää esimerkin streaming-kuviosta, joka kuvaa julkaistavien tapahtumien viestiketjua. Viestiketjuja kuuntelevat tilaajat saavat ne ja käsittelevät ne sen mukaisesti.
Tapahtumakulku ja toimintatapaTietosisällöissä huomioitavia asioita
Käytettävissä olevat työkalutVaaditut taidotJulkaiseTilaa kauttaToistoaikaTietosisällön rakenneTietosisällön rajoitukset
MuleSoftMuleSoftin Anypoint-datavirratPro-koodiAPI-rajapinnatAPI-rajapinnatKuten määritettyKäyttäjä määritettyEi mitään
Salesforcen Pub/Sub-liitinPro-koodiAPI-rajapinnatAPI-rajapinnatKuten määritettyKäyttäjä määritettyEi mitään
MuleSoft Anypoint Apache Kafka -liitinPro-koodiAPI-rajapinnatAPI-rajapinnatKuten määritettyKäyttäjä määritettyEi mitään
Salesforce Platform (Salesforce-alusta)Apache Kafka on HerokuPro-koodiAPI-rajapinnat, tietueiden muutokset Heroku PostgresissaN/A1–6 viikkoaKäyttäjä määritettyKäyttäjä määritetty
Pub/Sub APIPro-koodiPub/Sub API tai API, ApexPub/Sub API3 päivääKäyttäjä määritetty1 MB

Jotta viestiketju olisi järkevä, sen kaikkien tapahtumien ja niihin liittyvien viestien täytyy olla oikeassa järjestyksessä. Jos haet viestiketjussa olevaa dataa eri järjestelmistä, sinun täytyy lisätä tilauslogiikkaa osana suunnitteluprosessia.

Jonojen käyttöskenaariot ovat yleisiä. Esimerkkejä ovat:

  • Alhaisen laadun internetyhteydet: Field Service -organisaatiot tai muut organisaatiot, joissa tiimit, joilla on mobiililaitteita, tarvitsevat töitä alueilla, joilla on heikko laatu tai säännöllinen Internet-yhteys, hyötyvät jonosta, koska näillä laitteilla olevat sovellukset voivat muodostaa yhteyden jonoihinsa ja noutaa asiaankuuluvia viestejä, kun yhteys palautuu.

  • Viestien puskurointi: Kun viestien määrä joskus ylittää tilaajan käsittelykapasiteetin eikä myöhästyminen aiheuta lisää ongelmia, jonot voivat olla puskurina ylimääräisten viestien tallentamiseen ja tietojen katoamisen estämiseen.

  • Lähetysten hallinta: Logistiikkaorganisaatiot, joiden täytyy valvoa laivastojaan, voivat käyttää tätä kuviota nähdäkseen kunkin ajoneuvon käyttämät reitit lähes reaaliajassa ja varmistaakseen, että kuljettajat ovat mahdollisimman tehokkaita.

  • IoT-laitteet: Valmistajat käyttävät usein järjestelmiä, jotka luovat nopeita datavirtoja, ja näillä viestiketjuilla voi olla vaikutuksia muihin järjestelmiin. Tätä kuviota voidaan käyttää tunnistamaan tapahtumien sarjat, jotka vaativat ihmisen toimia ennen kuin useita järjestelmiä kattavat katastrofaaliset virheet tapahtuvat.

Jonotuksessa tuottajien täytyy lähettää viestejä jonoihin, jotka säilyttävät viestit, kunnes tilaajat hakevat ne. Useimmat viestijonot noudattavat First In, First Out (FIFO) -järjestystä ja poistavat kaikki viestit, kun ne on noudettu. Jokaisella tilaajalla on yksilöllinen jono, joka vaatii lisämääritysvaiheita, mutta jonka avulla toimitus voidaan taata ja tunnistaa, ketkä tilaajista saivat viestejä.

Tämä tason 3 dokumentaatio- ja toteutuskaavio näyttää esimerkin jonokuvioista, joka kuvaa tapahtumaa, joka julkaistaan ja kirjoitetaan jonoon, kun tietuetta muokataan. Tilaajat saavat tapahtuman kopioita niihin liittyvistä jonoista ja tekevät asiaankuuluvia päivityksiä omiin tietueisiinsa.
Tapahtumakulku ja toimintatapaTietosisällöissä huomioitavia asioita
Käytettävissä olevat työkalutVaaditut taidotJulkaiseTilaa kauttaToistoaikaTietosisällön rakenneTietosisällön rajoitukset
MuleSoftMuleSoft Anypoint MQPro-koodiAPI-rajapinnatAPI-rajapinnatKuten määritettyKäyttäjä määritettyEi mitään
Salesforcen Pub/Sub-liitinPro-koodiAPI-rajapinnatAPI-rajapinnatKuten määritettyKäyttäjä määritettyEi mitään
MuleSoft Anypoint Apache Kafka -liitinPro-koodiAPI-rajapinnatAPI-rajapinnatKuten määritettyKäyttäjä määritettyEi mitään
MuleSoft Anypoint MQ -liitinPro-koodiAPI-rajapinnatAPI-rajapinnatKuten määritettyKäyttäjä määritettyEi mitään
MuleSoft Anypoint MQTT -liitinPro-koodiAPI-rajapinnatAPI-rajapinnatKuten määritettyKäyttäjä määritettyEi mitään
MuleSoft Anypoint AMQP -liitinPro-koodiAPI-rajapinnatAPI-rajapinnatKuten määritettyKäyttäjä määritettyEi mitään
Salesforce Platform (Salesforce-alusta)Apache Kafka on HerokuPro-koodiAPI-rajapinnat, tietueiden muutokset Heroku PostgresissaN/A1–6 viikkoaKäyttäjä määritettyKäyttäjä määritetty
Muuta datan taltiointiinLow-code to Pro-codeTietueiden muutoksetApex, API, Lightning (LWC)3 päivääEsimääritetty1 MB
Sovellusalustan tapahtumatLow-code to Pro-codeAPI, Apex, KulkuApex, API, Kulku, LWC3 päivääKäyttäjä määritetty1 MB
Pub/Sub APIPro-koodiPub/Sub API tai API, Apex, KulkuPub/Sub API3 päivääKäyttäjä määritetty1 MB
Tapahtumaseurattajat*Alhainen koodiSovellusalustan tapahtumat, muutostietojen datan taltiointiAPI3 päivääKäyttäjä määritetty1 MB
*Event Relays lähettää dataa vain AWS Eventbridgeen

Jonokuvion asynkronisen luonteen vuoksi jonoon lisättävän viestin ja viestin noutamisen välillä voi olla pitkä viive. Jonot tarvitsevat muistia tai tallennustilaa viestien säilyttämiseen, joten ne eivät voi kasvaa määrittämättömästi, mikä tarkoittaa, että offline-tilassa oleva tilaaja voi aiheuttaa virheen, jos jonossa muodostuu tarpeeksi viestejä. Viestien puskuroinnilla voi olla sama vaikutus, jos tilaajien käsittelyajat ovat liian pitkiä, jolloin heidän jonoissaan muodostuu paljon viestejä. Voit vähentää näitä riskejä suorittamalla perusteellisen tallennusvaatimusten analyysin kaikille viestijonoille ja suunnittelemalla tarvittaessa prosesseja, jotka tyhjentävät ja poistavat jonot käytöstä, jos viestejä ei noudeta tiettynä ajanjaksona tai kun ne saavuttavat ennalta määritetyn määrän.

Vaikka olet täysin vakuuttunut siitä, että tapahtumiin perustuva arkkitehtuuri sopii organisaatiollesi, saatat olla aloittelemassa tilaa, jossa on jo paljon Pisteestä pisteeseen -integraatioita. Rahoituksen hakeminen projektille kaikkien integraatioidesi korvaamiseksi kerralla voi olla vaikeaa, eikä se välttämättä ole edes mahdollista käyttää tapahtumiin perustuvaa arkkitehtuuria suoraan joidenkin vanhojen järjestelmien kanssa. Näissä skenaarioissa voit siirtyä asteittaiseen lähestymistapaan hajanaiseen arkkitehtuuriin muuntamalla ensin liiketoimintaan tärkeimmät sovellukset ja muuntamalla sitten muut järjestelmät, kun ne päivitetään tai korvataan tulevissa projekteissa. Tämä lähestymistapa tekee uusien sovellusten lisäämisestä tapahtumavälyyn helppoa ja sallii kokonaisvaltaisen IT-ympäristön pysyä skaalattavana ja kestävänä, kun järjestelmät lisätään jatkuvasti ajan myötä.

Arkkitehtuurina tiedämme, että jokainen arkkitehtuuri sisältää kompromisseja. Tapahtumiin perustuva arkkitehtuuri ei ole poikkeus. Vaikka löysästi kytketyistä järjestelmistä täynnä oleva maisema on erittäin skaalattava ja kestävää, huomioitavia kompromisseja on myös:

  • Yleinen integraatiostrategia: Riippumatta työkaluista ja kuvioista, joita päätät käyttää, on tärkeää aloittaa luomalla strategia siitä, miten tiedot jaetaan organisaatiosi eri järjestelmissä. Tämän strategian tulisi sisältää organisaatiosi tavoitteet sen tiedoille, miten tietoja voidaan jakaa ja miten niitä käytetään, sekä tietolähteet, tavoitteet, rakenteet sekä omistajuus- ja käyttöoikeusvaatimukset.

  • Vanhempien järjestelmien tuki: Organisaatiollasi voi olla vanhoja järjestelmiä, jotka eivät yksinkertaisesti tue tapahtumiin perustuvia arkkitehtuurikuvioita. Vaikka ongelmien ratkaiseminen voi olla mahdollista (esimerkiksi prosessilla, joka toimii läpiviivana tilaamalla tapahtumia ja lähettämällä sitten tulokset kohdejärjestelmään eri tietojensiirtomenetelmällä), saatat haluta harkita muita integraatiomenetelmiä tässä tapauksessa.

  • Viestien rakenteelliset muutokset: Kun julkaisija ja tilaaja ovat määrittäneet ja hyväksyneet viestien alustavan rakenteen, sen muuttaminen voi olla vaikeaa, varsinkin jos tilaajat ovat ulkoisia. Voit ratkaista tämän ongelman usealla eri tavalla. Voit käyttää versioituja päätepisteitä, mutta muista määrittää selkeä elinkaari kullekin versiolle, jotta kehittäjiesi ei tarvitse ylläpitää liian monta versiota samanaikaisesti. Jos Herokussa oleva Apache Kafka on osa vaakaasi, voit myös harkita skeemojen rekisteriä tai vastaavaa työkalua, mutta varmista, että muut vaakaasi tukevat sitä (ja käyttävät sitä).

  • Julkaisijoiden ja tilaajien välinen näkyvyys puuttuu: Useimmissa tapahtumiin perustuvissa arkkitehtuurikuvioissa julkaisijat eivät ole tietoisia tilaajiensa tilasta. Jos siis julkaisija lähettää kriittisen viestin, kun kaikki tilaajat ovat offline-tilassa, viestiä ei välttämättä toimiteta koskaan. Voit ratkaista tämän ongelman käyttämällä toistotoimintoja tai lisäämällä tarpeettomia tilaajia, jotka suoritetaan erillisillä palvelimilla kaikille kriittisille viesteille.

  • Suorituskyvyn pullonkaulakohdat: Kun tapahtumiin perustuva arkkitehtuuri laajenee, tapahtumaväylästä voi tulla pullonkaula viestien toimittamiseen, jos liian monta julkaisijaa yrittää lähettää viestejä liian monelle tilaajalle samanaikaisesti. Voit ratkaista tämän lisäämällä tapahtumaväylälle allokoituja muisti- ja käsittelyresursseja tai käyttämällä useita tapahtumaväylät käsitelläksesi erityyppisiä viestejä rinnakkain.

Ennen kuin otat tapahtumiin perustuvan arkkitehtuurin käyttöön, harkitse, tarvitseeko sinun todella käyttää sellaista. Edellinen osio kuvaa yleisiä liiketoimintaskenaarioita, jotka sopivat hyvin kaikkiin tapahtumiin perustuviin arkkitehtuurikuvioihin. Lisätietoja on kohdassa Well-Architected - Interoperability. Tutustu tapahtumiin perustuvien arkkitehtuurien käyttöönotossa huomioitaviin haasteisiin määrittääksesi, sopivatko mielessäsi olevat kuviot parhaiten tietyille käyttötarkoituksillesi.

Huomaa, että vaikka useimmat tässä oppaassa kuvatut skenaariot sisältävät integraatioita, tapahtumiin perustuvia arkkitehtuuria voidaan käyttää myös viestien lähettämiseen yhdessä Salesforce-organisaatiossa käyttämällä esimerkiksi sovellusalustan tapahtumia. Muista pitää mielessäsi kaikki sovellettavat tapahtumien allokointirajoitukset, kun suunnittelet prosesseja, jotka käyttävät sovellusalustan tapahtumia sisäisenä viestintäjärjestelmänä.

Tapahtumiin perustuvien arkkitehtuurien ongelmat johtuvat usein siitä, että tapahtumia käytetään sisäisen viestinnän ratkaisemiseksi Salesforce-organisaatiossa. Yleisiin anti-kuvioihin sisältyy:

  • Tapahtumien julkaiseminen samaan tapahtumaobjektiin liittyvistä Apex-käynnistimistä: Tämä aiheuttaa loputtoman käynnistimen silmukan.

  • Tapahtumien julkaiseminen Apexista ennen kuin DML-transaktio suoritetaan loppuun: Jos transaktio epäonnistuu ja peruutuu, kaikkia julkaistuja tapahtumia, joilla on Julkaise välittömästi -julkaisutapa, ei sisällytetä periytymistoimintoon.

  • Tapahtumien julkaiseminen kulussa myöhemmän automatisoinnin orkestroimiseksi: Paras tapa koordinoida logiikkaa useissa automatisoinneissa on käyttää alakulkuja tai kulkujen orkestrointia.

  • Suorituksen aikaisten sidonnaisuuksien luominen: Älä julkaise tapahtumia helpottaaksesi pakettien välistä viestintää, ellet ole ryhtynyt asiaankuuluviin toimenpiteisiin suorituksen aikaisten sidonnaisuuksien poistamiseksi.

  • Liian suuret hyötykuormat: Kun teet pyyntöjä, sinun kannattaa lähettää ja vastaanottaa tietosisällössä mahdollisimman vähän dataa. Jokainen käyttäjän tekemä toiminto voi aiheuttaa useita pyyntöjä, ja on tärkeää, että ne käsitellään tehokkaasti. Tarpeettoman määrän datan lähettäminen saattaa hidastaa kuljetusta ja pidentää käsittelyaikaa.

  • Sovelluksen tapahtumien ei-valinnainen käsittely: Kun useita komponentteja kuuntelee sovellustapahtumaa, kehittäjien tulisi varmistaa, että tapahtuman käsittelijä suoritetaan vain, kun se on todella toivottavaa ja hyödyllistä. Esimerkiksi Lightning välilehtiin sisältyvät komponentit, jotka eivät ole keskitettyjä, voivat edelleen kuunnella, vaikka ne eivät olisi näkyvissä. Kehittäjä voi käyttää useita tekniikoita, kuten käyttää taustalla olevaa apukohdetta ainoana kuuntelijana tai kutsua getEnclosingTabId()-arvoa määrittääkseen, onko komponentin esiintymä suljettu keskitetyn välilehden sisään varmistaakseen, että jokainen tapahtuma käsitellään vain, kun se on tarkoitettu.

  • Sovellusalustan tapahtumien käyttäminen julkaistaan väärin: Sovellusalustan tapahtumilla on kaksi julkaisutapaa — Julkaise välittömästi ja Julkaise sitoumuksen jälkeen. On hyödyllistä käyttää sovellusalustan reaaliaikaisia tapahtumia käyttötapauksissa, kuten Kirjaa lokiin -toiminnossa, jossa haluat julkaista lokitapahtuman riippumatta siitä, onnistuiko transaktio ja sitoutuuko se. Käytä Julkaise välittömästi -vaihtoehtoa kuitenkin erittäin huolellisesti sovellusalustan reaaliaikaisten tapahtumien kanssa. Tilaajat voivat kuluttaa tapahtumia samassa transaktiossa ja aiheuttaa rivien lukituksia tai muita kilpailuehtoja.

Kun toteutetaan tapahtumiin perustuvaa arkkitehtuuria, yksi onnistumisen avain on määrittää standardeja, joilla itse tapahtumat suunnitellaan. Yksityiskohdat vaihtelevat organisaatiosi käyttötarkoitusten mukaan, mutta alla on joitakin yleisiä ohjeita:

  • Määritä tapahtumien hyötykuormille optimaalinen rakenne. Pienemmät viestikokoiset viestit lyhentävät käsittelyaikoja, mutta tilaajien pommitus suurilla viestimäärillä voi aiheuttaa ongelmia suorituskyvylle. Sinun täytyy ehkä iteroida hyötykuormasi koot ja rakenteet löytääksesi oikean tasapainon. MuleSoft ja samankaltaiset ESB-työkalut sallivat sinun suunnitella tapahtumiisi liittyvien viestien mukautettuja hyötykuormia, mikä voi auttaa sinua visualisoimaan datarakenteita parantaaksesi suorituskykyä tilaajan puolella. (Lisätietoja on kohdassa Well-Architected - API Management).

  • Mieti prosessiesi kokonaisvaltaista käyttöä. Varmista, ettet luo loputtomia silmukoita, joita voi olla vaikea seurata, kun integraatiot on otettu käyttöön. Esimerkki tästä olisi kaksi järjestelmää, jotka julkaisevat tapahtumia, kun tietueita päivitetään, ja kuuntelevat toistensa tapahtumia, jotka käynnistävät muita julkaistuja tapahtumia, kun niitä käsitellään.

    Voit korjata tämäntyyppisen antikuvakkeen lisäämällä molempiin järjestelmiin logiikkaa, joka varmistaa, että kulutettuun tapahtumaan perustuvat muutokset eivät johda uuden tapahtuman julkaisemiseen. Muista myös dokumentoida kaikki tapahtumasi, niihin liittyvät käynnistimet ja mahdollisesti vaikuttavat järjestelmät. Käytä tätä dokumentaatiota viitteenä suunnittelun aikana auttaaksesi sinua havaitsemaan loputtomia silmukoita ja samankaltaisia skenaarioita mahdollisimman pian. (Lisätietoja on kohdassa Hyvin rakennettu - Prosessien suunnittelu).

  • Käytä yhteisiä nimeämiskäytäntöjä eri järjestelmissä. Johdonmukaiset nimeämiskäytännöt ovat suositeltuja käytäntöjä kaikille ohjelmistokehityksille, mukaan lukien tapahtumiin perustuville arkkitehtuurille. Ota aikaa dokumentoidaksesi joukon standardeja tapahtumien nimille, rakenteille, niihin liittyville objekteille ja virheiden käsittelyprosesseille varmistaaksesi yhdenmukaisuuden eri järjestelmissä. (Lisätietoja on kohdassa Well-Architected - Design Standards).

KuvioResurssit
Julkaise/tilaaHyvin rakennettu Salesforce - läpimeno
Hyvin rakennettu Salesforce - Datan käsittely
Hyvin rakennettu Salesforce - Yhteensopivuus
Blogiviesti: Arkkitehtuurin tehokkuuden saavuttaminen tapahtumaviesteillä
Blogiviesti: Pub/Sub API:n julkaisu yleisesti saatavilla
Blogiviesti: Siirtyminen RESTful-muuttujasta Eventful-muuttujaan
Blogiviesti: Tapahtumiin perustuvat arkkitehtuurit ja AsyncAPI-määritys
Video: Julkaise/tilaa-kuvio-ohjeistus
Fanout (Fanout)Blogiviesti: Miten työstää sovellusalustan tapahtumien toimitusrajoituksia
Video: Fanout-kuvion ohjeistus
Välitetyt viestitVideo: Välitettyjen viestien ohjeistuskuvio
StreamingBlogiviesti: Suunnittelu raskaille kirjoituksille Salesforcessa
Video: Streaming-kuvion ohjeistus
Dokumentaatio: Streaming Mule-sovelluksissa
JonotBlogiviesti: Suunnittelu raskaille kirjoituksille Salesforcessa
Blogiviesti: Miten suunnitella maksu-arkkitehtuurit tapahtuneilla API-rajapinnoilla
Video: Jonokuvion ohjeistus