In this section we'll take a deeper look at the Kuzzle Core internals.
The above schema shows the main architecture in Kuzzle, which is composed of the following entities.
- Kuzzle Proxy: handles the communication between the client and Kuzzle (see Connecting to kuzzle), and forwards the input message to the Router.
- Router: exposes the API routes, normalizes the Request and sends them to the Funnel.
- Funnel: analyses the Request and forwards it to the appropriate Controller.
- Controllers: handle and respond to client requests (see API reference)
- Internal Components: Any component internally accessed by controllers.
- Service Components: Any component used to interact with external services (see below).
In Kuzzle, a Service module is the implementation of the interface to different components of the application (think of a system service).
Kuzzle currently implements the following Services:
- elasticsearch.js: interface to Elasticsearch, used for persistent data storage.
- redis.js: interface to the redis cache server.
- proxyBroker.js: interface with the proxy.
- Broker Client and Server: implementation of the internal message broker.
- internalEngine.js: light interface with the internal index (containing kuzzle's configuration) in Elastic Search.
A Service can be added to different engines. For example, Redis is used by both the internalCache and the memoryStorage (see default.config.js).