From 26da5a73868fc0d58ac3053c82557a0ea0a1f3ad Mon Sep 17 00:00:00 2001 From: Chao Zhan <chao.zhan@fu-berlin.de> Date: Wed, 5 Jul 2023 23:42:22 +0200 Subject: [PATCH] update slides and add python rpc example --- README.md | 2 +- exercises/python-rpc/client.py | 8 +++++++ exercises/python-rpc/server.py | 13 +++++++++++ slides/images/RMI.webp | Bin 0 -> 19084 bytes slides/images/RPC.webp | Bin 0 -> 19698 bytes slides/pages/recap.md | 38 +++++++++++++++++++++++++++++---- 6 files changed, 56 insertions(+), 5 deletions(-) create mode 100644 exercises/python-rpc/client.py create mode 100644 exercises/python-rpc/server.py create mode 100644 slides/images/RMI.webp create mode 100644 slides/images/RPC.webp diff --git a/README.md b/README.md index 9e3710d..8c4b536 100644 --- a/README.md +++ b/README.md @@ -5,5 +5,5 @@ This branch contains all materials for the 9th tutorial session. ## Agenda - Assignment's solution presentation -- Recap & Discussion: P2P, Cloud Computing +- Recap & Discussion: RMI, P2P, Cloud Computing - Q&A diff --git a/exercises/python-rpc/client.py b/exercises/python-rpc/client.py new file mode 100644 index 0000000..49d07ca --- /dev/null +++ b/exercises/python-rpc/client.py @@ -0,0 +1,8 @@ +import xmlrpc.client + +server = xmlrpc.client.ServerProxy("http://localhost:8000") +with server as proxy: + result = proxy.square(5) + print("[RPC] The square of 5 is:", result) + result = proxy.cube(5) + print("[RPC] The cube of 5 is:", result) diff --git a/exercises/python-rpc/server.py b/exercises/python-rpc/server.py new file mode 100644 index 0000000..316a35f --- /dev/null +++ b/exercises/python-rpc/server.py @@ -0,0 +1,13 @@ +import xmlrpc.server + +class MyServer: + def square(self, x): + return x * x + + def cube(self, x): + return x * x * x + +server = xmlrpc.server.SimpleXMLRPCServer(("localhost", 8000)) +print("Listening on port 8000...") +server.register_instance(MyServer()) +server.serve_forever() diff --git a/slides/images/RMI.webp b/slides/images/RMI.webp new file mode 100644 index 0000000000000000000000000000000000000000..f4b3bdba4d1689a7214b5cc3b5962ab44d1d163a GIT binary patch literal 19084 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 IkAZ;!03dZ}i~s-t literal 0 HcmV?d00001 diff --git a/slides/images/RPC.webp b/slides/images/RPC.webp new file mode 100644 index 0000000000000000000000000000000000000000..5000c9b91c36d720d349f011ff2d4f5cf37a5aa2 GIT binary patch literal 19698 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 literal 0 HcmV?d00001 diff --git a/slides/pages/recap.md b/slides/pages/recap.md index 65dab97..e308aaf 100644 --- a/slides/pages/recap.md +++ b/slides/pages/recap.md @@ -9,6 +9,40 @@ A possible approach: - Use different threads to handle different clients as well as different tasks - Use different ports to handle different services +See live demo. + +--- +title: RPC +--- + +## Remote Procedure Call (RPC) + +**Remote Procedure Call (RPC)** is a distributed computing technique in which a computer program calls a procedure (subroutine or service) to execute in a different address space than its own. + +<div class="container flex justify-center mt-5"> + <img src="/images/RPC.webp" class="block w-md"/> +</div> + +**Language Specific**: + +- Java Remote Method Invocation (RMI) +- Go RPC +- ... + +--- +title: RMI +--- + +## Java Remote Method Invocation (RMI) + +It is a mechanism that allows an object residing in one system (JVM) to access/invoke an object running on another JVM. + +<div class="container flex justify-center mt-5"> + <img src="/images/RMI.webp" class="block w-md"/> +</div> + +**Note:** RMI is a Java-specific implementation of RPC. + --- title: P2P --- @@ -29,7 +63,6 @@ title: Cloud Computing --- # Cloud Computing - Discuss the following topics and explain those concepts in your own words to your teammates: <br/> @@ -38,6 +71,3 @@ Discuss the following topics and explain those concepts in your own words to you - What are the **deployment models** of cloud computing? - What are the key technologies involved in cloud computing? -<!-- <div class="container flex justify-center"> --> -<!-- <img src="/images/http-header.png" class="block w-md"/> --> -<!-- </div> --> -- GitLab