Lecture Notes for Client-Server Interfaces
19 April 2001 - Multi-service servers
- why stop at transport protocols - combine application protocols too
- in theory, the same advantages accrue
- in addition, amortize the cost of offering many services over one
server
- possibly simplify service implementations
- but
- a point of failure
- increased complexity - servers implement application protocols
- greater sensitivity to changes in services
- architectural issues
- mapping and running
- mapping - which services are offered through which listeners
- establishing, discovering, and responding to changes
- running - providing the discovered service
- affect on service architecture - how to hand-off
- multi-service server designs
- a multiplicity of listener sockets
- a multiplicity of services
- complexity - doing several simple things at the same time in the same
place
- how to control complexity - box and isolate; box what, isolate how
- box listener control and each service (and possibly each protocol)
- isolation depends on server architecture
- don't forget to re-integrate the isolated boxes
- concurrency - within a service, between services
- connectionless, iterating server
- simplest, assuming classic, stateless client-server communication
- connection-oriented, iterating server
- about the same as connectionless, but service time becomes an issue
- multiplexing between listener and active sockets
- connectionless, concurrent server
- is this a good idea
- thread concurrency - have a thread per listener; listener thread
dispatches
- fork concurrency - is this a good idea
- connection-oriented, concurrent server
- pretty much like connectionless
- breaking the monolith
- multi-service servers contain way too much code - move services into
separate programs
- each server request is handled by a separate program
- fork concurrency a must - followed by some form of
exec()
- why bother - central control, decentral work; reduce change
sensitivity
- don't forget multi-protocol, multi-service servers either
- configuring multi-service servers
- configuration includes service, address, and protocol
- static configuration - kill the old, start the new
- dynamic configuration - when is this possible
- turn services on and off, set new parameter or argument values
- with dynamic libraries, add new services
- need a configuration file or special configuration port (danger!)
- informing the server - polling or interrupts
- example - inetd
- a unix-standard (sorta) multi-service, multi-protocl server
- dynamic -
/etc/inetd.conf
- configuration indicates service name, tli and protocol, concurrency,
execution owner, program and arguments
- sockets are remapped to std-in, std-out, and std-err
This page last modified on 27 April 2001.