WebSockets ja reaaliaikaiset järjestelmät Springillä · Oppitunti

Kuormantasaus ja korkea käytettävyys

Toteuttakaa kuormantasaus- ja korkean käytettävyyden ratkaisuja jatkuvan ja skaalautuvan reaaliaikaisen palvelun varmistamiseksi.

Oppitunti 3/411 vaihetta

Kuormantasaus ja korkea käytettävyys on ilmainen WebSockets ja reaaliaikaiset järjestelmät Springillä-oppitunti CoddyKitissä. Tämä on oppitunti 3/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu WebSockets ja reaaliaikaiset järjestelmät Springillä-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. WebSockets ja reaaliaikaiset järjestelmät Springillä-kurssilla on yhteensä 4 oppituntia.

Reaaliaikaisten järjestelmien skaalaus

Nykyaikaisten reaaliaikaisten sovellusten, kuten chattien ja reaaliaikaisten koontinäyttöjen, on pystyttävä käsittelemään monia käyttäjiä hidastumatta tai kaatumatta. Tässä oppitunnissa käsitellään kahta keskeistä käsitettä tämän saavuttamiseksi: kuormantasaus ja korkea käytettävyys.

Näiden strategioiden avulla WebSocket-sovellukset voivat kasvaa kysynnän mukana ja pysyä käytettävissä, vaikka osa järjestelmästä vikaantuisi.

Käyttäjäliikenteen jakaminen

Kuormantasaus tarkoittaa saapuvan verkkoliikenteen tehokasta jakamista useille palvelimille. Kuvitelkaa vilkas ravintola, jossa on paljon kokkeja – kuormantasaaja toimii kuten hovimestari ja ohjaa uudet asiakkaat vähiten kuormitetulle kokille.

  • Estää yksittäistä palvelinta muodostumasta pullonkaulaksi.
  • Parantaa sovelluksen reagointikykyä ja suorituskykyä.
  • Mahdollistaa horisontaalisen skaalauksen lisäämällä palvelimia.

WebSocket-kuormantasaus

WebSocket-yhteydet ylläpitävät pysyvää yhteyttä lyhytkestoisten HTTP-pyyntöjen sijaan. Tämä vaatii kuormantasaajilta erityistä huomiota. Keskeinen käsite on istuntoaffiniteetti (tai "sticky sessions").

Istuntoaffiniteetti varmistaa, että kun asiakas on muodostanut WebSocket-yhteyden tiettyyn palvelininstanssiin, kaikki kyseisen yhteyden myöhemmät viestit reititetään samaan palvelimeen. Tämä on välttämätöntä tilallisille sovelluksille.

Nginx-määritys WebSocketeille

Nginx on suosittu valinta WebSocket-yhteyksien käänteisvälitykseen ja kuormantasaukseen. Tässä on yksinkertaistettu määritysesimerkki. Huomioikaa Upgrade- ja Connection-otsakkeet, jotka ovat ratkaisevan tärkeitä WebSocket-kättelyssä.

http {
  upstream websocket_servers {
    server backend1.example.com;
    server backend2.example.com;
  }

  server {
    listen 80;
    server_name your_domain.com;

    location /ws {
      proxy_pass http://websocket_servers;
      proxy_http_version 1.1;
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection "upgrade";
      proxy_read_timeout 86400s;
    }
  }
}

Tämä määritys reitittää WebSocket-liikenteen (/ws) jollekin Spring-sovellusta suorittavista taustapalvelimista.

Jatkuvan palvelun varmistaminen

Korkea käytettävyys (HA) tarkoittaa sellaisten järjestelmien suunnittelua ja toteuttamista, jotka toimivat jatkuvasti ilman vikoja pitkiä aikoja. Reaaliaikaisissa sovelluksissa käyttökatko tarkoittaa, että käyttäjät menettävät yhteytensä ja reaaliaikaiset päivitykset.

HA:n tavoitteena on minimoida käyttökatkot, joita mitataan usein "ysseinä" (esimerkiksi 99,9 %:n käytettävyys). Tämä saavutetaan redundanssilla ja nopealla palautumisella vikatilanteista.

Useita instansseja korkeaa käytettävyyttä varten

Perustavanlaatuisin HA-strategia on redundanssi. Sen sijaan että WebSocket-palvelimesta suoritettaisiin vain yksi instanssi, suoritetaan useita identtisiä instansseja. Jos yksi instanssi vikaantuu, muut voivat ottaa sen tehtävät.

Tämä toimii yhdessä kuormantasauksen kanssa. Kuormantasaaja voi havaita vialliset instanssit ja lopettaa liikenteen lähettämisen niille sekä ohjata liikenteen sen sijaan toimintakuntoisille instansseille.

Automaattinen vikatilanteesta palautuminen

Vikasieto tarkoittaa prosessia, jossa ensisijaisen järjestelmän vikaantuessa tai epänormaalisti lopettaessa toimintansa siirrytään automaattisesti redundanttiin tai valmiusjärjestelmään. WebSocket-yhteyksien tapauksessa tämä tarkoittaa asiakasyhteyksien uudelleenohjausta.

  • Active-Passive: Yksi palvelin on aktiivinen ja muut ovat valmiustilassa.
  • Active-Active: Kaikki palvelimet ovat aktiivisia ja jakavat kuorman.

Modernit pilviympäristöt ja kuormantasaajat hallitsevat vikasiedon usein automaattisesti terveystarkistusten perusteella.

Palvelinten kunnon valvonta

Terveystarkistukset ovat kuormantasaajien tai valvontajärjestelmien suorittamia automaattisia testejä, joilla selvitetään, toimiiko palvelininstanssi oikein. Jos instanssi ei läpäise terveystarkistusta, se merkitään epäterveeksi ja poistetaan käytettävissä olevien palvelinten joukosta.

Spring WebSocket -sovelluksia varten voitte julkaista yksinkertaisen HTTP-päätepisteen (esimerkiksi /actuator/health), jonka kuormantasaaja voi tarkistaa säännöllisesti.

Pilvinatiiviset ratkaisut

Pilvipalveluntarjoajat tarjoavat hallittuja kuormantasaus- ja HA-palveluja, jotka yksinkertaistavat käyttöönottoa. Esimerkkejä ovat AWS Elastic Load Balancer (ELB) ja Google Cloud Load Balancing.

  • Ne hoitavat terveystarkistukset ja vikasiedon automaattisesti.
  • Ne skaalautuvat joustavasti liikenteen tarpeiden mukaan.
  • Ne integroituvat usein muihin pilvipalveluihin, kuten automaattisesti skaalautuviin ryhmiin.

Nämä palvelut sopivat ihanteellisesti skaalautuvien ja erittäin käytettävien Spring WebSocket -sovellusten käyttöönottoon.

Kuormantasausta koskeva kysymys

Kun WebSocket-yhteyksiä kuormantasataan, mitkä käsitteet ovat ratkaisevan tärkeitä, jotta asiakkaan viestit reititetään jatkossakin samaan taustapalvelimeen, johon se alun perin yhdisti?

Kertaus: skaalautuva reaaliaikaisuus

Olette oppineet, miten kuormantasaus jakaa liikenteen useille palvelininstansseille suorituskyvyn parantamiseksi ja skaalauksen mahdollistamiseksi. Tutustuimme myös korkean käytettävyyden strategioihin, kuten redundanssiin, vikasietoon ja terveystarkistuksiin, joilla varmistetaan reaaliaikaisten sovellusten jatkuva palvelu.

Yhdistämällä nämä tekniikat voitte rakentaa vankkoja ja skaalautuvia Spring WebSocket -palveluja tuotantoympäristöihin.

Aloita maksutta

Opi WebSockets ja reaaliaikaiset järjestelmät Springillä 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 ”Kuormantasaus ja korkea käytettävyys” ilmainen?

Kyllä – oppitunnin ”Kuormantasaus ja korkea käytettävyys” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko WebSockets ja reaaliaikaiset järjestelmät Springillä-kurssin, päivitä CoddyKit PROhon. WebSockets ja reaaliaikaiset järjestelmät Springillä-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Kuormantasaus ja korkea käytettävyys”?

Toteuttakaa kuormantasaus- ja korkean käytettävyyden ratkaisuja jatkuvan ja skaalautuvan reaaliaikaisen palvelun varmistamiseksi. Harjoittelet WebSockets ja reaaliaikaiset järjestelmät Springillä-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni WebSockets ja reaaliaikaiset järjestelmät Springillä-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin WebSockets ja reaaliaikaiset järjestelmät Springillä-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 3/4.

Kuinka kauan ”Kuormantasaus ja korkea käytettävyys”-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ä WebSockets ja reaaliaikaiset järjestelmät Springillä-oppitunnilla?

Kyllä. Jokainen WebSockets ja reaaliaikaiset järjestelmät Springillä-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. WebSocketit mikropalveluarkkitehtuureissa
  2. Pilvikäyttöönoton strategiat (AWS/GCP)
  3. Kuormantasaus ja korkea käytettävyys
  4. Sticky sessionit ja WebSocket-reititys
← Takaisin: WebSockets ja reaaliaikaiset järjestelmät Springillä