The Pivotal GemFire topology options allow you to scale horizontally and vertically.
- At the core of all systems is the single, peer-to-peer distributed system.
- For horizontal and vertical scaling,
you can combine individual systems into client/server and multi-site (WAN)
- In client/server systems, a small number of server processes manage data and event processing for a much larger client group.
- In multi-site systems, several geographically disparate systems are loosely coupled into a single, cohesive processing unit.
The peer-to-peer distributed system is the building block for all GemFire installations. Peer-to-peer alone is the simplest topology. Each cache instance, or member, directly communicates with every other member in the distributed system. This cache configuration is primarily designed for applications that need to embed a cache within the application process space and participate in a cluster. A typical example is an application server cluster in which the application and the cache are co-located and share the same heap.
The client/server topology is the model for vertical scaling, where clients typically host a small subset of the data in the application process space and delegate to the server system for the rest. Compared to peer-to-peer by itself, the client/server architecture provides better data isolation, high fetch performance, and more scalability. If data distribution will put a very heavy load on the network, a client/server architecture usually gives better performance. In any client/server installation, the server system is itself a peer-to-peer system, with data distributed between servers. A client system has a connection pool, which it uses to communicate with servers and other GemFire members. A client may also contain a local cache.
For horizontal scaling, you can use a loosely coupled multi-site topology. With multi-site, multiple GemFire systems are loosely coupled, generally across geographical distances with slower connections, such as with a WAN. This topology provides better performance than the tight coupling of a single system, and greater independence between locations, so that each site can function on its own if the connection or remote site become unavailable. In a multi-site installation, each individual site is a peer-to-peer or Client/Server system.