Systems Architecture ClientServer Systems 11 ClientServer CSC 407

  • Slides: 14
Download presentation
Systems Architecture Client-Server Systems 11 - Client/Server CSC 407 1

Systems Architecture Client-Server Systems 11 - Client/Server CSC 407 1

Client/Server • In general, any application where multiple clients connect to a single server.

Client/Server • In general, any application where multiple clients connect to a single server. client 1 client 2 client 3 server • one client program (most typical) or • multiple client programs 11 - Client/Server CSC 407 2

Relational Databases • Most common client/server program is where the server is a relational

Relational Databases • Most common client/server program is where the server is a relational database server. – warning: some use the term client/server to refer to this usage exclusively (we won’t). client 1 client 2 client 3 RDBMS 11 - Client/Server CSC 407 3

Relation Database Implementation client 1 client 2 client 3 RDBMS Server disks 11 -

Relation Database Implementation client 1 client 2 client 3 RDBMS Server disks 11 - Client/Server CSC 407 4

IPC • “Inter-Process Communications” – How processes will communicate and synchronize with oneanother. –

IPC • “Inter-Process Communications” – How processes will communicate and synchronize with oneanother. – communications mechanisms: • shared memory – very fast – can’t use over a network » well, you can • message passing – can use over a network – slower » well, not always – will consider only message passing (most important) 11 - Client/Server CSC 407 5

IPC Protocols • Basic message-passing mechanisms provide for a bytestream only. • Must implement

IPC Protocols • Basic message-passing mechanisms provide for a bytestream only. • Must implement various protocols on top of this – sockets – RPC (remote procedure call) – DO (distributed objects) 11 - Client/Server CSC 407 6

Sockets code example public class Server { public static void main(String[] args) throws Exception

Sockets code example public class Server { public static void main(String[] args) throws Exception { Server. Socket server = new Server. Socket(1234); Socket client = server. accept(); Buffered. Reader from. Client = new Buffered. Reader( new Input. Stream. Reader(client. get. Input. Stream())); System. out. println(from. Client. read. Line()); } } public class Client { public static void main(String[] args) throws Exception { Socket server = new Socket(“penny", 1234); Data. Output. Stream to. Server = new Data. Output. Stream( server. get. Output. Stream()); to. Server. write. Bytes("hello server"); server. close(); } } 11 - Client/Server CSC 407 7

Performance • Latency – The time to go back and forth • Bandwidth –

Performance • Latency – The time to go back and forth • Bandwidth – The amount of data that can be sent • Analogy from ocean lines – Bandwidth of QE 2 is high (can carry a lot) – Latency is bad (takes a long time for a round trip). 11 - Client/Server CSC 407 8

Test System • Windows 2000 Java Server – Network • 100 Mbit/s ethernet –

Test System • Windows 2000 Java Server – Network • 100 Mbit/s ethernet – CPU • dual 1 GHz processors – Memory • 1 GByte • Windows 98 Java Client – Network • 100 Mbit/s ethernet – CPU • 366 MHz – Memory • 96 MByte 11 - Client/Server CSC 407 9

Java/Windows Performance Measures • Latency: Sending “hello serverrn” back and forth – Local method

Java/Windows Performance Measures • Latency: Sending “hello serverrn” back and forth – Local method calls • . 13 usec/2 call – Socket on local machine • 70 usec / 2 call (x 500) – Socket on remote machine • 320, 000 usec /2 call (x 5, 000 , x 2, 500, 000) • Bandwidth – Sending “hello serverrn” to server repeatedly • 1400 usec / 2 call (x 10, 000 , x 230) 11 - Client/Server CSC 407 10

Performance In Process Latency Bandwidth 11 - Client/Server Network 1 2, 500, 000 1

Performance In Process Latency Bandwidth 11 - Client/Server Network 1 2, 500, 000 1 10, 000 CSC 407 11

C/Windows Performance Measures • Latency: Sending “hello serverrn” back and forth – Local method

C/Windows Performance Measures • Latency: Sending “hello serverrn” back and forth – Local method calls • . 01 usec/2 call (10 x Java) – Socket on local machine • 12 usec / 2 call (6 x Java) – Socket on remote machine • 840 usec /2 call (380 x Java) 11 - Client/Server CSC 407 12

Performance In Process Latency 11 - Client/Server 1 Network 84, 000 CSC 407 13

Performance In Process Latency 11 - Client/Server 1 Network 84, 000 CSC 407 13

Performance Implications • Do as few calls as possible over the net • Prefer

Performance Implications • Do as few calls as possible over the net • Prefer asynchronous approaches – problem: success/failure indications – send lots of stuff, then synchronize • Use bigger transactions • Prefer one call with lots of data to many calls with the same amount of data – but not by much • Send as little data as possible 11 - Client/Server CSC 407 14