From 6ceed8ed9a0f7ce8d2d2a3cf8c3fc898ca1c43ac Mon Sep 17 00:00:00 2001 From: marcsello Date: Sun, 19 Dec 2021 01:06:13 +0100 Subject: [PATCH] almost there --- src/content/acknowledgement.tex | 10 +++++----- src/content/birbnetes_impl.tex | 2 +- src/content/conclusion.tex | 23 +++++++++++++++-------- src/content/introduction.tex | 8 +++++--- src/content/measurements.tex | 9 +++++---- src/content/overview.tex | 2 +- src/content/scheduling.tex | 11 +++++------ src/content/ursim_impl.tex | 12 ++++++------ 8 files changed, 43 insertions(+), 34 deletions(-) diff --git a/src/content/acknowledgement.tex b/src/content/acknowledgement.tex index 30ef567..7df81c3 100644 --- a/src/content/acknowledgement.tex +++ b/src/content/acknowledgement.tex @@ -2,12 +2,12 @@ %---------------------------------------------------------------------------- \chapter*{\koszonetnyilvanitas}\addcontentsline{toc}{chapter}{\koszonetnyilvanitas} %---------------------------------------------------------------------------- -Szeretném köszönetemet kifejezni konzulensemnek, Dr.~Maliosz~Markosznak, amiért lehetővé tette, hogy egy ilyen remek témán dolgozzak és emellett a rengeteg segítséget, amit Dr.~Simon~Csabával közösen adtak munkám során. +Szeretném köszönetemet kifejezni konzulensemnek, Dr.~Maliosz~Markosznak, tiszteletre méltó türelméért és amiért lehetővé tette, hogy egy ilyen remek témán dolgozzak és emellett a rengeteg segítséget és támogatást, amit Dr.~Simon~Csabával közösen adtak munkám során. -Emellett köszönettel tartozom a Távközlési és Médiainformatikai Tanszék Nagysebességű Hálózatok Laboratóriumának (HSN LAB) és a Schönherz Kollégiumban található Schönherz Elektronikai Műhelynek (SEM), hogy biztosították számomra az eszközöket, szerszámokat és helyszínt a munkámhoz. +Külön szeretném megköszönni Torma~Kristófnak, amiért anno segített elindulni a \textit{Kubernetes} rendszerek üzemeltetésének és használatának rögös útján. Így kellő tapasztalattal tudtam belevágni feladatom megoldásába. -Emellett szeretném megköszönni családomnak és barátaimnak a végtelen támogatást amit kaptam. +Külön szeretném megköszönni a Schönherz kollégiumban működő Kollégiumi~Számítástechnikai~Kör egykori és jelenleg aktív tagjainak támogatását. A körben eltöltött éveim során elképesztő mennyiségű szakmai tudásra tettem szert, rengeteget fejlődtem és mindemellett sok barátságot szereztem. +Kiemelném Rafael~László és Majthényi-Wass~Józsué nevét: nélkülük minden bizonnyal mérésre alkalmas hardver erőforrás hiányában maradtam volna a dolgozatom egyik legfontosabb pontján. -% lackó, Josh, kszk -% kszk \ No newline at end of file +Emellett szeretném megköszönni barátnőmnek Alexának, családomnak és barátaimnak a végtelen támogatást amit tőlük kaptam. diff --git a/src/content/birbnetes_impl.tex b/src/content/birbnetes_impl.tex index 7c0610e..7c7d0a7 100644 --- a/src/content/birbnetes_impl.tex +++ b/src/content/birbnetes_impl.tex @@ -62,7 +62,7 @@ Az előszűrés által adott sávszélesség megtakarítást nehéz megbecsülni Eredeti Tanító minta részlet & 190 & 152 & 80.0\% \\ Erdei hangfelvétel madárcsiripeléssel & 1000 & 288 & 28.8\% \\ Erdő, kevés madárcsiripeléssel & 316 & 53 & 16.7\% \\ - Erdőszél, este & 1500 & ? & ?\% \\ %TODO: Ezt ne felejtsem el kitölteni + Éjszaka, havazás & 1500 & 1 & 0.06\% \\ \hline \end{tabular} \caption{Első fázisú \acrshort{mi} áteresztésének vizsgálata különböző hangmintákra} diff --git a/src/content/conclusion.tex b/src/content/conclusion.tex index 869f661..cc2f3ba 100644 --- a/src/content/conclusion.tex +++ b/src/content/conclusion.tex @@ -3,20 +3,27 @@ \chapter{Konklúzió} %---------------------------------------------------------------------------- -% TODO: Ez az egész fos mert a dipterv1 végére íródott - \section{Összefoglalás} -A %féléves -munkám első részében a felhő és peremhálózati számítástechnika alkalmazási területeit, jellemző felhasználási módjait tekintettem át. Megvizsgáltam több keretrendszert is, az ezek mögött rejlő ötleteket és megoldásokat. +A munkám első részében a felhő és peremhálózati számítástechnika alkalmazási területeit, jellemző felhasználási módjait tekintettem át. Megvizsgáltam több keretrendszert is, az ezek mögött rejlő ötleteket és megoldásokat és kiválasztottam az ideális környezetet a feladatom megvalósításához.. Az irodalomkutatás során szerzett ismeretek alapján olyan alkalmazásokat kerestem, amelyek működéséhez előnyösen járul hozzá a peremhálózati rendszerek alkalmazása. Kutatásaim során kettő alkalmazást is találtam, amelyek egyenként különböző előnyeit képesek kihasználni a felhő és peremhálózati rendszerek együttes alkalmazásának. Az alkalmazásokat részletesen tanulmányoztam és bemutattam. -% TODO -% átalakítottam, hogy jó legyen edge-be -% kimértem, hogy jó lett +Ezek után megvizsgáltam a dinamikus átütemezés előnyeit és megvalósítási lehetőségeit a választott alkalmazásaim kontextusában. + +Megterveztem és felállítottam egy tesztkörnyezetet az átalakított alkalmazások tesztelésére. Ez a tesztkörnyezet megfelelő modelljét adta egy éles peremhálózati és felhő rendszernek. + +Ezek után az elkészített tesztkörnyezetben demonstráltam a dinamikus komponens mozgatást működését és hatásait felhő és peremhálózati infrastruktúrák közt. \section{Jövőbeni tervek} -% TODO: Big todo \ No newline at end of file +Az elkészült ütemező rendszert tekintve érdekes fejlesztési irány lenne megvizsgálni annak a lehetősségét, hogy miként lehetne általánossá tenni a működését annak érdekében, hogy könnyen lehessen újabb illeszteni hozzá. Jelenleg a rendszer elkészítése során csak az általam vizsgált alkalmazások igényeit és működését vettem figyelembe. Úgy vélem egy általános megoldás mindenképpen hiánypótló lenne jelenleg az iparban. + +Mint ahogy \aref{sec:birbnetes-evaluation}.\ alfejezetben is említettem, a peremhálózaton futó hangminta előszűrés áteresztő képessége szinte csalódáskeltően alacsony. Mindenképpen meg kell vizsgálni annak a lehetőségét, hogy miként lehet a dinamikus ütemezés kontextusában a skálázást is megvalósítani. + +A robotkarok vezérlését megvalósító alkalmazás dinamikus ütemezésénél egy erős megkötés volt, hogy a közvetlen vezérlést megvalósító szolgáltatások belső állapottal rendelkeznek, így preemptív átütemezésük szinte megoldhatatlan. Úgy vélem, hogy megoldható lenne a vezérlési komponenseket állapotmentessé tenni illetve megoldani a biztonságos átütemezését az egyes komponenseknek miközben egy \textit{program} épp fut. Ezzel tovább lehet növelni az alkalmazás flexibilitását és ellenállását a bekövetkező hálózati változásoknak, ezzel is javítva a teljesítőképességét és megbízhatóságát a felhő alapú robotvezérlésnek. + +Implementációs szempontból úgy vélem hasznos ötlet lenne a várakozási sorok kiszervezése az egyes előszűrő szolgáltatásokból és egy közös várakozási sort fenntartani minden adatközpontban ahol a feldolgozó egység fut. Ennek az apró változtatásnak hála a skálázás megvalósításával sokkal hatékonyabb lenne az alkalmazás működése, hiszen az újonnan induló komponensek a korábban felgyűlt mintákon is tudnának dolgozni. Emellett egy-egy feldolgozó szolgáltatás kiesése nem járna adatvesztéssel. + +% közös queue/site \ No newline at end of file diff --git a/src/content/introduction.tex b/src/content/introduction.tex index 0e1b094..9a65799 100644 --- a/src/content/introduction.tex +++ b/src/content/introduction.tex @@ -11,7 +11,7 @@ Ezekre a problémákra adhat megoldást, ha a felhőt kiterjesztjük az eddig me \section{A dolgozat célja} -Munkám célja, hogy alapos áttekintést adjak a felhő és a peremhálózati számítástechnika jelenlegi állapotáról, alkalmazásának előnyeiről és kihívásairól. Munkámat konkrét alkalmazások segítségével mutatom be és eredményeimet mérésekkel fogom alátámasztani. +Munkám célja, hogy alapos áttekintést adjak a felhő és a peremhálózati számítástechnika jelenlegi állapotáról, alkalmazásának előnyeiről és kihívásairól. Munkámat konkrét alkalmazások segítségével mutatom be és eredményeimet mérésekkel támasztom alá. \section{Fejezetek áttekintése} @@ -19,10 +19,12 @@ Az első fejezet bemutatja a feladatot és a kutatás hátterét. A második fejezetben részletesen bemutatom a felhő és a peremhálózati számítástechnikát és az azt megvalósító keretrendszereket. -A harmadik fejezet egy korábbi felhő és \acrshort{iot} alapú projektet mutat be, amely a szőlővidékek kártevővédelmére lett kifejlesztve. Emellett megvizsgálja a peremhálózati rendszerek alkalmazásának lehetőségét. +A harmadik fejezet egy felhő és \acrshort{iot} alapú projektet mutat be, amely a szőlővidékek kártevővédelmére lett kifejlesztve. Emellett megvizsgálja a peremhálózati rendszerek alkalmazásának lehetőségét. És bemutatja annak tervezését és implementációját. A negyedik fejezet egy gyártósori szcenáriót mutat be, ahol szintén körbejárja a peremhálózati rendszerek alkalmazásának lehetőségét, majd bemutatja az átalakítás tervezési és implementálási folyamatát. -Az ötödik fejezet a végeszközöket kiszolgáló komponensek dinamikus mozgatásával foglalkozik a felhő adatközpont és a peremhálózati rendszerek között. +Az ötödik fejezet a végeszközöket kiszolgáló komponensek dinamikus mozgatásával foglalkozik a felhő adatközpont és a peremhálózati rendszerek viszonylatában. A hatodik fejezet egy teszt környezet tervezésével és kialakításával foglalkozik, majd a hetedik fejezet a korábban ismertetett két alkalmazás tesztelését mutatja be ebben a környezetben. + +Ezután munkám eredményét a nyolcadik fejezetben foglalom össze. \ No newline at end of file diff --git a/src/content/measurements.tex b/src/content/measurements.tex index cc446e2..eff8dca 100644 --- a/src/content/measurements.tex +++ b/src/content/measurements.tex @@ -12,7 +12,7 @@ A peremhálózati adatközpontok lehetőségeinek dinamikus kihasználásra felk \subsection{Környezet} -Az alkalmazás teszteléséhez feltelepítettem az alkalmazást a felhő adatközpontot szimbolizáló klaszterbe. Ugyanebbe a klaszterbe telepítettem \aref{sec:scheduler}.\ szekcióban ismertetett ütemező szoftvert is. +Az alkalmazás teszteléséhez feltelepítettem az alkalmazást a felhő adatközpontot szimbolizáló klaszterbe. Ugyanebbe a klaszterbe telepítettem \aref{sec:scheduler}.\ alfejezetben ismertetett ütemező szoftvert is. Az alkalmazás működésének teszteléséhez egy olyan forgatókönyvet állítottam össze, amelyben az ütemező számára mind a három adatközpont potenciális jelölt lehet az előszűrő szolgáltatás beütemezésére. Ehhez az alábbi prioritási sorrendet állítottam fel: \begin{enumerate} @@ -21,7 +21,7 @@ Az alkalmazás működésének teszteléséhez egy olyan forgatókönyvet állí \item \texttt{cloud} \end{enumerate} -A mérés elvégezéséhez szükségem volt arra, hogy a klienseket emuláló virtuális gép képes legyen több \acrshort{iot} eszköz emulálására. \Aref{sec:birbnetes_short_desc}.\ szekcióban ismertetett kétrétegű szoftver architektúra miatt ez könnyen kivitelezhető volt. Egy új platform illesztő szoftver komponenst implementáltam, amely az \acrshort{iot} eszközön lévő hardverelemeket emulálja. A mikrofon emulációja egy fixen felvett hangfájl tartalmát szolgálja ki a logikai résznek, a többi hardver elem működése pedig csak naplózásra kerül. +A mérés elvégezéséhez szükségem volt arra, hogy a klienseket emuláló virtuális gép képes legyen több \acrshort{iot} eszköz emulálására. \Aref{sec:birbnetes_short_desc}.\ alfejezetben ismertetett kétrétegű szoftver architektúra miatt ez könnyen kivitelezhető volt. Egy új platform illesztő szoftver komponenst implementáltam, amely az \acrshort{iot} eszközön lévő hardverelemeket emulálja. A mikrofon emulációja egy fixen felvett hangfájl tartalmát szolgálja ki a logikai résznek, a többi hardver elem működése pedig csak naplózásra kerül. Miután ez megvolt egy egyszerű szkriptet készítettem, amely konfigurálható számú \acrshort{iot} hardver emulációját indítja el és felel az életciklusuk kezeléséért. Ennek segítségével a mérések során tetszőleges számú eszközt tudtam emulálni. @@ -44,6 +44,7 @@ Egy eszköz átütemezése nem orvosolta még a problémát, ezért átütemezet \subsection{Értékelés} +\label{sec:birbnetes-evaluation} A tesztek eredménye jól demonstrálja, az ütemező algoritmus és az átalakított alkalmazások helyes működését. @@ -57,9 +58,9 @@ Emellett feltűnő volt, hogy a rendszer nagyon lassan reagál a terhelésre és \subsection{Környezet} -Az alkalmazás teszteléséhez feltelepítettem az alkalmazást a felhő adatközpontot szimbolizáló klaszterbe. Ugyanebbe a klaszterbe telepítettem \aref{sec:scheduler}.\ szekcióban ismertetett ütemező szoftvert metrika gyűjtő komponenseit is, mivel itt nem volt szükség az ott ismertetett ütemező futtatására. +Az alkalmazás teszteléséhez feltelepítettem az alkalmazást a felhő adatközpontot szimbolizáló klaszterbe. Ugyanebbe a klaszterbe telepítettem \aref{sec:scheduler}.\ alfejezetben ismertetett ütemező szoftvert metrika gyűjtő komponenseit is, mivel itt nem volt szükség az ott ismertetett ütemező futtatására. -A robotkarok szimulálására \aref{sec:ursim_simulator}.\ szekcióban ismertetett \textit{DockURSim} szoftvert futtattam két példányban. Mivel a vezérlő szolgáltatások \acrshort{ip} cím alapján kapcsolódnak az egyes robotkarokhoz, így a klienseket emuláló virtuális gépnek felvettem két \acrshort{ip} címet, az egyik szimulátor portjait az egyik címhez a másikat a másikhoz rendeltem. Így képes voltam két robotkar szimulálására. +A robotkarok szimulálására \aref{sec:ursim_simulator}.\ alfejezetben ismertetett \textit{DockURSim} szoftvert futtattam két példányban. Mivel a vezérlő szolgáltatások \acrshort{ip} cím alapján kapcsolódnak az egyes robotkarokhoz, így a klienseket emuláló virtuális gépnek felvettem két \acrshort{ip} címet, az egyik szimulátor portjait az egyik címhez a másikat a másikhoz rendeltem. Így képes voltam két robotkar szimulálására. A méréshez növeltem a kliens és az egyes adatközpontok közötti linkek késleltetését úgy, hogy a következő értékeket érjék el: \begin{itemize} diff --git a/src/content/overview.tex b/src/content/overview.tex index 6743e94..7d6e797 100644 --- a/src/content/overview.tex +++ b/src/content/overview.tex @@ -257,4 +257,4 @@ Népszerűségének köszönhetően sok dokumentáció, leírás és egyéb seg % TODO: Még lehetne írni jókat erről -\textbf{A feladatom megoldásához én ezt a keretrendszert választottam}, ennek okát \aref{sec:cloud_framework}.\ szekcióban részletezem. +\textbf{A feladatom megoldásához én ezt a keretrendszert választottam}, ennek okát \aref{sec:cloud_framework}.\ alfejezetben részletezem. diff --git a/src/content/scheduling.tex b/src/content/scheduling.tex index 5bdc9b8..8568ff8 100644 --- a/src/content/scheduling.tex +++ b/src/content/scheduling.tex @@ -4,8 +4,7 @@ \label{chapter:dynamic_scheduling} %---------------------------------------------------------------------------- -Az előző fejezetekben ismertetett, átalakított alkalmazások jól ki tudják használni a peremhálózati informatikai infrastruktúra adta lehetőségeket. Mint azt a \aref{sec:peremhalozati_rendszerek}.\ %szekcióban -alfejezetben is ismertettem, a peremhálózati rendszerek és a hagyományos adatközpontok több dologban különböznek. Egyik ilyen különbség a telepítésük sűrűsége. Ez a tulajdonság lehetővé teszi, hogy a megvalósított alkalmazás szempontjából bizonyos szolgáltatásokat a felhasználókhoz \enquote{közel} futtasson. Ennek a \enquote{közelségnek} önmagában számos előnye tud lenni, mint például a csökkentett hálózati késleltetés és terhelés. Tipikusan a peremhálózati infrastruktúrákra jellemző, hogy a felhő végtelennek tűnő számítási kapacitásához képest erősen limitált erőforrások állnak rendelkezésre. +Az előző fejezetekben ismertetett, átalakított alkalmazások jól ki tudják használni a peremhálózati informatikai infrastruktúra adta lehetőségeket. Mint azt a \aref{sec:peremhalozati_rendszerek}.\ alfejezetben is ismertettem, a peremhálózati rendszerek és a hagyományos adatközpontok több dologban különböznek. Egyik ilyen különbség a telepítésük sűrűsége. Ez a tulajdonság lehetővé teszi, hogy a megvalósított alkalmazás szempontjából bizonyos szolgáltatásokat a felhasználókhoz \enquote{közel} futtasson. Ennek a \enquote{közelségnek} önmagában számos előnye tud lenni, mint például a csökkentett hálózati késleltetés és terhelés. Tipikusan a peremhálózati infrastruktúrákra jellemző, hogy a felhő végtelennek tűnő számítási kapacitásához képest erősen limitált erőforrások állnak rendelkezésre. Könnyen beláthatjuk ezekből adódóan, hogy fontos szerepe van annak a kérdésnek, hogy egyes szolgáltatásokat mikor és melyik peremhálózati rendszeren futtatunk, vagy hogy megéri-e kihelyezni őket a felhő által nyújtott futtatókörnyezetből. Egy rosszul megválasztott szolgáltatás elhelyezés könnyen lehet, hogy az előnyök teljes ellentétét idézi elő megnövekedett költségek mellett. Mivel a peremhálózati rendszerek sokkal nagyobb számban állnak rendelkezésre és a helyes elhelyezés is kockázatos feladat, ezért az elhelyezési feladatokat minden esetben \enquote{kézzel} megoldani jelentős kihívást tud jelenteni. @@ -189,14 +188,14 @@ Ennek a szolgáltatásnak a feladata, hogy számontartsa az egyes eszközök jel Ha a szolgáltatásból egy eddig ismeretlen eszköz kéri le az ütemezését, akkor azt egy dinamikusan megválasztott \enquote{alapértelmezett} adatközponthoz rendeli. Ezután ezt az ütemezési döntést elmenti és innentől kezdve ugyanúgy van kezelve az új eszköz is, mint az összes többi. -A kiszolgált adatokat egy kulcs-érték adatbázisban tárolja. Ehhez \textit{Redis} adatbázist használtam, ennek oka az, hogy a \textit{Redis} támogatja az értékekhez lejárati idő rendelését. A lejárai idő leteltével az értékeket automatikusan törli. Ennek a segítségével számos funkcionalitást könnyebb volt implementálni. A \textit{Redis} támogatja továbbá az osztott memóriaként való funkcionalitást, amelyet kihasználva \aref{sec:birb-scheduler}.\ szekcióban ismertetett szolgáltatással való kommunikációt megoldottam. +A kiszolgált adatokat egy kulcs-érték adatbázisban tárolja. Ehhez \textit{Redis} adatbázist használtam, ennek oka az, hogy a \textit{Redis} támogatja az értékekhez lejárati idő rendelését. A lejárai idő leteltével az értékeket automatikusan törli. Ennek a segítségével számos funkcionalitást könnyebb volt implementálni. A \textit{Redis} támogatja továbbá az osztott memóriaként való funkcionalitást, amelyet kihasználva \aref{sec:birb-scheduler}.\ alfejezetben ismertetett szolgáltatással való kommunikációt megoldottam. \subsubsection{Dinamikus újra-ütemező} \label{sec:birb-scheduler} -\Aref{sec:birb-scheduler-teller}.\ szekcióban ismertetett szolgáltatás csak egy statikus hozzárendelést valósít meg az új eszközök és az adatközpontok között. Viszont ezek után nem változtatja meg a döntését. Ezeknek a döntéseknek a felülvizsgálatára és az \enquote{alapértelmezett} adatközpont dinamikus megváltoztatására szolgál ez a szolgáltatás. +\Aref{sec:birb-scheduler-teller}.\ alfejezetben ismertetett szolgáltatás csak egy statikus hozzárendelést valósít meg az új eszközök és az adatközpontok között. Viszont ezek után nem változtatja meg a döntését. Ezeknek a döntéseknek a felülvizsgálatára és az \enquote{alapértelmezett} adatközpont dinamikus megváltoztatására szolgál ez a szolgáltatás. -Ez a szolgáltatás valósítja meg \aref{sec:scheduling-algo}.\ szekcióban vázolt periodikusan futó ütemező algoritmust. +Ez a szolgáltatás valósítja meg \aref{sec:scheduling-algo}.\ alfejezetben vázolt periodikusan futó ütemező algoritmust. Futása során a kiértékelt metrikákat lekérdezi a \textit{Mérés kezelő} szolgáltatásból. Majd ezek alapján és az osztott \textit{Redis} adatbázisban tárolt információk alapján meghozza az ütemezési döntést. Szükség esetén \textit{Kubernetes} \acrshort{api} hívásokkal elindítja a \textit{KubeFed} által kezelt szolgáltatást a megfelelő adatközpontban majd ezek után az ütemezési döntést rögzíti a az adatbázisban. így legközelebb amikor az eszköz frissíti a konfigurációját már az újonnan indított szolgáltatáshoz küldi az információkat, ezzel megvalósítva a dinamikus átütemezést. @@ -208,7 +207,7 @@ A szolgáltatás azt is ellenőrzi, hogy a kijelölt \enquote{alapértelmezett} A robotkarokat vezérlő alkalmazás számára szükség van arra az információra, hogy az egyes adatközpontokkal milyen minőségű a link összeköttetése. -Ennek a megvalósítására egy egyszerű szkriptet készítettem, amely leméri az összes adatközponttal szembeni késleltetést, majd ezeket elküldi \aref{sec:birb-latency-collector}.\ szekcióban ismertetett szolgáltatás számára, amely így képes arról kiértékelést készíteni. +Ennek a megvalósítására egy egyszerű szkriptet készítettem, amely leméri az összes adatközponttal szembeni késleltetést, majd ezeket elküldi \aref{sec:birb-latency-collector}.\ alfejezetben ismertetett szolgáltatás számára, amely így képes arról kiértékelést készíteni. A késleltetés mérésére kézenfekvő megoldás lehet a hagyományos \acrfull{icmp} által biztosított \textit{Ping} kérésekkel mérni a körülfordulási időt. De ez csak egy nagyon limitált eredményt ad egy konkrét végponthoz. diff --git a/src/content/ursim_impl.tex b/src/content/ursim_impl.tex index 31dcd8d..3bd772d 100644 --- a/src/content/ursim_impl.tex +++ b/src/content/ursim_impl.tex @@ -155,11 +155,11 @@ Az adatok gyűjtése nem késleltetés érzékeny, ezért nem okoz problémát, \subsection{Peremhálózati szolgáltatások} % Peremhálózati rendszer basically \label{sec:single_robot_contoller_plans} -\Aref{sec:edge_layer_plans}.\ szekcióban ismertetettek alapján terveztem meg a peremhálózati rendszerben futó mikroszolgáltatás halmazt. Jelenleg ez egyetlen egy mikroszolgáltatásból áll, ez a szolgáltatás a \textit{program}ok futtatását valósítja meg. +\Aref{sec:edge_layer_plans}.\ alfejezetben ismertetettek alapján terveztem meg a peremhálózati rendszerben futó mikroszolgáltatás halmazt. Jelenleg ez egyetlen egy mikroszolgáltatásból áll, ez a szolgáltatás a \textit{program}ok futtatását valósítja meg. Egy program egyszerre csak egy robotkar működését írja le, így egy ilyen komponens egyszerre csak egy robotkarhoz kapcsolódik. A demonstráció végrehajtásához két komponensnek kell kapcsolódnia. -Emellett meg kell oldania olyan problémákat is, amelyek \aref{sec:ursim_demo_control}.\ szekcióban ismertetett programnál adottak -- vagy legalábbis közel-triviálisan megoldhatóak -- voltak. +Emellett meg kell oldania olyan problémákat is, amelyek \aref{sec:ursim_demo_control}.\ alfejezetben ismertetett programnál adottak -- vagy legalábbis közel-triviálisan megoldhatóak -- voltak. \subsubsection{Végrehajtási keretrendszer} \label{sec:ursim_execution_framework} @@ -225,7 +225,7 @@ A \textit{plugin}ek további funkcionalitást regisztrálhatnak, amiket az \acrs \subsubsection{\textit{Program Service}} -Az architektúra, melyet \aref{sec:edge_layer_plans}.\ szekcióban bemutattam lehetővé teszi, hogy a felhőben futó komponensek bármilyen programot adjanak a peremhálózati réteg számára, legyen az automatikusan vagy részben automatikusan generált. +Az architektúra, melyet \aref{sec:edge_layer_plans}.\ alfejezetben bemutattam lehetővé teszi, hogy a felhőben futó komponensek bármilyen programot adjanak a peremhálózati réteg számára, legyen az automatikusan vagy részben automatikusan generált. Mivel sem a demonstráció, sem a dolgozatom szempontjából nem lényeges, hogy milyen módon keletkeznek a \textit{program}ok magas szinten, ezért itt csak egy egyszerű, előre elkészített programokat tároló szolgáltatást terveztem. @@ -255,7 +255,7 @@ Az összes általam választott szolgáltatást \gls{python} nyelven implementá \subsection{Mikroszolgáltatások} -Mint ahogy \aref{fig:usrsim_services_plan-clean}.\ ábra is mutatja, \aref{sec:single_robot_contoller_plans}.\ és \aref{sec:cloud_layer_plans}.\ szekciókban ismertetett mikroszolgáltatásokat implementáltam. +Mint ahogy \aref{fig:usrsim_services_plan-clean}.\ ábra is mutatja, \aref{sec:single_robot_contoller_plans}.\ és \aref{sec:cloud_layer_plans}.\ alfejezetben ismertetett mikroszolgáltatásokat implementáltam. \begin{figure}[h!] \centering @@ -297,7 +297,7 @@ Minden \textit{plugin} egy különálló osztályban van megvalósítva. Ennek p A beregisztrált utasítás osztályok lényegében egy \textit{factory} mintát valósítanak meg. Amikor a szolgáltatás betölt egy \textit{programot} akkor először minden lépését értelmezi azzal, hogy ezekkel a \textit{factory} osztályokkal példányosítja a konkrét utasítás objektumot. Ezen a ponton lehetőség van a bevitt adatok helyességének ellenőrzésére, hogy ez ne a futtatáskor történjen meg, ezzel futtatás közben spórolva a \acrshort{cpu} ciklusokkal és \textit{fail-early} megközelítés szerint még az előtt kiderülnek a problémák, hogy a program futtatásra kerülne. -Az értelmezett utasításokat listába szervezve készíti elő a futtatható \textit{program}ot a szolgáltatás. Ezek a példányosított utasítások implementálják \aref{sec:ursim_execution_framework}.\ szekcióban említett három fő funkciót: \texttt{execute}, \texttt{abort} és \texttt{describe}. Az egyes paraméterek összerendelése ebben a lépésben történik meg az utasításokhoz. +Az értelmezett utasításokat listába szervezve készíti elő a futtatható \textit{program}ot a szolgáltatás. Ezek a példányosított utasítások implementálják \aref{sec:ursim_execution_framework}.\ alfejezetben említett három fő funkciót: \texttt{execute}, \texttt{abort} és \texttt{describe}. Az egyes paraméterek összerendelése ebben a lépésben történik meg az utasításokhoz. Amikor egy program futtatásra kerül, akkor a komponens egyesével lépkedve a listán minden elemnek meghívja az \texttt{execute} függvényét. Ha meg kell szakítani a futást, akkor az éppen futó lépes \texttt{abort} függvényét meghívva, leállítja azt, és a következő parancsot már nem hajtja végre. @@ -311,7 +311,7 @@ A \textit{plugin} inicializációjakor kapcsolódik a \textit{Redis} adatbázish Az általa szolgáltatott utasításnak két paramétere van, az egyik a szinkronizációs pont neve, a második pedig a komponensek száma, amelyek ugyanezen a ponton várakoznak. Annak érdekében, hogy ez egyedi legyen, és két különálló lefutása a programnak ne befolyásolja az adatbázis tartalmát, ezáltal ne legyen hatással a program lefutására, így az adatbázisban tárolt kulcsok nevéhez a futtatási azonosítót is hozzáfűzi. -Amikor a program futása erre a pontra érkezik, akkor az várakozni fog egészen addig, amíg az összes többi komponens által futtatott program egy ugyan ilyen nevű szinkronizációs pontra nem ér. Ezután \aref{sec:ursim_snyc_proto}.\ szekcióban ismertetettek szerint \enquote{egyeztetett} időpontban halad tovább. +Amikor a program futása erre a pontra érkezik, akkor az várakozni fog egészen addig, amíg az összes többi komponens által futtatott program egy ugyan ilyen nevű szinkronizációs pontra nem ér. Ezután \aref{sec:ursim_snyc_proto}.\ alfejezetben ismertetettek szerint \enquote{egyeztetett} időpontban halad tovább. \subsubsection{\textit{UR-RTDE Plugin}}