In this section we'll take a closer look at Kuzzle's server architecture.
The diagram above depicts the various components that make up the server architecture, these are:
- Entry Points: handles the incoming message and sends them to the Funnel.
- Router: exposes the HTTP endpoints, normalizes any request, and forwards it to the Funnel.
- Funnel: receives normalized requests and forwards it to the appropriate controller, sends results back to the Entry Points.
- Controllers: receives data fom the Funnel, processes it, and returns a result to the Funnel (see API reference).
- Internal Components: are internal modules used by controllers to process a request.
- Service Components: are interfaces used by controllers to connect to external services (see below).
In our architecture, a "Service" is an interface that interacts with external components.
Kuzzle currently implements the following Services:
- elasticsearch.js: interface to Elasticsearch, used for persistent data storage.
- redis.js: interface to the redis, used as a cache.
- internalEngine.js: interface to Kuzzle's configuration index in Elastic Search.
A Service can be used by more than one Service Component. For example, Redis is used by both the Internal Cache Service Component and the Memory Storage Service Component (see default.config.js).