Distributed systems have several architectures including client-server, distributed objects, peer-to-peer, and service-oriented. Client-server divides systems into clients that request services and servers that provide services. Distributed object architectures treat all entities as objects that provide and use services. Peer-to-peer systems are decentralized with no clients or servers, while service-oriented systems are built by linking services from different providers. Middleware like CORBA supports communication between distributed components.