Architecture overview

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

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, JMS WebSphere 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

Zato is mostly written in Python with certain crucial parts, such as libraries used for parsing XML and JSON, being actually wrappers around lower-level C ones.

Zato’s asynchronous HTTP server is written on top of gunicorn. It’s a modern server which lets one handle large numbers of incoming HTTP connections.

External connectors - used for AMQP, WebSphere MQ and ZeroMQ messaging - use custom-written main loops developed using Pika/Kombu, Spring Python, and ZeroMQ itself, respectively.