FME Server Architecture
FME Server has a number of components, some of which are considered part of the FME Server Core and others that are considered clients of FME Server.
- FME Server Clients include:
- Web Services (for example, the Job Submitter Service).
- Web Clients of FME Server such as Web User Interface.
- Non-Web Clients of FME Server, which include the FME Server Console, FME Workbench, and any custom application that uses the FME Server REST API.
- Components that are part of the FME Server Core include the following:
- Process Monitor
- Repository Manager
- FME Server Database
- Repository File System
- FME Engines
- Scheduling Manager
- Relay Manager
- FME Publishers
- FME Subscribers
- WebSocket Server
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. (The version of Apache Tomcat for this documented release is 8.5.5.) 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.
- Utility Services, including the Token and Data Upload services.
4 Non-Web Clients
- FME Workbench is the authoring environment for FME Sever 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.
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
The low level FME Server API is available in Java, .NET, and C++. All requests are sent to FME Server through the FME Server API.
FME Server provides Authentication and Access Control using the Java Authentication and Authorization Service (JAAS) framework. FME Server also includes a security token service.
8 FME Server Core
The FME Server Core manages and distributes job requests (queuing, request routing, scheduling), the repository contents (workspaces, custom formats, custom transformers, data), and notification requests. The FME Server Core contains a Software Load Balancer (SLB) that distributes jobs to FME Engines.
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.
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.
In a distributed environment, FME Engines run on a computer or computers that are separate from the FME Server host. Administrators can configure the FME Engines to register with a failover FME Server host, which acts as a backup if the primary FME Server host fails.
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 9.5.3.) Distributed installations run the FME Server Database on a server provided separately. Supported database servers are PostgreSQL, Oracle, and SQL Server.
13 File System
In a Distributed Installation, the FME Server System Share components are installed in directories on a remote file system to enable access from different computers. These files include Repositories and Resources.
FME Server Connections
Note: For a complete list of ports used by FME Server, see FME Server Ports.
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 sends job and repository requests to the FME Server Core over TCP/IP port 7071.
The Process Monitor monitors the FME Server Core processes and restarts them if they halt. The FME Server Core communicates with the Process Monitor over TCP/IP port 7500.
The Process Monitor monitors the FME Engine processes and restarts them if they halt.
Once registered (see J 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 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.
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.
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 SMTP Publisher ports, see FME Server Ports.
The FME Server configuration, and backup and restore requests, are communicated to the FME Server Core over TCP/IP port 7077.
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.