Etäproseduurikutsut (RPC)
Suoritatte funktioita etäsolmuissa RPC:n avulla, mikä mahdollistaa hajautetun laskennan ja palvelujen kutsumisen klusterissa.
Etäproseduurikutsut (RPC) on ilmainen Erlang OTP: hajautettujen ja vikasietoisten järjestelmien ohjelmointi-oppitunti CoddyKitissä. Tämä on oppitunti 2/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 Erlang OTP: hajautettujen ja vikasietoisten järjestelmien ohjelmointi-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Erlang OTP: hajautettujen ja vikasietoisten järjestelmien ohjelmointi-kurssilla on yhteensä 4 oppituntia.
Mikä on etäproseduurikutsu?
Kuvitelkaa, että kaksi Erlang-ohjelmaa suoritetaan eri koneilla tai jopa samalla koneella erillisissä Erlang-”solmuissa”. Miten ne viestivät keskenään?
Etäproseduurikutsu (Remote Procedure Call, RPC) on tapa, jolla yksi ohjelma (asiakas) pyytää toista ohjelmaa (palvelinta) suorittamaan funktion aivan kuten se kutsuisi paikallista funktiota. Asiakkaan ei tarvitse tuntea verkkoviestinnän yksityiskohtia.
Erlangin sisäinen RPC-moduuli
Erlang tekee hajautetusta laskennasta helppoa sisäisen rpc-moduulinsa avulla. Tämä moduuli tarjoaa funktioita laskutoimitusten kutsumiseen tai lähettämiseen etäisissä Erlang-solmuissa.
rpc:call/4: Synkronisiin kutsuihin, joissa asiakas odottaa vastausta.rpc:cast/4: Asynkronisiin kutsuihin, joissa asiakas ei odota vastausta.
Nämä ovat tehokkaita työkaluja hajautettujen sovellusten rakentamiseen.
RPC:n valmistelu
Ennen RPC:n käyttöä tarvitsemme vähintään kaksi yhdistettyä Erlang-solmua. Jokainen solmu tarvitsee nimen ja yhteisen evästeen todennusta varten.
Avatkaa kaksi erillistä pääteikkunaa ja käynnistäkää Erlang-solmut seuraavasti:
- Solmu 1:
erl -sname server_node -setcookie mysecret - Solmu 2:
erl -sname client_node -setcookie mysecret
Varmistakaa, että ne voivat pingata toisiaan: net_adm:ping(server_node@yourhostname).
Synkroninen RPC komennolla `rpc:call/4`
rpc:call/4-funktiota käytetään, kun tarvitsette välittömän vastauksen etäsolmulta. Se ottaa neljä argumenttia:
Node: Etäisen Erlang-solmun nimi.Module: Etäsolmussa oleva moduuli, jossa funktio sijaitsee.Function: Suoritettavan funktion nimi.Args: Funktion argumenttien luettelo.
Kutsuva prosessi estyy, kunnes se saa vastauksen tai virheen.
RPC-kutsun esimerkki: palvelinmoduuli
Luodaan yksinkertainen moduuli math_server.erl. Tallentakaa tämä koodi ja kääntäkää se server_node-solmussa:
1. Tallentakaa nimellä math_server.erl
2. Kääntäkää server_node-solmussa: c(math_server).
-module(math_server).
-export([add/2, multiply/2]).
add(A, B) ->
A + B.
multiply(A, B) ->
A * B.RPC-kutsun esimerkki: asiakkaan toiminta
Nyt voimme kutsua math_server:add/2-funktiota etäisesti client_node-solmusta! Muistakaa korvata yourhostname koneenne todellisella isäntänimellä.
Kirjoittakaa tämä client_node-solmun Erlang-kuoreen:
rpc:call(server_node@yourhostname, math_server, add, [10, 5]).RPC-tulosten ymmärtäminen
Kun suoritatte rpc:call/4-funktion, Erlang huolehtii verkkoviestinnästä puolestanne. Etäisen funktiokutsun tulos palautetaan suoraan kutsuvalle prosessille.
Jos etäsolmua ei ole olemassa, moduulia ei ole ladattu tai funktio kaatuu, rpc:call/4 palauttaa virhetupleen, kuten {badrpc, Reason}. Näin voitte käsitellä hajautetun järjestelmän mahdollisia ongelmia.
Asynkroninen RPC komennolla `rpc:cast/4`
Joskus etäkutsulta ei tarvita välitöntä vastausta. Haluatte vain lähettää pyynnön ja jatkaa työskentelyä. Tällöin käytetään rpc:cast/4-funktiota.
rpc:cast/4 toimii samankaltaisesti kuin rpc:call/4, mutta se on ”lähetä ja unohda” -toiminto. Asiakas lähettää viestin eikä odota vastausta, joten toiminto ei estä suoritusta.
RPC-cast-esimerkki: lokimoduuli
Luodaan yksinkertainen lokimoduuli. Tallentakaa se nimellä logger.erl ja kääntäkää se server_node-solmussa:
1. Tallentakaa nimellä logger.erl
2. Kääntäkää server_node-solmussa: c(logger).
-module(logger).
-export([log_message/1]).
log_message(Message) ->
io:format("~p: Remote log: ~p~n", [self(), Message]).RPC-cast-esimerkki: asiakkaan toiminta
Käyttäkää nyt client_node-solmusta rpc:cast/4-funktiota lokiviestin lähettämiseen server_node-solmulle. Huomaatte, että client_node ei odota vastausta.
Kirjoittakaa tämä client_node-solmun Erlang-kuoreen (korvatkaa yourhostname):
Lokiviesti tulee näkyviin server_node-solmun konsolissa!
rpc:cast(server_node@yourhostname, logger, log_message, ["Hello from client!"]).RPC:n pikatarkistus
Olette oppineet Erlangin synkronisista ja asynkronisista etäproseduurikutsuista.
Kertaus: RPC hajautetussa Erlangissa
Tässä oppitunnissa tutkitte, miten Erlangin sisäinen rpc-moduuli mahdollistaa funktioiden saumattoman suorittamisen eri solmuissa.
- Opimme käyttämään
rpc:call/4-funktiota synkronisiin, estäviin kutsuihin, kun tulosta tarvitaan. - Käsittelimme myös
rpc:cast/4-funktiota asynkronisiin, suoritusta estämättömiin kutsuihin, kun välitöntä vastausta ei tarvita. - Yhdistettyjen solmujen määrittäminen jaetuin evästein on ratkaisevan tärkeää RPC:n toiminnalle.
RPC yksinkertaistaa hajautettua ohjelmointia ja mahdollistaa helposti useita Erlang-solmuja hyödyntävien sovellusten rakentamisen.
Opi Erlang 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 ”Etäproseduurikutsut (RPC)” ilmainen?
Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Erlang OTP: hajautettujen ja vikasietoisten järjestelmien ohjelmointi-oppimispolun 3 oppituntia, myös oppitunnin “Etäproseduurikutsut (RPC)”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Erlang OTP: hajautettujen ja vikasietoisten järjestelmien ohjelmointi-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”Etäproseduurikutsut (RPC)”?
Suoritatte funktioita etäsolmuissa RPC:n avulla, mikä mahdollistaa hajautetun laskennan ja palvelujen kutsumisen klusterissa. Harjoittelet Erlang OTP: hajautettujen ja vikasietoisten järjestelmien ohjelmointi-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni Erlang OTP: hajautettujen ja vikasietoisten järjestelmien ohjelmointi-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin Erlang OTP: hajautettujen ja vikasietoisten järjestelmien ohjelmointi-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 2/4.
Kuinka kauan ”Etäproseduurikutsut (RPC)”-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ä Erlang OTP: hajautettujen ja vikasietoisten järjestelmien ohjelmointi-oppitunnilla?
Kyllä. Jokainen Erlang OTP: hajautettujen ja vikasietoisten järjestelmien ohjelmointi-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
- Solmujen välinen viestintä ja määritys
- Etäproseduurikutsut (RPC)
- Globaalien prosessien rekisteröinti
- Hajautuksen suojaus ja cookiet