Architecture overview

Zato is composed of several components that cooperate with the aim of exposing services and applications to external clients.

../_images/arch-tech-overview.png
   
Web admin Main GUI for the management of servers running in clusters
HA load-balancer Sits in front of servers and distributes the incoming HTTP traffic in a fair manner
Servers The central piece where services are located. Servers are where HTTP, JSON, SOAP, AMQP, IBM MQ, ZeroMQ, Redis, SQL and FTP are dealt with. A server is always a part of a cluster. One of the servers of a cluster assumes the role of initiating the execution of scheduler jobs.
SQL ODB Operational Database for storing configuration that is usually static and can take advantage of SQL’s relational model
Redis A NoSQL key/value DB used for highly dynamic and rapidly changing data
Certificate Authority (CA) An additional component, an SSL CA used during the development, mainly with the goal of supporting zato quickstart clusters

Most of Zato is in Python but all the performance-critical parts are in Cython, C or C++, including the underlying asynchronous HTTP server which is written on top of gunicorn. It’s a modern server which lets one handle large numbers of incoming connections.