An FME Server system consists of a Client layer and a Server layer, each with a number of components.
Mouse-over to view architecture diagram:
FME Server Components
A Java Web Application Server is required in order to run the FME Server Web User Interface, FME Server Web Services, and any other web clients. Depending on installation configuration, the Web Application Server may be a version of Apache Tomcat included with FME Server. Alternatively, it may be a servlet provided separately. Supported servlets are Apache Tomcat and Oracle WebLogic.
2 Web Clients
The Web User Interface is included with FME Server and can be run in a browser.
Custom web clients can be developed on top of the FME Server REST API.
3 FME Server Web Services
FME Server provides predefined services to carry out common tasks. Services provided with FME Server include:
- Transformation Services, which include the Data Download, Job Submitter, Data Streaming, and KML Network Link services.
- Data Upload service.
4 Non-Web Clients
- FME Workbench is the authoring environment for FME Server but can also be used to submit jobs to FME Server through a number of transformers.
- FME Server Console is a command line interface to FME Server.
- Custom clients can be developed on top of the FME Server REST API service.
- The FME Data Express mobile app uses the REST API and FME Server Web Services over HTTP.
5 REST API
The FME Server REST Service uses the FME Server Java API to send client requests to FME Server via the FME Server API.
6 FME Server API
All requests are sent to FME Server through the low-level FME Server API.
FME Server provides Authentication and Access Control using the Java Authentication and Authorization Service (JAAS) framework.
8 FME Server Core
The FME Server Core manages job requests, scheduling, and repository contents.
9 Process Monitor
The Process Monitor provides fault tolerance functionality, ensuring that the FME Server Core and FME Engines remain available to process requests. The Process Monitor also provides a mechanism for managing the FME Server and FME Engine components, including the ability to start, stop, restart, and add components. The Process Monitor uses the FME Server Database to manage process configurations.
10 FME Engines
FME Engines process job requests by running FME Workspaces. Each FME Engine processes a single request at a time. FME Server processing can be scaled by adding FME Engines to the same computer or to separate computers within a distributed FME Server environment.
Typically, an FME Server job runs a workspace that reads and/or writes data. FME Server administrators must ensure that FME Engines have read access to datasets or databases the workspaces read, and write access to any directories or databases the workspaces write to.
12 FME Server Database
The FME Server Core uses the FME Server Database to store job and repository information. The database should never be edited directly, although querying the database for job history and other statistical information is common.
Express installations of FME Server run the FME Server Database on a version of the PostgreSQL database server. (The version of PostgreSQL for this documented release is 11.) Distributed installations run the FME Server Database on a server provided separately. Supported database servers are PostgreSQL, Oracle, and SQL Server.
13 FME Server System Share
In a Distributed Installation, the FME Server System Share files are installed in directories on a remote file system to enable access from different computers. These files include Repositories and Resources.
FME Server Connections
Web Clients use the FME Server Web Services over HTTP. Communication is defined by the Web Services API, the REST API, and the FME Server API.
Non-web Clients use the REST API over HTTP.
Web Clients, FME Server Web Services and non-web clients use the FME Server API to communicate with FME Server over TCP/IP. Requests are sent to the FME Server Core over port 7071. Messages are returned to clients over a randomly-assigned port created by the FME Server Core.
The FME Server API communicates over Port 7500 to the Process Monitor.
The FME Server API sends job and repository requests to the FME Server Core over TCP/IP port 7071.
The Process Monitor monitors the FME Engine processes and restarts them if they halt.
Once registered (see K below), the FME Engines communicate with the FME Server Core over TCP/IP ports dynamically determined by the Core.
The FME Engines read and write data from shared/mounted drives, databases, web services, and others.
The FME Server Core communicates with the FME Server Database via JDBC over TCP/IP port 7082.
The FME Engines communicate with the FME Server Database. The port varies depending on the selected database.
The FME Engines perform initial registration with the FME Server Core over TCP/IP port 7070.
The FME Server API can be used to send job scheduling requests to the FME Server Core over TCP/IP port 7073.
The FME Server API can be used to send notification requests to the FME Server Core over TCP/IP port 7072.
Automations external actions and Notification Service subscribers perform initial registration with the FME Server Core over TCP/IP port 7074. Subscribers process notifications received by the FME Server Core.
Automations triggers and Notification Service publishers perform initial registration with the FME Server Core over TCP/IP port 7076. The FME Server API can be used to relay requests to the FME Server Core over TCP/IP port 7075. For Email - SMTP trigger and SMTP Publisher ports, see FME Server Ports.
Access to Resources is communicated with the FME Server Core over TCP/IP Port 7079.
Communication with the FME Server WebSocket Server takes place over port 7078.
Automatic (online) Licensing requests take place through HTTP over port 80.
The FME Server Queue manages Queue Control and dispatches jobs as needed. Communication is over port 6379.
System Cleanup requests are handled over port 7081.