MyQ Architecture
MyQ Servers and applications
MyQ is a distributed system made of servers and client applications. The image below depicts a high level overview of all the components and main communication channels. Each component usually runs on its own computer be it a server, a PC, a mobile phone, or a printer.
The Central Server is responsible for Site Servers configuration, reporting, and licensing. Site Servers still need additional individual configuration.
A Site Server is responsible for print job spooling, scan delivering, user interaction with printers, printer monitoring, and many more.
MyQ Desktop Client is an additional application running on users PCs. It offers user authentication and identification, project and cost-center selection, local printers monitoring (mostly USB), client spooling and many other features.
The OCR Server is used for Optical Character Recognition on scan jobs. An OCR server uses lots of resources, so it usually runs on its own machine.
The MyQ X Mobile Client is used for native printing on iOS, macOS, and Android devices.
Mobile Print Agent gives users access to printers via AirPrint (for iOS), and Mopria Print Service (for Android smart phones or tablets). It usually runs on its own machine with access to a Wi-Fi network where mobile devices can discover it.
Print Server from the OS process perspective
In the image below, you can see what OS processes are running on a Print Server, and what the main communication channels are.
The heart of the system is the Print Server. It's based on the WSF Platform – MyQ’s platform for network services development. MyQ specific logic is implemented as Platform services, which are packaged in plugin*.dll files. These plugins are written in C++ and a few of them also in C#. WSF Platform also supports services implemented in PHP. PHP doesn't support DLLs, so the platform services implemented in PHP are invoked via a set of php.exe workers.
The Print Server also manages a set of Job Processor workers which are used for job parsing. The Job Processor is running as a process and not as a part of the Print Server, to avoid its failure in case of the Job Processor’s failure.
As a network server, Print Server Service is responsible for receiving print jobs via LPR, IPP, and other protocols. It also handles Messages, which is our push-notifications engine. Messages are used to notify clients about events in the system.
Apache is an HTTP server for our Web UI and MyQ REST API. Both applications are implemented in PHP. Apache is maintaining a set of php-cgi.exe workers to handle execution.
HTTP Router is our reverse proxy through which all incoming HTTP based traffic flows. It's main functionality is TLS termination.
Terminal Packages implement the embedded terminal for a specific vendor. They expose their own API used by the printers.
PM Server is a component created by Kyocera. It provides API to configure Kyocera devices and to install the embedded terminal application. PM Server uses the Thrift technology to implement its API. MyQ is also providing part of its API via Thrift, so PM Server can access it.
Many of the components use the Database Server to store data. Furthermore, many of the components including Firebird, store their data in the MyQ Data Folder which is located by default in C:\ProgramData\MyQ. In production, this folder is typically located on a network drive.
Executable names
Friendly name | Executable name | Alternative names |
---|---|---|
HTTP Router | traefik.exe | Traefik |
HTTP Server | httpd.exe | Apache |
Database Server | firebird.exe | Firebird |
Print Server | myq.exe | |
Kyocera Provider | knum.server.exe | PM Server |
*Terminals | MyQ*Terminal.exe | Terminal Package |
Job Processor | MyQJobProcessor.exe |
*used for vendor name