TIBCO FTL Administration

Transcription

TIBCO FTL Administration
TIBCO FTL®
Administration
Software Release 4.1
July 2014
Two-Second Advantage®
Important Information
SOME TIBCO SOFTWARE EMBEDS OR BUNDLES OTHER TIBCO SOFTWARE. USE OF SUCH EMBEDDED
OR BUNDLED TIBCO SOFTWARE IS SOLELY TO ENABLE THE FUNCTIONALITY (OR PROVIDE LIMITED
ADD-ON FUNCTIONALITY) OF THE LICENSED TIBCO SOFTWARE. THE EMBEDDED OR BUNDLED
SOFTWARE IS NOT LICENSED TO BE USED OR ACCESSED BY ANY OTHER TIBCO SOFTWARE OR FOR
ANY OTHER PURPOSE.
USE OF TIBCO SOFTWARE AND THIS DOCUMENT IS SUBJECT TO THE TERMS AND CONDITIONS OF A
LICENSE AGREEMENT FOUND IN EITHER A SEPARATELY EXECUTED SOFTWARE LICENSE
AGREEMENT, OR, IF THERE IS NO SUCH SEPARATE AGREEMENT, THE CLICKWRAP END USER
LICENSE AGREEMENT WHICH IS DISPLAYED DURING DOWNLOAD OR INSTALLATION OF THE
SOFTWARE (AND WHICH IS DUPLICATED IN THE LICENSE FILE) OR IF THERE IS NO SUCH SOFTWARE
LICENSE AGREEMENT OR CLICKWRAP END USER LICENSE AGREEMENT, THE LICENSE(S) LOCATED
IN THE “LICENSE” FILE(S) OF THE SOFTWARE. USE OF THIS DOCUMENT IS SUBJECT TO THOSE TERMS
AND CONDITIONS, AND YOUR USE HEREOF SHALL CONSTITUTE ACCEPTANCE OF AND AN
AGREEMENT TO BE BOUND BY THE SAME.
This document contains confidential information that is subject to U.S. and international copyright laws and
treaties. No part of this document may be reproduced in any form without the written authorization of TIBCO
Software Inc.
TIBCO, Two-Second Advantage, The Power of Now, TIB, Information Bus, FTL, eFTL, Rendezvous and
Messaging Appliance are either registered trademarks or trademarks of TIBCO Software Inc. in the United
States and/or other countries.
Enterprise Java Beans (EJB), Java 2 Platform Enterprise Edition (J2EE), and all Java-based trademarks and logos
are trademarks or registered trademarks of Oracle Corporation in the U.S. and other countries.
All other product and company names and marks mentioned in this document are the property of their
respective owners and are mentioned for identification purposes only.
THIS SOFTWARE MAY BE AVAILABLE ON MULTIPLE OPERATING SYSTEMS. HOWEVER, NOT ALL
OPERATING SYSTEM PLATFORMS FOR A SPECIFIC SOFTWARE VERSION ARE RELEASED AT THE SAME
TIME. SEE THE README FILE FOR THE AVAILABILITY OF THIS SOFTWARE VERSION ON A SPECIFIC
OPERATING SYSTEM PLATFORM.
THIS DOCUMENT IS PROVIDED “AS IS” WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR
IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT.
THIS DOCUMENT COULD INCLUDE TECHNICAL INACCURACIES OR TYPOGRAPHICAL ERRORS.
CHANGES ARE PERIODICALLY ADDED TO THE INFORMATION HEREIN; THESE CHANGES WILL BE
INCORPORATED IN NEW EDITIONS OF THIS DOCUMENT. TIBCO SOFTWARE INC. MAY MAKE
IMPROVEMENTS AND/OR CHANGES IN THE PRODUCT(S) AND/OR THE PROGRAM(S) DESCRIBED IN
THIS DOCUMENT AT ANY TIME.
THE CONTENTS OF THIS DOCUMENT MAY BE MODIFIED AND/OR QUALIFIED, DIRECTLY OR
INDIRECTLY, BY OTHER DOCUMENTATION WHICH ACCOMPANIES THIS SOFTWARE, INCLUDING
BUT NOT LIMITED TO ANY RELEASE NOTES AND "READ ME" FILES.
Copyright © 2010–2014 TIBCO Software Inc. ALL RIGHTS RESERVED.
TIBCO Software Inc. Confidential Information
| iii
Contents
Figures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiii
Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .xv
Preface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xix
Related Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xx
TIBCO FTL Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xx
TIBCO eFTL Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .xxi
Typographical Conventions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxii
Connecting with TIBCO Resources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
How to Join TIBCOmmunity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
How to Access All TIBCO Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
How to Contact TIBCO Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
xxv
xxv
xxv
xxv
Chapter 1 Introduction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1
Product Overview. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
Components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
Brief Definitions of Key Concepts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
Messaging Concepts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
Infrastructure Concepts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
Administrative Concepts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Realm Definition Terminology . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Realm Administration. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Chapter 2 Formats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .9
Formats—Managed, Built-In and Dynamic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
Manage All Formats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Defining Formats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
Catalog of Built-In Formats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
Chapter 3 Implementing Endpoints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .15
Configuration Model. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
Endpoints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Abilities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
TIBCO FTL Administration
iv
| Contents
Abilities in the Configuration Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Implementation—Endpoints (Micro) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Transports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Connectors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Using Connectors to Cover Abilities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
20
20
20
21
Implementation—Application (Macro) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Application Definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Application Instance Definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Default Instance and Named Instances . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Matching Instances . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Result: Instance Connections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Subscribers and Durables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
23
23
24
25
25
26
26
Administrative Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
Administrative Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Transport Type and Abilities. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Transport Type and Host Computer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Segregating Traffic by Priority . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Multiple Transports. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
28
28
28
28
28
Sample Configuration 1—tibsend and tibrecv. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
Sample Configuration 2—tibrequest and tibreply . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
Chapter 4 Transports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
Transport Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Transport Roles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Inside a Transport . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Transport Definitions Must be Unique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
36
36
36
37
Unitary and Fragmentary Transport Definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
Transport Relationships . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
Bus Topologies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Unitary Mesh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Assembling Larger Topologies from Pair Connections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Asymmetric Multicast Topologies. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
40
40
40
42
Pair Connections. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
Listen End and Connect End . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
Connect Requests are Specific to IP Addresses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
Subscriber Interest . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
Blocking vs Non-Blocking Send . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
Shared Memory Transports and One-to-Many Non-Blocking Send. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
Blocking Send and Inline Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
Inline Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
Receive Spin Limit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
TIBCO FTL Administration
Contents v
|
Motivation and Background . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
Tuning Receive Spin Limit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
From Transports to Dispatch. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
UDP Packet Send Limit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
Shared Memory Transport . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
Topology . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
Non-Blocking Send . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
Configuration Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
Remote Direct Memory Access Transport (RDMA) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
Configuration Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
RDMA Hardware. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
RDMA Implementation Libraries. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
Locked Memory Buffers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
Dynamic TCP Transport. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
Configuration Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
Static TCP Transport . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
Configuration Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
Multicast Transport (Mcast) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
Multicast Group as Shared Communication Medium . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
Configuration Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
Configuring Multicast Inbox Communication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
Multicast Retransmission Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
Reliable UDP Transport (RUDP) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
Configuration Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
Process Transport (PROC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
Configuration Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
Chapter 5 Realm Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .73
Realm Server Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
Affiliated Realm Servers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
Server Roles and Relationships . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
Modifying the Realm Definition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
Configuring Fault Tolerance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
Configuring Satellites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
Realm Server Authentication and Authorization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
Password File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
JAAS Sample Login Modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
Option and Property Names . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
Using the tibrealmserver Executable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
Using the tibrealmadmin Utility . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
TIBCO FTL Administration
vi
| Contents
Chapter 6 Realm Server and its Browser Interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
Browser Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
Realm Server URL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
Common Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Navigation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Home Logo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Command Icons. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Auto-Save . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
99
99
99
99
99
Realm (Home Page) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
Icons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
Sidebar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
Navigating . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
Status Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
Summary Pages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Viewing an Item . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Filtering the List . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Sorting the List. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Creating a New Definition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Duplicating a Definition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Deleting a Definition. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
106
106
106
106
107
107
107
Restrictions on Names . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
Reserved Names . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
Length Limit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
Size Units . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
Realm Storage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
Modification Lock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
Lock & Edit Command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
Refresh and Revert Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
The Deploy Transaction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Transaction Steps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Responses to Deployment Tests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Consolidating Responses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Satellite Servers Recursively Test Their Clients . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Successful Test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Unsuccessful Test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Backup Prevents Satellite Update . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
112
112
113
113
113
114
114
114
Valid Realm Modifications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
Chapter 7 Configuring a Realm using the GUI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
Applications Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
Configuring an Application Definition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
TIBCO FTL Administration
Contents vii
|
Configuring an Application Instance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
Transports Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
Configuring a Transport Definition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
Edit Configuration Manually . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
Formats Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
Show Historic Formats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
Configuring a Format Definition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
Configuring the Realm Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
Restricting Formats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
Chapter 8 Browsing a Realm using the GUI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .143
Validation Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
Instance Connections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
Connections at Work . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
Understanding the Instance Connections Graph . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
Visualizing Specific Connections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
Filtering Instance Connections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
Transport Relationships . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
Realm Source . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
Chapter 9 Monitoring a Realm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .155
Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
Monitoring the Realm Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
Clients Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
Monitoring a Client. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
Dynamic TCP Transports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
Client Statistics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
Disabling Clients . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
Satellites Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
Satellite Status . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
Deployments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
Deployment Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
Active Deployment Request. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
New Clients during a Deployment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
Last Deployment Request . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
Recent Deployments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
Redeploy. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
TIBCO FTL Administration
viii
| Contents
Chapter 10 Configuring a Realm using Python Scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
Using the Realm Server Python Script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
Chapter 11 Client Monitoring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182
Sampling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182
Display . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182
Storage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
Estimating Maximum Memory Size . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
Catalog of Client Statistics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Standard Client Statistics. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Client Statistics for Multicast Transports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Store Server Statistics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
184
184
185
186
Web API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
Chapter 12 Rendezvous Adapter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191
Adapter Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
FTL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Rendezvous . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Adapter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
192
192
192
193
Adapter Operation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Start Phase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
FTL Side . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Rendezvous Side. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
194
194
194
195
Using tibrvadapter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196
Password File. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
Disabled . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
Adapter Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
Adapter Administration—Realm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Communication through Transports. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Bidirectionality . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
One-to-One Abilities. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
204
204
204
204
Adapter Subject Translation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
Parsing a Rendezvous Subject to FTL Fields . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
Assembling FTL Fields to a Rendezvous Subject . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
Adapter Datatype Mapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
FTL to Rendezvous . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Rendezvous to FTL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Error . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
TIBCO FTL Administration
206
206
207
208
Contents ix
|
Request/Reply Interactions through the Adapter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
Primary FTL Request, Secondary Rendezvous Reply to an Inbox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
Secondary Rendezvous Request to an Inbox, Tertiary FTL Reply. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210
Primary Rendezvous Request to a Subject, Secondary FTL Reply to an Inbox . . . . . . . . . . . . . . . . . . . . . 211
Rendezvous Subjects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212
Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212
Messages that Match Two Rendezvous Subjects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213
Restrictions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
Chapter 13 Groups of Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .215
Administrative Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
Group Communication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
Running the Group Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
Fault Tolerance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217
Using the Group Setup Script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
Disabling Groups . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
Group Server Monitoring Page . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220
Chapter 14 Transport Bridge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .221
Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222
Functionality . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222
Design Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222
Latency . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223
Use Cases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224
Shifting Fanout for Efficiency . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224
Extending the Capabilities of a Transport . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225
Multiple Transports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225
Crossing the Boundary of Shared Memory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226
Isolated Spokes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
Topologies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228
One Bridge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228
Two Serial Bridges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228
Hub and Spoke Bridges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229
Transport Restrictions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230
Configuring Bridges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231
Adding Bridge Definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231
Use Transports Uniquely . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231
Using the Transport Bridge Executable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232
Password File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233
Fault Tolerance. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235
Shared Memory Transports and Fault-Tolerant Bridges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235
TIBCO FTL Administration
x
| Contents
Bridges among Dynamic TCP Meshes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236
Principles of Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236
Bridge Setup Script for Dynamic TCP Meshes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238
Deleting a Bridge Definition for Dynamic TCP Meshes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240
Adding Satellites to a Bridge for Dynamic TCP Meshes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240
Bridges Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241
Configuring a Bridge Definition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242
Bridge Monitoring Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244
Bridge Status . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245
Bridge Setup Script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246
Chapter 15 Persistence (Stores and Durables) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249
Feature Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Purpose . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Architecture for Delivery Assurance. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Architecture for Apportioning Message Streams . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Coordination . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
251
251
251
252
252
Stores for Delivery Assurance. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Topology. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Retention and Delivery . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Larger Networks of Endpoints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Combined Message Stream . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Multiple Stores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Violating the Direct Path Requirement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Durable Collision . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Default Durable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
253
253
253
254
255
255
257
258
258
Stores for Apportioning Message Streams . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Topology. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Apportioning. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Acknowledgment and Redelivery. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
259
259
259
259
Persistence Servers and Cluster. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Quorum and Leader. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Quorum Conditions—General Rule . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Cluster Size . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Quorum Behaviors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Fault Tolerance. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
260
260
260
261
261
262
Realm Configuration Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263
Persistence Server Transports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265
Alternate Client Transport . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265
Client Transport and Non-Blocking Send . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265
Publisher Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267
TIBCO FTL Administration
Contents xi
|
Durable Behavior . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268
Shared or Non-Shared . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268
Acknowledgement Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268
Message Interest . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269
Configuring the Realm Persistence Cluster . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270
Cluster Heartbeat and Timeout Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271
Configuring a Persistence Server Definition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272
Configuring a Store Definition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275
Configuring a Durable Definition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277
Configuring Persistence Stores within the Application Definition. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280
Configuring Durable Subscribers within an Application Instance. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281
Matching Instances for Subscriber Name Mapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281
Configuring a Default Durable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282
Persistence Servers Monitoring Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283
Forcing a Quorum. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284
Monitoring a Persistence Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286
Persistence Server Statistics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288
Persistence Stores Monitoring Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289
Monitoring a Store . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290
Durables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290
Monitoring a Shared Durable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292
Shared Durable Subscribers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292
Starting a Persistence Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294
Stopping a Persistence Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294
tibstore Command Line . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295
Saving and Loading Persistence State . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298
Purging Durables or Stores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301
Purging a Durable. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301
Purging a Store. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301
Chapter 16 Package Contents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .303
Directory Structure. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304
Sample Programs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305
Appendix A Coordination Forms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .307
Application Coordination Form. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308
Endpoint Coordination Form . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311
Format Coordination Form. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315
Durable Coordination Form . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320
TIBCO FTL Administration
xii
| Contents
Appendix B Upgrade Migration to a New Release . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323
Upgrading Realm Servers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324
Upgrading tibstore Servers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325
Appendix C FTL Processes as Windows Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327
Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328
Installing a Persistence Server as a Windows Service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329
Installing a Transport Bridge as a Windows Service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330
Installing the Realm Server as a Windows Service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331
Uninstalling a Windows Service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333
Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335
TIBCO FTL Administration
Figures xiii
|
Figures
Figure 1
Connectors Cover Endpoint Abilities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
Figure 2
Application Definition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
Figure 3
Transports and Bus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
Figure 4
Related Transports—Data Flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
Figure 5
Unitary Mesh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
Figure 6
Hub and Spoke Topology. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
Figure 7
Mesh Topology for Connection-Oriented Transport Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
Figure 8
Asymmetric Multicast—Bipartite Graph . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
Figure 9
Receive Spin Limit—Example with Several Transports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
Figure 10
Affiliated Realm Servers: Roles and Relationships . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
Figure 11
Realm Storage and Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
Figure 12
Application Instance Connections Graph . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
Figure 13
Application Instance Connections Graph with Store . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
Figure 14
Application Instance Connections Graph, Highlighting Specific Connections . . . . . . . . . . . . . . . . 149
Figure 15
Rendezvous Adapter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192
Figure 16
Fanout over WAN (without Transport Bridge) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224
Figure 17
Transport Bridge: Fanout after WAN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224
Figure 18
Transport Bridge: Extending Capabilities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225
Figure 19
Transport Bridge: Connecting Shared Memory on Two Computers . . . . . . . . . . . . . . . . . . . . . . . 226
Figure 20
Transport Bridge: Common Hub with Mutually-Isolated Spokes . . . . . . . . . . . . . . . . . . . . . . . . . . 227
Figure 21
Transport Bridge Topology—One Bridge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228
Figure 22
Transport Bridge Topology—Two Bridges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228
Figure 23
Transport Bridge Topology—Hub and Spoke Bridges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229
Figure 24
Bridging for Dynamic TCP Meshes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236
Figure 25
Store as Redundant Message Path . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253
Figure 26
Store for Message Recovery . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254
Figure 27
Store Serves Several Publishers and Subscribers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255
Figure 28
Two Stores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256
TIBCO FTL Administration
xiv
| Figures
Figure 29
Two Stores with Many Publishers and Subscribers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256
Figure 30
Erroneously Using One Store Instead of Two . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257
Figure 31
Store as Apportioning Intermediary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259
Figure 32
Configuring Durables in an Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263
Figure 33
Store Servers—Forcing a Quorum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285
TIBCO FTL Administration
Tables xv
|
Tables
Table 1
General Typographical Conventions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxii
Table 2
Syntax Typographical Conventions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxiii
Table 3
Built-In Formats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
Table 4
Endpoint Abilities—Definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
Table 5
Endpoint Abilities—Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Table 6
Sample Configuration—tibsend and tibrecv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
Table 7
Sample Configuration—tibrequest and tibreply . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
Table 8
Listen End and Connect End . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
Table 9
Blocking and Non-Blocking Send . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
Table 10
Transport Configuration Parameters: Shared Memory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
Table 11
Transport Configuration Parameters: RDMA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
Table 12
RDMA Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
Table 13
RDMA Driver Libraries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
Table 14
Transport Configuration Parameters: Dynamic TCP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
Table 15
Transport Configuration Parameters: Static TCP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
Table 16
Transport Configuration Parameters: Multicast . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
Table 17
Transport Configuration Parameters: RUDP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
Table 18
Transport Configuration Parameters: PROC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
Table 19
Affiliated Realm Servers—Role Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
Table 20
Configuring JAAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
Table 21
tibrealmserver Utility. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
Table 22
tibrealmadmin Utility . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
Table 23
Realm Server Browser Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
Table 24
Realm Server Icons—Configure and Browse Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
Table 25
Realm Server Icons—Maniupulating Items . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
Table 26
Realm Server Icons—Monitoring Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
Table 27
Status Summary (Sidebar) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
Table 28
Filtering Instance Connections—Regular Expression Semantics . . . . . . . . . . . . . . . . . . . . . . . . 106
TIBCO FTL Administration
xvi
| Tables
Table 29
Size Units . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
Table 30
Responses after Testing a Modified Realm Definition. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
Table 31
Action Status Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
Table 32
Realm Modifications and Deployments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
Table 33
Application Definition—Components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
Table 34
Application Instance Definition—Components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
Table 35
Transport Definition—Components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
Table 36
Format Definition—Components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
Table 37
Field Datatypes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
Table 38
Realm Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
Table 39
Realm Configuration Errors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
Table 40
Instance Connections Graph, Iconography . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
Table 41
Filtering Instance Connections—Regular Expression Semantics . . . . . . . . . . . . . . . . . . . . . . . . . 149
Table 42
Filtering Instance Connections—Display Modifiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
Table 43
Server Status. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
Table 44
Clients Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
Table 45
Client Page . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
Table 46
Satellites Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
Table 47
Satellite Status . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
Table 48
Deployment Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
Table 49
Active Deployment Request . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
Table 50
Recent Deployments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
Table 51
Realm Server Python Scripts and Related Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
Table 52
Client Monitoring Resource Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
Table 53
Client Statistics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184
Table 54
Client Statistics for Multicast Transports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
Table 55
Monitor API: Monitor Command, Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
Table 56
Monitor API: Response . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
Table 57
Monitor API: Client Element . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
Table 58
Monitor API: Series Element . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
Table 59
Monitor API: Data Elements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
Table 60
tibrvadapter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196
TIBCO FTL Administration
Tables xvii
|
Table 61
Configuration Language for Rendezvous Adapter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
Table 62
Datatype Mapping: FTL to Rendezvous. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206
Table 63
Datatype Mapping: Rendezvous to FTL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207
Table 64
Validating Rendezvous Subjects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212
Table 65
Group Setup Script—Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
Table 66
tibbridge Executable. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232
Table 67
init_dtcp_bridge Script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238
Table 68
Bridge Definition—Components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242
Table 69
Bridges Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244
Table 70
Bridge Status Page . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245
Table 71
init_bridge Script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246
Table 72
Reforming a Quorum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262
Table 73
Store Publisher Modes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267
Table 74
Acknowledgement Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268
Table 75
Message Interest . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269
Table 76
Persistence Cluster Advanced Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271
Table 77
Persistence Server Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273
Table 78
Store Definition—Components. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276
Table 79
Durable Definition—Components. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278
Table 80
Persistence Servers Summary—Components. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283
Table 81
Persistence Server Status . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284
Table 82
Persistence Server Status—Components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286
Table 83
Store Statistics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288
Table 84
Stores Summary—Components. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289
Table 85
Persistence Store Status—Components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290
Table 86
Durable Subscribers Summary—Components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291
Table 87
Durable Status—Components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292
Table 88
Shared Durable Status—Components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293
Table 89
tibstore Command Line Parameters. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295
Table 90
FTL Directories. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304
Table 91
Files in Samples Directory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305
Table 92
Samples Directories . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305
TIBCO FTL Administration
xviii Tables
|
Table 93
Sample Programs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306
Table 94
Application Coordination Form . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308
Table 95
Endpoint Coordination Form . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311
Table 96
Format Coordination Form . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315
Table 97
Durable Coordination Form . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320
TIBCO FTL Administration
| xix
Preface
TIBCO FTL® is a messaging infrastructure product.
TIBCO is proud to announce the latest release of TIBCO FTL®. This release is the
latest in a long history of TIBCO products that leverage the power of the
Information Bus® to enable truly event-driven IT environments. To find out more
about how TIBCO FTL and other TIBCO products are powered by TIB®
technology, please visit us at www.tibco.com.
Topics
•
Related Documentation, page xx
•
Typographical Conventions, page xxii
•
How to Contact TIBCO Support, page xxv
TIBCO FTL Administration
xx
| Related Documentation
Related Documentation
This section lists documentation resources you may find useful.
TIBCO FTL Documentation
The documentation road map shows the relationships between the books and
online references in this product’s documentation set.
Concepts
Development
Installation
API Reference
C API
Reference
Java API
Reference
Administration
Glossary
.NET API
Reference
Release Notes
Legend
PDF
HTML
The following documents form the FTL documentation set:
•
TIBCO FTL Concepts Everyone reads this booklet first, for an intuitive
introduction to the fundamental concepts of FTL.
•
TIBCO FTL Development Application developers and architects read this
manual to understand concepts relevant in any supported programming
language.
•
TIBCO FTL API Reference Application developers use this HTML
documentation to learn the details of the FTL API in specific programming
languages.
•
TIBCO FTL Administration Administrators read this manual to learn how to
use the realm server and its interfaces, and how to define a realm. Developers
can also benefit from understanding FTL from an administrator’s perspective.
TIBCO FTL Administration
Preface xxi
|
•
TIBCO FTL Installation Read this manual before installing the product.
•
TIBCO FTL Glossary The glossary contains brief definitions of key terms used
in all other parts of the documentation set.
•
TIBCO FTL Release Notes Read the release notes for a list of new and changed
features. This document also contains lists of known issues and closed issues
for this release.
TIBCO eFTL Documentation
TIBCO eFTL™ is documented separately. Administrators use the FTL realm
server GUI to configure and monitor the eFTL service. For information about
these GUI pages, see the documentation set for TIBCO eFTL.
TIBCO FTL Administration
xxii
| Typographical Conventions
Typographical Conventions
The following typographical conventions are used in this manual.
Table 1 General Typographical Conventions
Convention
Use
TIBCO_HOME
Many TIBCO products must be installed within the same home directory. This
directory is referenced in documentation as TIBCO_HOME. The value of
TIBCO_HOME depends on the operating system. For example, on Windows
systems, the default value is C:\tibco.
ENV_HOME
FTL_HOME
USER_HOME
Other TIBCO products are installed into an installation environment. Incompatible
products and multiple instances of the same product are installed into different
installation environments. An environment home directory is referenced in
documentation as ENV_HOME. The syntax of ENV_HOME depends on the
operating system. For example, on Windows systems the default value is
C:\tibco.
TIBCO FTL installs into a directory within TIBCO_HOME. This directory is
referenced in documentation as FTL_HOME. The syntax of FTL_HOME depends
on the operating system. For example, on Windows systems the default value is
TIBCO_HOME\ftl\release_num.
USER_HOME is your home directory. Installation leaves log files and other
artifacts in subdirectories under this location.
code font
Code font identifies commands, code examples, filenames, pathnames, and
output displayed in a command window. For example:
Use MyCommand to start the foo process.
bold code
font
Bold code font is used in the following ways:
•
In procedures, to indicate what a user types. For example: Type admin.
•
In large code samples, to indicate the parts of the sample that are of
particular interest.
•
In command syntax, to indicate the default parameter for a command. For
example, if no parameter is specified, MyCommand is enabled:
MyCommand [enable | disable]
TIBCO FTL Administration
Preface xxiii
|
Convention
Use
italic font
Italic font is used in the following ways:
Key
combinations
•
To indicate a document title. For example: See TIBCO FTL Concepts.
•
To introduce new terms For example: A portal page may contain several
portlets. Portlets are mini-applications that run in a portal.
•
To indicate a variable in a command or code syntax that you must replace.
For example: MyCommand PathName
Key name separated by a plus sign indicate keys pressed simultaneously. For
example: Ctrl+C.
Key names separated by a comma and space indicate keys pressed one after the
other. For example: Esc, Ctrl+Q.
The note icon indicates information that is of special interest or importance, for
example, an additional action required only in certain circumstances.
The tip icon indicates an idea that could be useful, for example, a way to apply
the information provided in the current section to achieve a specific result.
The warning icon indicates the potential for a damaging situation, for example,
data loss or corruption if certain steps are taken or not taken.
Table 2 Syntax Typographical Conventions
Convention
Use
[ ]
An optional item in a command or code syntax.
For example:
MyCommand [optional_parameter] required_parameter
|
A logical OR that separates multiple items of which only one may be chosen.
For example, you can select only one of the following parameters:
MyCommand para1 | param2 | param3
TIBCO FTL Administration
xxiv Typographical Conventions
|
Convention
Use
{ }
A logical group of items in a command. Other syntax notations may appear
within each logical group.
For example, the following command requires two parameters, which can be
either the pair param1 and param2, or the pair param3 and param4.
MyCommand {param1 param2} | {param3 param4}
In the next example, the command requires two parameters. The first parameter
can be either param1 or param2 and the second can be either param3 or param4:
MyCommand {param1 | param2} {param3 | param4}
In the next example, the command can accept either two or three parameters.
The first parameter must be param1. You can optionally include param2 as the
second parameter. And the last parameter is either param3 or param4.
MyCommand param1 [param2] {param3 | param4}
TIBCO FTL Administration
Preface xxv
|
Connecting with TIBCO Resources
How to Join TIBCOmmunity
TIBCOmmunity is an online destination for TIBCO customers, partners, and
resident experts, a place to share and access the collective experience of the
TIBCO community. TIBCOmmunity offers forums, blogs, and access to a variety
of resources. To register, go to http://www.tibcommunity.com.
How to Access All TIBCO Documentation
After you join TIBCOmmunity, you can access the documentation for all
supported product versions here:
http://docs.tibco.com
How to Contact TIBCO Support
For comments or problems with this manual or the software it addresses, please
contact TIBCO Support as follows.
•
For an overview of TIBCO Support, and information about getting started
with TIBCO Support, visit this site:
http://www.tibco.com/services/support
•
If you already have a valid maintenance or support contract, visit this site:
https://support.tibco.com
Entry to this site requires a user name and password. If you do not have a user
name, you can request one.
TIBCO FTL Administration
xxvi Connecting with TIBCO Resources
|
TIBCO FTL Administration
|1
Chapter 1
Introduction
This chapter introduces the main components and concepts of TIBCO FTL®.
Topics
•
Product Overview, page 2
•
Brief Definitions of Key Concepts, page 3
•
Realm Definition Terminology, page 6
TIBCO FTL Administration
2
| Chapter 1
Introduction
Product Overview
TIBCO FTL is a messaging infrastructure product. It features high speed,
structured data messages, and clearly defined roles for application developers
and application administrators. FTL can achieve low message latency with
consistent performance.
Components
FTL comprises these main components:
•
API libraries—developers use these APIs in application programs
•
Realm server—applications obtain operational metadata from the realm
server
•
Store server—stores messages for durable subscribers
•
Transport bridge—forwards messages between two endpoints
•
TIBCO Rendezvous® adapter—converts messages so FTL programs can
communicate with existing Rendezvous programs
TIBCO FTL Administration
Brief Definitions of Key Concepts 3
|
Brief Definitions of Key Concepts
We recommend that you first read the booklet TIBCO FTL Concepts, which builds
an intuitive picture of FTL software and its concepts.
Messaging Concepts
Application programs use FTL to communicate by sending messages to one
another. Programs send messages using publisher objects, and receive messages
using subscriber objects.
Messages travel directly between peers (application programs) rather than
through a store-and-forward server.
FTL messages travel only among application processes; they do not travel from
publishers to subscribers within a process. A process transport is an explicit
exception to this rule; it carries messages within a process.
Messages and Fields
A message is a structured unit of data. The structure is flexible, and developers
tailor the structure to the needs of the application.
Each message consists of a set of named fields. Each field can contain a value of a
specific datatype.
One-to-Many Communication
Publishers can send messages using one-to-many communication. These messages
can reach potentially many subscribers.
A subscriber can use a content matcher to receive only those messages in which a
particular set of fields contain specific values.
One-to-One Communication
For efficient one-to-one communication, publishers can also send messages that
can reach one specific inbox subscriber.
An inbox is a data structure that uniquely identifies a specific inbox subscriber.
Inbox subscribers cannot use content matchers. An inbox subscriber receives all
messages directed to it.
TIBCO FTL Administration
4
| Chapter 1
Introduction
Infrastructure Concepts
Endpoint
An endpoint is an abstraction that represents a set of publishers and subscribers in
communicating programs. Application architects and developers determine the
set of endpoints that an application requires. Administrators formally define
those endpoints. Programs create publisher and subscriber objects, which
instantiate those endpoints.
Endpoint Abilities
From the perspective of a running application instance, each endpoint carries
messages in up to four abilities. Two dimensions—direction and reach—determine
the set of messages that flow along each ability:
•
Direction: Each ability carries messages in only one of two possible
directions—either inbound to the application’s subscribers, or outbound from
the application’s publishers.
•
Reach: Each ability carries messages from only one kind of send call—either
one-to-many or one-to-one—according to the number of subscribers the message
can potentially reach.
Inbound
Outbound
One-to-Many
Receive
Send
One-to-One
Receive Inbox
Send Inbox
Transport
A transport is the underlying mechanism that moves message data between
endpoint instances in programs. For example, a shared memory transport can
move messages among separate program processes on a multi-core hardware
platform; a multicast transport can move messages among programs connected
by a network.
Stores and Durables
You can use stores and durables to strengthen message delivery assurance or to
apportion message streams among a set of cooperating subscribers. A separate
chapter presents this topic in detail.
TIBCO FTL Administration
Brief Definitions of Key Concepts 5
|
Administrative Concepts
A realm is a namespace that defines resources and configurations available to
application programs. (Those resources include endpoints, transports and
formats.) Administrators use a graphical configuration interface to define the
realm, and store that definition in a realm server. Each process instance of an
application program connects to the realm server to download the part of the
realm definition that is relevant to that instance; the FTL base library caches that
definition in a realm object. After a program caches the realm definition, it is not
necessary to interact frequently with the realm server. The FTL base library
consults the local realm object for information about endpoints, transports and
message formats (see below). It is not necessary to involve the realm server each
time a program sends or receives a message.
Administrators define transports within the realm. Notice that transports are not
visible to application developers—rather, they are strictly the responsibility of the
administrator. From the developer’s perspective, these details are hidden behind
endpoints.
In addition to endpoints, transports and formats, the realm definition also
includes other definitions and configurations:
•
The term application can refer to an executable program that communicates
using FTL, or to an administrative configuration in the realm. Administrators
declare and configure each application, and define the realm resources that
process instances of the application may use.
•
The term application instance can refer either to a process instance of an
application program, or to an administrative configuration in the realm.
Through a matching algorithm, one such configuration can apply to a set of
process instances. When defining a configuration, administrators can assign
different resources to specific sets of process instances (based on attribute
matching), to achieve fine-grained control over communications traffic.
When defining an application instance configuration, the administrator must
connect each application endpoint to one or more transports, which actually
move message data.
The realm definition can also include definitions related to stores and durables
(see Chapter 15, Persistence (Stores and Durables), on page 249).
See Also
These concepts are explained in greater detail in later chapters of this book.
TIBCO FTL Administration
6
| Chapter 1
Introduction
Realm Definition Terminology
Administrators and developers coordinate the detailed requirements of
applications using coordination forms (we recommend printing hardcopy from the
appendix in this book).
Administrators use the information in the coordination forms to configure the
realm definition and its parts:
A format definition determines the field names and field value types that can
appear in messages that use a managed format.
A transport definition configures a transport, including its name, transport type,
parameter values, and relationships to other cooperating transports.
An application instance definition is a configuration that implements endpoints by
associating them with transports.
An application definition determines an application’s endpoints, the configuration
of the application’s process instances, and the subset of message formats available
to the application.
See Also
Chapter 2, Formats, page 9
Chapter 3, Implementing Endpoints, page 15
Chapter 4, Transports, page 35
TIBCO FTL Administration
Realm Administration 7
|
Realm Administration
The realm server is a command-line executable component that stores the realm
definition, and makes it available to client application processes. Graphical
interfaces let administrators configure the realm definition and monitor the client
processes. Command line and Python script interfaces let administrators
configure server behavior.
Administrators start, stop, configure and manage the realm server using
command line executables and scripts (see Chapter 5, Realm Server, page 73).
Administrators define the realm and its parts using a configuration interface (see
Chapter 7, Configuring a Realm using the GUI, page 121), and can examine the
definition using graphical tools (see Chapter 8, Browsing a Realm using the GUI,
page 143). Administrators monitor and manage the realm server’s client
processes using a monitoring interface (see Chapter 9, Monitoring a Realm,
page 155). These interfaces and tools are accessible through a web browser
(connecting to the realm server).
Administrators can also manipulate the realm definition using Python scripts (see
Chapter 10, Configuring a Realm using Python Scripts, page 177).
See Also
Chapter 6, Realm Server and its Browser Interfaces, page 97
TIBCO FTL Administration
8
| Chapter 1
Introduction
TIBCO FTL Administration
|9
Chapter 2
Formats
This chapter presents information about formats.
Topics
•
Formats—Managed, Built-In and Dynamic, page 10
•
Defining Formats, page 12
•
Catalog of Built-In Formats, page 13
TIBCO FTL Administration
10
| Chapter 2
Formats
Formats—Managed, Built-In and Dynamic
A format defines the set of fields that a message can contain. The form of each
message (its field names and their value datatypes) is governed by a format.
FTL supports three broad categories of format, with differing constraints and
performance characteristics.
•
Managed format: Application architects and developers determine the set of
formats that an application needs. Administrators define those formats
globally.
Administrators make managed formats available to an application by
including them as preload formats for the application.
Programs can use these managed formats to compose new messages, or to
unpack inbound messages. A message with a managed format is small and
fast; it does not carry format metadata because that metadata is available to
applications from the realm server.
•
Built-in format: FTL defines a set of highly-optimized formats, which are
defined within the base library and always available to all applications. (No
administrative action is required.)
The performance characteristics of built-in formats are similar to managed
formats; when used properly, a built-in format can outperform a managed
format.
•
Dynamic format: An application implicitly defines a format as it constructs a
message—that is, the sending program dynamically determines the set of
fields and their datatypes as it sets field values.
When a program creates a message, and specifies a format that is neither
built-in nor preloaded, then FTL automatically treats it as a dynamic format.
A dynamic format is less efficient than a managed format because each
message must be self-describing—that is, it necessarily includes its own
format metadata. Expect larger message sizes, slower transmission, slower
processing, and longer field access times.
Dynamic formats are useful for rapid prototyping projects. We recommend
defining the application’s formats as managed formats when the project nears
the production stage.
TIBCO FTL Administration
Formats—Managed, Built-In and Dynamic 11
|
Manage All Formats
For efficiency and for safety, administrators can use the Manage All Formats
parameters to restrict the formats available to some or all of the applications in a
realm. That is, administrators can require that applications use only preload
formats and built-in formats, and prohibit applications from using dynamic
formats.
See Also
Restricting Formats, page 141
TIBCO FTL Administration
12
| Chapter 2
Formats
Defining Formats
Each realm defines the set of formats that its applications can use. Administrators
also regulate the subset of formats available to each application.
1. Coordinate with developers.
The first step is to consult with developers to determine the format
requirements. To begin the discussion, we recommend that the developer
complete the Format Coordination Form on page 315. Then review the forms
together, and modify them to reflect your agreement.
2. Define managed formats in the realm.
Define the managed formats as specified in the final consensus revision of the
coordination forms. Use the configuration interface to define the formats; see
Formats Summary on page 135, and Configuring a Format Definition on
page 136.
3. Preload formats.
When you define the application, add managed formats to the Preload
Formats section. When a suite of application programs must exchange
messages, ensure that each application definition preloads the formats that
the program sends and receives.
The term preload implies that the application loads these formats when it
connects to the realm server. Furthermore, the only managed formats that an
application can use are its preload formats.
The list of preload formats does not affect built-in formats nor dynamic
formats (see below). You need not include built-in formats in the list of
preload formats—built-in formats are always available to all applications.
4. Dynamic formats.
When the message structure and content is highly variable, and applications
cannot determine or limit that content in advance, dynamic formats might be
appropriate.
If developers and administrators agree that the application requires dynamic
formats, and that this will not degrade the performance of other applications
in the realm (for example, by consuming bandwidth) then administrators can
permit dynamic formats; see Restricting Formats on page 141.
See Also
To upgrade dynamic formats to managed formats while an application is
running, see Add formats on page 115.
Before modifying the definition of a managed format, see Add fields on page 116.
TIBCO FTL Administration
Catalog of Built-In Formats 13
|
Catalog of Built-In Formats
Table 3 Built-In Formats
Format Name Constant
Description
TIB_BUILTIN_MSG_FMT_OPAQUE
The message consists of a singleton field of type opaque.
The constant
denotes the
name of that singleton field (the value of the constant is
_data).
TIB_BUILTIN_MSG_FMT_OPAQUE_FIELDNAME
The constant value
TIB_BUILTIN_MSG_FMT_OPAQUE_MAXSIZE is the
maximum data length (in bytes) of a message of this
type. (This size restriction applies only to built-in opaque
formats; it does not apply to opaque fields in other
formats.)
TIB_BUILTIN_MSG_FMT_KEYED_OPAQUE
This keyed opaque format enhances the opaque format
with a key field of type string. Content matchers can
match against the key field.
The constant TIB_BUILTIN_MSG_FMT_KEY_FIELDNAME
denotes the name of the string field (the value of the
constant is _key).
The constant value TIB_BUILTIN_MSG_FMT_KEY_MAXLEN
is the maximum length (in bytes) of the key string field—
including the null terminator character.
The constant
denotes the
name of the opaque data field (the value of the constant
is _data).
TIB_BUILTIN_MSG_FMT_OPAQUE_FIELDNAME
The length of the key (including the null terminator
character) plus the length of the opaque data must be less
than or equal to the constant
TIB_BUILTIN_MSG_FMT_OPAQUE_MAXSIZE. (This size
restriction applies only to built-in opaque formats; it does
not apply to opaque fields in other formats.)
TIBCO FTL Administration
14
| Chapter 2
Formats
TIBCO FTL Administration
| 15
Chapter 3
Implementing Endpoints
Transports carry message data for endpoints. This chapter explains the structures
that administrators use to configure endpoint implementation and transport
usage in the realm.
Topics
•
Configuration Model, page 16
•
Endpoints, page 17
•
Abilities, page 18
•
Implementation—Endpoints (Micro), page 20
•
Implementation—Application (Macro), page 23
•
Administrative Requirements, page 27
•
Administrative Options, page 28
•
Sample Configuration 1—tibsend and tibrecv, page 30
•
Sample Configuration 2—tibrequest and tibreply, page 32
TIBCO FTL Administration
16
| Chapter 3
Implementing Endpoints
Configuration Model
This section describes an overarching model. As you read the remainder of this
chapter, the model can serve as a framework for understanding the concepts and
tasks of configuring a realm.
The model is only a skeleton; it is not a complete description. It is not necessary to
completely understand every aspect of the model the first time you read this
section. We recommend returning to this model after reading subsequent sections
to help integrate the new ideas.
•
Endpoints represent requirements.
— Endpoints constitute a program’s communication interface. An application
program with one or more endpoints requires communication through
those endpoints.
— For each of its endpoints, an application program requires communication
using some or all of the endpoint’s four abilities (see Abilities on page 18).
That is, each ability that the program uses for communication is a separate
and specific functional requirement.
•
A connector represents a set of abilities. It binds a transport’s abilities to an
endpoint’s required abilities; when a set of connectors covers all the required
abilities of an endpoint, then the connectors satisfy the endpoint (that is, they
satisfy the requirements that the endpoint represents).
•
An application instance definition represents a solution.
— It implements each endpoint (requirements) with a set of connectors
(abilities)—satisfying the requirement.
— Moreover, it targets a set of process instances. A matching algorithm
dynamically determines that target set.
— You can define several such solutions, each satisfying the same
requirements with different abilities (and targeting a different set of process
instances).
This chapter describes endpoint implementation and its configuration—first at
the micro level (endpoints, abilities and connectors), then at the macro level
(applications and application instances). In practice, administrators generally
configure from both ends inward:
•
Endpoint; transport
•
Application; application instance; connector
TIBCO FTL Administration
Endpoints 17
|
Endpoints
An endpoint is an abstraction that represents a set of publishers and subscribers
in communicating programs.
Within an application program, an endpoint begins as a name. Program code uses
the endpoint name to create endpoint instances—that is, publisher and subscriber
objects. Then programs use the publishers to send messages, and the subscribers
to receive messages.
For many applications (or communicating application suites) a single endpoint
name suffices.
Transports implement endpoints—that is, transports transfer message data from
publishers to subscribers.
Administrators view an endpoint as a complex entity, embracing four separate
abilities (see Abilities on page 18). Administrators define application instances,
with connectors to bind transports to abilities.
Each subscriber object and each call to a publisher send method introduces a
channel requirement. Application developers record these requirements in
endpoint coordination forms. Administrators define connectors within
application instances to satisfy these requirements.
See Also
Endpoint Coordination Form, page 311
TIBCO FTL Administration
18
| Chapter 3
Implementing Endpoints
Abilities
Within a program, an endpoint has four communication abilities. A separate
aspect of the API embodies each of these abilities. Each of these four abilities and
its API embodiment corresponds to a distinct sub-stream of messages, called an
ability sub-stream. The following table summarizes the four abilities.
Table 4 Endpoint Abilities—Definitions
Ability
API
Description
One-to-Many Receive
Subscriber object
Carries one-to-many messages inbound to the
endpoint’s subscribers in the application.
One-to-One Receive
Inbox subscriber
object
Carries one-to-one messages inbound to the
endpoint’s inbox subscribers in the application.
One-to-Many Send
Send call
of a publisher object
Carries one-to-many messages outbound from
the endpoint’s publishers in the application.
One-to-One Send
Send-to-inbox call
of a publisher object
Carries one-to-one messages outbound from the
endpoint’s publishers in the application.
Notice that each ability combines two dimensions—reach and direction:
•
Reach
— One-to-many abilities carry messages that can reach potentially many
subscribers.
— One-to-one abilities carry messages that can reach one specific inbox
subscriber.
•
Direction
— Receive abilities carry messages inbound to an application.
— Send abilities carry messages outbound from an application.
TIBCO FTL Administration
Abilities 19
|
Abilities in the Configuration Interface
Table 5 presents these two dimensions in a grid. The grid yields four abilities—
compare the realm server’s graphical configuration interface for configuring a
connector (see Configuring an Application Instance on page 127 and Endpoint
Ability Check-Boxes on page 129).
Table 5 Endpoint Abilities—Summary
Receive
Send
One-to-Many
Receive
Send
One-to-One
Receive Inbox
Send Inbox
In explanatory diagrams, we represent an endpoint and its abilities with this
shape. The rectangular body represents the endpoint; the bulges on the right side
represent its four abilities.
R
RI
Endpt 1
S
SI
TIBCO FTL Administration
20
| Chapter 3
Implementing Endpoints
Implementation—Endpoints (Micro)
Administrators arrange transports to implement endpoints.
Transports
While endpoints are abstract, transports do the real work—transferring message
data between process instances of application programs. Within a program
process, a transport carries messages outbound from the program’s publishers
using an endpoint’s send and send inbox abilities, and inbound to the program’s
subscribers using the endpoint’s receive and receive inbox abilities.
Administrators are responsible for defining appropriate transports to transfer
messages, and for binding those transports to the endpoints of the various
program processes.
In explanatory diagrams, we represent a transport with this shape. The triangular
point indicates that the transport acts outside of an application process (for
example, in a network, or a shared memory segment).
Transport
Connectors
A connector is a configuration within an application instance definition, which
binds a transport to the abilities of an endpoint. Structurally, a connector consists
of a transport and a set of abilities, within the context of an application instance
definition.
The meaning of a connector is that the transport carries messages using that set of
abilities. A connector can bind its transport to one, two, three or all four abilities.
In the graphical configuration interface, connectors appear (unnamed) within
each endpoint on the Application Instance page or on the Application page. To
create a connector, click the Add a Transport icon.
In explanatory diagrams, we represent a connector and its abilities with this
shape. The rectangular body and its label represent the transport; the bulges on
the left side represent the four potential abilities; lines represent the endpoint
abilities that the connector actually binds. The graphical configuration interface
TIBCO FTL Administration
Implementation—Endpoints (Micro) 21
|
for a connector represents the four abilities as check-boxes; each line in this
connector diagram corresponds to a filled check-box in the configuration interface
(see Configuring an Application Instance on page 127 and Endpoint Ability
Check-Boxes on page 129).
R
RI
Tport 1
S
SI
When we depict a connector and its transport as adjacent shapes, we can omit the
transport name from one or the other.
R
Transport
R
RI
S
RI
Tport 1
S
SI
SI
We often depict the connector along with its endpoint, as it would appear in the
context of an application instance.
R
R
RI
RI
S
S
SI
SI
Endpt 1
Tport 1
Using Connectors to Cover Abilities
When a connector binds a transport to an endpoint, in effect it binds the transport
to a subset of the endpoint’s abilities. To be useful, the set of connectors in an
application instance definition must cover the set of abilities that a program uses
for communication. For example, in Figure 1, a program uses an endpoint to
receive one-to-many messages and to send one-to-one messages; an application
instance that binds only the receive ability and the send inbox ability is sufficient
to implement that endpoint for the program (that is, it covers the two abilities that
the program uses). The application instance definition could cover the required
abilities using either one connector, or two. Figure 1 illustrates both of these
possibilities.
TIBCO FTL Administration
22
| Chapter 3
Implementing Endpoints
Figure 1 Connectors Cover Endpoint Abilities
R
R
RI
RI
Endpt 1
Tport 1
R
R
RI
RI
Endpt 1
Tport 1
S
S
S
S
SI
SI
SI
SI
R
RI
Tport 2
S
SI
The number of connectors in an application instance definition depends on the
number of abilities that a program requires, and on the transports the
administrator chooses to carry those abilities. In most cases, an application
instance would contain only a few connectors, because it must cover at most four
abilities. Even if an application instance were to use a separate transport to carry
each of the four abilities, it would need at most four connectors to cover them.
Since one transport can carry several abilities, the number of connectors in the
application instance can be less than four.
TIBCO FTL Administration
Implementation—Application (Macro) 23
|
Implementation—Application (Macro)
Administrators view an application program both as an executable program, and
also as a set of process instances of that program, running on one or more host
computers. Arranging process instances on various host computers is one of the
administrator’s responsibilities.
All the process instances of an application program use the same set of
endpoints—developers hard-code that requirement into the program by creating
publishers and subscribers, and by calling their methods.
However, from an administrator’s perspective, it could be necessary or
advantageous for some of the process instances to implement those endpoints
using a different set of transports. For example, process instances on some
computers have access to hardware required to use RDMA transports, while
processes on other computers must use TCP transports. To arrange these
variations, administrators define (within the realm) application definitions and
application instance definitions.
Application Definitions
An application definition is a configuration (within the realm) that represents an
application program, declares its parts (that is, its endpoints and formats), and
configures endpoint implementation for its process instances. Structurally, an
application definition consists of a name, a set of endpoints, a set of application
instance definitions, and a set of preload formats.
Figure 2 on page 24 diagrams the structure of an application definition. To
visualize an application definition as a configuration, see Configuring an
Application Definition on page 123. To create a new application definition, see
Applications Summary on page 122.)
TIBCO FTL Administration
24
| Chapter 3
Implementing Endpoints
Figure 2 Application Definition
Name: App 1
Endpoints:
Instance: default
R
RI
Endpt 1
S
SI
R
R
RI
RI
S
S
SI
SI
Endpt 1
Tport 1
Preload Formats:
R
Format 1
RI
Tport 2
S
Format 2
SI
Format 3
The set of endpoints in the application definition must be identical to the set of
endpoints that the program code uses. To ensure agreement, developers and
administrators can use the Endpoint Coordination Form on page 311 as a contract
between program code and realm.
The set of application instance definitions is the central part of an application
definition; see Application Instance Definitions (below).
Administrators also define the set of managed formats that the application
program preloads from the realm server. (For more information, see Defining
Formats on page 12. Formats are orthogonal to endpoint implementation.)
Application Instance Definitions
Application instance definitions configure the implementation of endpoints for
process instances of an application.
Structurally, an application instance definition consists of a name, a set of match
parameters, and a set of connectors to implement each endpoint. To visualize an
application instance definition as a configuration, see Configuring an Application
Instance on page 127.
TIBCO FTL Administration
Implementation—Application (Macro) 25
|
Each application instance definition has two tasks with respect to implementing
endpoints:
•
Statically specify a configuration that satisfies all of the program’s endpoint
and ability requirements.
The set of connectors configures the implementation of endpoints—
accomplishing this task.
•
Dynamically determine a set of process instances that satisfy their
requirements according to that configuration.
The match parameters determine the set of process instances—accomplishing
this task.
Default Instance and Named Instances
Every application definition has a default instance definition. You may also define
an (optional) ordered list of named instance definitions.
A named instance definition can include values for match parameters. The
configuration interface prevents the default instance from including match
parameters.
Matching Instances
A matching algorithm dynamically determines a set of process instances.
The matching algorithm compares attribute values of a process instance against
the match parameter values in the named instance definitions. A process instance
matches a named instance definition when every match parameter you configure in
the named instance definition is identical to the corresponding attribute value in
the process instance. A match parameter without any value (in a named instance
definition) acts like a wildcard; it matches any attribute value in every process
instance.
The order of the named instance definitions within the application definition
determines the order in which the matching algorithm attempts to match them.
The first named instance definition that matches the process instance determines
the endpoint implementation for the process.
If none of the named instances matches the process instance, then the default
instance determines the endpoint implementation for the process. (If you have not
defined any named instances, then the default instance always determines
implementation for all process instances, without matching.)
To configure match parameters, see Host and Identifier on page 128.
TIBCO FTL Administration
26
| Chapter 3
Implementing Endpoints
When defining application instances to map from subject names to durables, see
also Matching Instances for Subscriber Name Mapping on page 281.
Result: Instance Connections
In a valid realm definition, all these micro and macro layers (taken together)
statically determine a set of instance connections—which connect the endpoints
(that is, publishers and subscribers within application process instances) with the
transports that implement them. For a visual representation, see Instance
Connections on page 145.
Subscribers and Durables
As noted above, application instance definitions accomplish two tasks with
respect to implementing endpoints.
When an application uses stores and durables, application instances also
accomplish a third task—to determine (for each endpoint) the mapping from
subscriber names to durables; see Configuring Durable Subscribers within an
Application Instance on page 281.
TIBCO FTL Administration
Administrative Requirements 27
|
Administrative Requirements
Administrative requirements for endpoint implementation depend on the
application programs. Each program instantiates a set of endpoints—embodying
them through API objects and method calls, which in turn use a subset of the
endpoints’ abilities. Program developers and administrators must coordinate to
ensure correct endpoint implementation:
•
Developers must specify the endpoints and communication abilities that their
applications use (and inform administrators). In the configuration model,
these are the requirements.
•
Administrators must configure transports and connectors to cover that set of
endpoint requirements. In the configuration model, these are the transport
abilities.
•
Administrators may configure several application instance definitions, each
implementing the endpoints in a different way. In the configuration model,
these are the solutions.
(To facilitate coordination, we recommend that developers complete the Endpoint
Coordination Form, page 311.)
It is an administrative error to leave an ability requirement unsatisfied. When the
application program attempts to use that ability, the API call fails. For example, if
no transport carries an endpoint’s one-to-many receive ability, the subscriber
creation call fails; if no transport carries an endpoint’s one-to-one send ability, the
publisher’s send to inbox call fails.
See Also
Configuration Model, page 16
TIBCO FTL Administration
28
| Chapter 3
Implementing Endpoints
Administrative Options
When configuring endpoint implementation, administrative choices affect
transmission characteristics for the application. This section presents some of the
factors to consider when optimizing overall performance.
Transport Type and Abilities
Some transport types are often more appropriate to carry some communication
abilities than others. For example, shared memory transports and multicast
transports are well-suited to carry one-to-many messages.
Transport Type and Host Computer
Some transport types are often more appropriate to application instances that are
co-located on one multi-core host computer, while others are appropriate to
communicate among separate host computers.
For example, shared memory transports are well-suited to carry messages among
co-located application instances. In contrast, TCP, RDMA and multicast
transports are well-suited to carry messages among application instances on
separate host computers.
Segregating Traffic by Priority
When a stream of messages has high priority and low volume, it is often
appropriate to segregate it on a separate transport, away from other streams with
lower priority or high volume.
Multiple Transports
It is possible to configure several transports to carry one endpoint ability. For
example, connectors could specify that a multicast transport and a TCP transport
both carry the send ability. The multicast transport reaches receivers within a
LAN, and the TCP transport reaches remote receivers (when an intervening
hardware router does not forward multicast packets).
When two or more transports carry an endpoint ability, the FTL base library
arranges their communications serially, within one thread, according to the order
that the transports appear in the application instance’s endpoint connectors.
Serial communications apply in two situations:
TIBCO FTL Administration
Administrative Options 29
|
•
Send abilities place outbound message data from a send call on each transport
serially.
•
Receive abilities associated with inline event queues accomplish all six phases
of delivery in a single thread, attending to each transport in a round-robin
arrangement.
(In contrast, receive abilities associated with regular event queues receive
inbound messages from several transports in separate threads. The dispatch
phase merges them into the event queue for dispatch in yet another thread.)
Serial processing can increase latency.
TIBCO FTL Administration
30
| Chapter 3
Implementing Endpoints
Sample Configuration 1—tibsend and tibrecv
To clarify the concepts of endpoints and transports, consider the sample
applications tibsend and tibrecv, and the sample realm configuration (see
Sample Programs on page 305). It can be helpful to view the example as a graph
as you read Table 6; see Instance Connections on page 145.
This first example illustrates basic concepts in configuring transports and
endpoint implementation—namely, binding a transport to carry an ability;
configuring connectors; joining endpoints through a common transport; dividing
message streams over separate transports.
Table 6 Sample Configuration—tibsend and tibrecv (Sheet 1 of 2)
tibsend
tibrecv
Program
Description
The sample program tibsend creates a
publisher object, and sends messages
over its one-to-many send ability.
The sample program tibrecv creates a
subscriber object, and receives messages
over its one-to-many receive ability.
Endpoints
The sample realm defines the
application tibsend with one endpoint
(named tibsend-endpoint).
The sample realm defines the
application tibrecv with one endpoint
(named tibrecv-endpoint).
Default Application Instance
First consider the default application instance, and the effect of its configuration.
The sample realm configures the default
application instance of tibrecv,
implementing tibrecv-endpoint with
the transport shm-sendrecv-tport,
which carries the endpoint’s
one-to-many receive ability.
Default
Application
Instance
The sample realm configures the default
application instance of tibsend,
implementing tibsend-endpoint with
the transport shm-sendrecv-tport,
which carries the endpoint’s
one-to-many send ability.
End Result
Notice that the two application instances specify the same transport
(shm-sendrecv-tport) to implement their respective endpoints. The effect is to join
the two endpoints (tibsend-endpoint and tibrecv-endpoint) so that messages
flow between them—from tibsend to tibrecv.
TIBCO FTL Administration
Sample Configuration 1—tibsend and tibrecv 31
|
Table 6 Sample Configuration—tibsend and tibrecv (Sheet 2 of 2)
tibsend
tibrecv
Another Application Instance
Next, consider another application instance, named mcast.
mcast
Application
Instance
End Result
The sample realm configures the mcast
application instance of tibsend, to
match the identifier mcast. For matching
processes, it implements
tibsend-endpoint with the transport
mcast-send-tport, which carries the
endpoint’s one-to-many send ability.
The sample realm configures the mcast
application instance of tibrecv, to
match the identifier mcast. For matching
processes, it implements
tibrecv-endpoint with the transport
mcast-recv-tport, which carries the
endpoint’s one-to-many receive ability.
Notice that the two application instances specify a pair of related transports to
implement their respective endpoints. Furthermore, those transports are
complementary—the multicast send group of one is a multicast listen group of the
other. The effect is to join the two endpoints (tibsend-endpoint and
tibrecv-endpoint) so that messages flow between them—from tibsend to
tibrecv.
If several process instances of tibsend and tibrecv were to run (on networked host
computers), their common transport would enable each instance of tibsend to
communicate with each instance of tibrecv.
However, messages do not flow between default application instances and
mcast application instances—they use two different transports, which keep their
message streams separate.
TIBCO FTL Administration
32
| Chapter 3
Implementing Endpoints
Sample Configuration 2—tibrequest and tibreply
This second example illustrates additional concepts in configuring transports and
endpoint implementation—namely, binding a transport to carry several abilities;
two-way message traffic; and connection-oriented transports with connecting and
listening ends, linked by a relationship.
Table 7 Sample Configuration—tibrequest and tibreply (Sheet 1 of 2)
Program
Description
Endpoints
tibrequest
tibreply
The sample program tibrequest
creates a publisher object, and sends
messages over its one-to-many send
ability.
The sample program tibreply creates a
subscriber object, and receives request
messages over its one-to-many receive
ability.
tibrequest also creates an inbox
subscriber object, and receives reply
messages over its one-to-one receive
ability.
It responds to each request message by
sending back a reply message over its
one-to-one send ability.
The sample realm defines the
application tibrequest with one
endpoint (named
tibrequest-endpoint).
The sample realm defines the
application tibreply with one endpoint
(named tibreply-endpoint).
Application Instance
Consider the rdma application instance, and the effect of its configuration.
rdma
Application
Instance
The sample realm configures the rdma
application instance of tibrequest, to
match the identifier rdma. For matching
processes, it implements
tibrequest-endpoint with the
transport rdma-request-tport, which
carries the endpoint’s one-to-many send
ability, and also its one-to-one receive
ability.
TIBCO FTL Administration
The sample realm configures the rdma
application instance of tibreply, to
match the identifier rdma. For matching
processes, it implements
tibreply-endpoint with the transport
rdma-reply-tport, which carries the
endpoint’s one-to-many receive ability,
and also its one-to-one send ability.
Sample Configuration 2—tibrequest and tibreply 33
|
Table 7 Sample Configuration—tibrequest and tibreply (Sheet 2 of 2)
tibrequest
Relationship
tibreply
Notice that the two application instances specify a pair of related transports to
implement their respective endpoints. Furthermore, those transports are
complementary.
The essence of their relationship is that rdma-request-tport and
rdma-reply-tport both specify the same port number. rdma-request-tport is the
connecting end, while rdma-reply-tport is the listening end of the same port.
Once they establish a connection between them, they work together to transmit data
over that link.
End Result
The effect is to join the two endpoints (tibrequest-endpoint and
tibreply-endpoint) so that messages flow between them. The request messages
flow from tibrequest to tibreply, and the reply messages flow in the opposite
direction.
TIBCO FTL Administration
34
| Chapter 3
Implementing Endpoints
TIBCO FTL Administration
| 35
Chapter 4
Transports
This chapter presents general information about transports, the available
transport types and their configuration details.
Topics
•
Transport Overview, page 36
•
Unitary and Fragmentary Transport Definitions, page 38
•
Bus Topologies, page 40
•
Pair Connections, page 44
•
Subscriber Interest, page 46
•
Blocking vs Non-Blocking Send, page 47
•
Inline Mode, page 49
•
Receive Spin Limit, page 50
•
UDP Packet Send Limit, page 53
Transport Types
•
Shared Memory Transport, page 55
•
Remote Direct Memory Access Transport (RDMA), page 57
•
Dynamic TCP Transport, page 60
•
Static TCP Transport, page 62
•
Multicast Transport (Mcast), page 64
•
Reliable UDP Transport (RUDP), page 70
•
Process Transport (PROC), page 72
TIBCO FTL Administration
| Chapter 4
Transports
Transport Overview
Transports are the underlying mechanism that facilitate message communication
among endpoint instances in programs. FTL software supports several transport
types. This chapter begins with explanations of transport concepts, and ends with
the details of the transport types (each in its own section).
Transport Roles
Transports have two important runtime tasks:
•
Establish a bus—a shared communication medium.
•
Serve as a communications interface—mediating between endpoint instances
(that is, publishers and subscribers in application processes) and the bus.
Inside a Transport
Figure 3 Transports and Bus
App
E
T
Bus
T
E
E
App
T
Ap p
36
Figure 3 presents a generalized view of transports and their operating roles.
Notice several aspects of this runtime perspective:
•
Endpoint instances are objects within application processes. Application code
uses API calls to create publisher and subscriber objects within application
process instances.
•
Transports are objects that straddle the edge of application processes.
Administrators configure transports in the realm, and FTL base library code
expresses the transport definitions in application processes at runtime. These
TIBCO FTL Administration
Transport Overview 37
|
runtime transports act within the process to fulfill the transport’s two roles
outside the process—they establish a bus, and serve as interfaces between
endpoints and the bus.
•
Transports (and their operating details) remain hidden from application code.
•
The type and details of the bus remain hidden from application code.
•
The bus is conceptually outside the application processes, and transports
mediate between the application program and the bus.
Transport Definitions Must be Unique
It is erroneous to define two (or more) transports with identical transport
configuration values.
For example:
•
Do not configure two transport definitions that access the same shared
memory segment.
•
Do not configure two transport definitions with the same multicast send
group and listen groups.
The scope of this prohibition is even wider than a single realm. If two (or more)
realms exist within the same network, then violating this rule can result in
interference between the realms.
We strongly discourage bending this rule as a technique to bridge between two
realms. Instead, we recommend developing a custom application to translate
messages between realms. Such an application would straddle the realms,
connecting to both realm servers. (The translation application must pay special
attention to the formats of messages as they cross between realms.)
TIBCO FTL Administration
38
| Chapter 4
Transports
Unitary and Fragmentary Transport Definitions
Transport definitions can be either unitary or fragmentary:
•
Unitary—transports in several communicating process instances or process
threads use the same transport definition to establish a bus.
•
Fragmentary—transports in process instances use different transport
definitions, which cooperate to establish a bus.
For example, definitions of shared memory, dynamic TCP and process transports
are inherently unitary. One shared memory segment serves as a bus for endpoints
in many application processes. One transport definition contains all the
information that all the application processes require to establish that bus.
In contrast, static TCP and RDMA transports are inherently fragmentary because
they use connection-oriented protocols to establish a bus. For example,
establishing each static TCP connection requires asymmetric transport definitions
at the listening end and the connecting end. The two transports specify
complementary modes (one listens, the other connects), and the two transports
cooperate (they listen and connect at a common interface and port).
Multicast transport definitions can be either unitary or fragmentary. Multicast
communication does not require any initial connection protocol, so the
determining factor is the use case.
•
In a unitary use case, a set of communicating peers could all use the same
multicast group as their bus. One transport definition suffices; it specifies an
identical multicast group for listen and for send.
•
In the more common fragmentary case, administrators control network data
flow to achieve specific results (such as bandwidth allocation, performance,
data segregation, or asymmetric multicast topologies). A set of shared
multicast groups serve as the bus; applications require different transport
definitions, reflecting their different communication characteristics.
Transport Relationships
A transport relationship is a symmetric relation between two fragmentary
transports.
When defining a transport, T1, an administrator can add a transport relationship,
specifying another transport, T2 (even if T2 is not yet defined). Because the
relationship is symmetric, T2 automatically shares that same relationship with T1.
We say that T1 and T2 are related transports.
TIBCO FTL Administration
Unitary and Fragmentary Transport Definitions 39
|
The FTL base library uses transport relationship information when sending
messages. Administrators must signal that fragmentary transports cooperate by
defining the relationships among them.
However, merely defining a relationship between two transports is not sufficient
for communication. Administrators must also properly configure the related
transports so that they can establish a bus. For example, consider a static TCP
transport, T1, which listens on port 5678, with a relationship to a static TCP
transport, T2, which connects on port 7890. This configuration is erroneous,
because the two related transports cannot establish a TCP connection.
When related transports are properly configured and establish a bus, data flows
between them through the bus. Figure 4 depicts two program processes, each
with one endpoint. A pair of related transports implements the two endpoints.
Curved arrows on the right show the data flow among the abilities of the related
transports. Notice that when process P1 sends a one-to-one message, it flows
through the send inbox ability over transport T1, then into process P2 through the
receive inbox ability of transport T2, and P2 receives it in its inbox (which
instantiates endpoint E2). Transport relationship information plays an important
role in the crossover between the send abilities and the receive abilities.
Figure 4 Related Transports—Data Flow
Process P1
R
R
RI
RI
S
S
SI
SI
E1
T1
Bus
Process P2
R
R
RI
RI
S
S
SI
SI
E2
T2
TIBCO FTL Administration
| Chapter 4
Transports
Bus Topologies
You can configure a set of cooperating transports to establish a bus with a
predetermined topology. This section outlines the configuration techniques for
some example topologies.
Unitary Mesh
The natural topology of a unitary transport definition (such as shared memory,
dynamic TCP, or symmetric multicast) is a mesh (complete graph) over all its
runtime transports. Figure 5 shows that topology with five process instances. Any
process on this bus can send messages to all of its peers, and receive messages
from all of its peers.
Notice that all five processes necessarily use the same transport definition (T) to
join the bus (this is the definition of a unitary transport definition).
Figure 5 Unitary Mesh
A3
A2
E
E
T
T
A4
T
E
E
T
A1
Bus
T
E
A5
40
Assembling Larger Topologies from Pair Connections
The basic building block in connection-oriented transports (such as RDMA, static
TCP or RUDP) is a pair connection, which enables two-way communication
between two runtime transports across a network. You can assemble these basic
parts into larger topologies, such as hub and spoke, or mesh (see below).
TIBCO FTL Administration
Bus Topologies 41
|
Hub and Spoke
Figure 6 shows a hub-and-spoke topology for a server with many clients.
Configure one listen end transport definition for the hub, and one connect end
transport definition for all the spokes. Start the hub application, then start the
spoke applications. (For further information, see Pair Connections on page 44.)
Figure 6 Hub and Spoke Topology
Spokes
Client
E2
T2
T2
Cli
en
t
E2
Hub
T2
E2
Serv
er
E1
T1
Client
Bus
Mesh
Figure 7 on page 42 shows a mesh (that is, a complete graph) with four vertices.
Configure four transport definitions:
•
T1 listens on port P1.
•
T2 listens on port P2, and connects to port P1 (on A1’s host computer).
•
T3 listens on port P3, and connects to ports P1 (on A1’s host computer), and to
port P2 (on A2’s host computer).
•
T4 connects to ports P1 (on A1’s host computer), and to port P2 (on A2’s host
computer), and to port P3 (on A3’s host computer).
TIBCO FTL Administration
| Chapter 4
Transports
Figure 7 Mesh Topology for Connection-Oriented Transport Types
A3
A2
E
E
T3
T2
T1
A4
E
T4
E
Bus
A1
42
Notice that all four processes necessarily use different transport definitions to join
the bus. It cannot be otherwise, because connection-oriented transport definitions
are fragmentary.
Also notice that the four transport definitions (T1–T4) are each tied to specific host
computers. In order to use them, the application process instances (A1–A4) must
run on those host computers, respectively. You can configure this constraint using
application instance definitions that match the Host parameter.
Asymmetric Multicast Topologies
Figure 8 on page 43 shows an asymmetric multicast topology. Three sending
applications (on the left side) can send one-to-many messages to three receiving
applications (on the right side). (You can easily generalize this example to any
number of senders and receivers; the number of senders and receivers need not be
the same.)
Configure these definitions:
•
Transport TS specifies send group G1.
•
Transport TL specifies listen group G1.
•
Connectors in the senders (left) bind TS to carry the send ability.
•
Connectors in the receivers (right) bind TL to carry the receive ability.
TIBCO FTL Administration
Bus Topologies 43
|
Figure 8 Asymmetric Multicast—Bipartite Graph
Senders
Receivers
TS
E
E
TS
TS
R3
E
TL
E
S2
R2
E
TL
S1
E
R1
TL
S3
Bus
Notice that all these processes use only two different transport definitions (TS and
TL) to join the bus, reflecting their opposite roles as either senders or receivers.
TIBCO FTL Administration
44
| Chapter 4
Transports
Pair Connections
When defining connection-oriented transports (such as static TCP, RDMA and
RUDP) the connect end and the listen end must cooperate to establish a
connection.
Listen End and Connect End
The assignment of listen end and connect end is not arbitrary. Instead, it depends
on the type of interaction, or on the bus topology. To simplify transport
configuration, follow the recommendations in Table 8.
In general, a process that must start first is a good candidate for the listen end of
pair connection. This rule helps avoid situations in which programs send
messages before the transport establishes a pair connection bus.
Table 8 Listen End and Connect End
Situation
Listen End
Connect End
Request/Reply Interactions
Replying process
Requesting process
Server and Clients
Server
Clients
Long-Lived Process and
Ephemeral Processes
Long-lived process
Ephemeral processes
Hub and Spoke Topology
Hub
Spokes
Start Order
Administrators must arrange for processes to start in the correct order.
Application semantics drives this precedence—if a requesting process starts
before the replying process, the replying process could miss the first request (or
several requests).
The principles that determine which processes must start first (namely, replying
processes, servers, long-lived processes and hub processes) are similar to the
principles that determine the preference for listen end of a pair connection (see
Table 8).
TIBCO FTL Administration
Pair Connections 45
|
Connect Requests are Specific to IP Addresses
A transport definition for a connect end hard-configures a specific IP address at
the listening end. Consider these consequences:
•
A connect end transport definition can operate on several different host
computers—as long as the listening end port is already open.
•
A listen end transport must run at the location where its connect end
counterparts expect to find it.
•
If you move a listen end process to another host computer, you must
reconfigure its counterpart connect end so it can find the listen end.
•
If you move a connect end process to another host computer, you need not
modify its counterpart listen end.
•
A connect end must direct its connection requests to a listen port on
one specific network interface of the host computer at the listen end. That is,
you must specify either an IP address or a hostname—but * is not valid. The
listen port must be open on that network interface, otherwise the connection
request fails.
•
A listen end transport may open a listen port on all available network
interfaces, or on only one. That is, you may specify * as the host interface, or a
specific IP address or hostname.
TIBCO FTL Administration
46
| Chapter 4
Transports
Subscriber Interest
Whenever possible, publishers send messages only to interested subscribers. That
is, publishers send only those messages that match at least one subscriber content
matcher. This behavior can reduce bandwidth consumption, and can enhance
subscriber performance in some situations.
This behavior extends across a transport bridge when the transports support it
end-to-end.
This behavior is automatic for TCP, RDMA and shared memory transports.
For multicast transports, you must explicitly require subscriber interest, and you
must also configure the transport’s multicast groups to support bi-directional
communication (that is, inbound and outbound) on the transport bus (see
Multicast Groups on page 66). The two directions need not use the same multicast
group. See Require Subscriber Interest on page 65.
Feature Availability
For multicast transports this behavior is available when publishers use the FTL
library from release 4.1 (or later), and subscribers use the FTL library from release
4.0 (or later).
For all other transports this behavior is automatic when the subscriber and
publisher both use the FTL library from release 2.x (or later).
See Also
Chapter 14, Transport Bridge, page 221
TIBCO FTL Administration
Blocking vs Non-Blocking Send 47
|
Blocking vs Non-Blocking Send
Send calls in an application program place outbound messages on a bus (external
to the program process); a transport mediates this I/O operation. Under normal
circumstances, the I/O operation completes quickly, and the send call returns.
If the bus is full (that is, it cannot accept any more messages) then two behaviors
are possible (see the table below). Administrators select one of these two
behaviors, and configure it in the transport definition.
Table 9 Blocking and Non-Blocking Send
Behavior
Description
Blocking Send
When the bus is full, the send call blocks, and does not return until it has
placed all the outbound message data on the bus.
Non-Blocking Send
(Default Behavior)
When the bus is full, the transport buffers outbound messages in a backlog
buffer (in process memory) until the bus can accept them. The send call
returns.
When the bus can accept more messages, the transport automatically moves
them from its backlog buffer to the bus.
If the backlog buffer overflows, the transport discards the oldest messages in
the buffer to make room for new messages. The discarded messages do not
arrive at slow receivers; the base library reports dataloss advisories to slow
receivers.
See Also
Non-Blocking Send on page 133
Shared Memory Transports and One-to-Many Non-Blocking Send
Shared memory transports buffer message data from one-to-many send calls in
the shared memory segment itself (rather than in a backlog buffer in process
memory).
To counteract dataloss in this situation, enlarge the Size of the shared memory
segment in the transport definition (rather increasing the backlog buffer size).
TIBCO FTL Administration
48
| Chapter 4
Transports
Blocking Send and Inline Mode
Programs that use inline event queues must ensure that callbacks return promptly
and do not include operations that might block. If a program with inline event
queues sends messages from within a callback, administrators must ensure that
those outbound transports specify only non-blocking send. In this situation,
blocking send could cause the send call within the callback to block the inline
dispatch thread (even though the programmer expected the send call to return
immediately).
TIBCO FTL Administration
Inline Mode 49
|
Inline Mode
Programs that receive time-sensitive messages can use inline mode to favor low
latency over high throughput. Inline mode reduces inbound message latency by
consolidating transport I/O and message callback processing into one thread.
For a complete description of inline mode, its usage, requirements and
restrictions, see Inline Mode in TIBCO FTL Development.
When specifying inline mode, programmers and administrators must coordinate
to avoid illegal state exceptions. In particular, inline mode for event queues
imposes restrictions on the transports you can use to implement endpoints; see
Transport Restrictions in TIBCO FTL Development, and Application Coordination
Form on page 308.
When specifying inline mode, programmers and administrators must also
coordinate to avoid blocking send operations that could delay callbacks from
returning promptly; see Blocking Send and Inline Mode on page 48.
TIBCO FTL Administration
50
| Chapter 4
Transports
Receive Spin Limit
This section explains the semantics of the transport parameter Receive
and its effect on message latency and CPU resource utilization.
Spin
Limit,
Do not adjust receive spin limit except to achieve specific and well-defined
performance objectives. Do not adjust unless you thoroughly understand all of
the material in this section.
Motivation and Background
If you understand the role of threads in inbound message delivery, you can
eliminate a potential source of latency—by increasing the CPU resources
dedicated to inbound delivery. (For an introduction to message delivery, see
Delivering Inbound Messages in TIBCO FTL Development.)
Polling for Data
FTL code polls for available data during two phases of inbound message delivery:
•
In the receive phase, to receive data from a transport’s data source
•
In the dispatch phase, to take messages from an event queue
The paradigm is identical in both polling phases:
1. Determine the time limit for polling—that is, the receive spin limit.
2. Poll for available data.
— If available, get the data and return it.
— If not, continue polling until the time limit elapses.
3. When the time limit elapses, block until data becomes available. Blocking
relinquishes the CPU resource to do other work.
Threads and Latency
Polling code operates within a thread.
•
If the thread is already executing on a CPU core, and polling for data, then
when data becomes available, the thread immediately gets the data—without
adding latency.
•
However, if the thread has blocked, the context switching time until it
resumes execution adds to message latency. If it is crucial that your
TIBCO FTL Administration
Receive Spin Limit 51
|
application minimize latency, then consider avoiding this situation by
adjusting receive spin limit.
Tuning Receive Spin Limit
The default value for receive spin limit is 0.01 seconds—a value that yields good
performance in many situations.
When necessary, administrators can adjust receive spin limit as a parameter of
individual transport definitions; see Receive Spin Limit on page 133.
Tuning for Minimal Latency
Blocking frees CPU resources for other threads. However, if minimal latency is
crucial and CPU resources are plentiful, then you can avoid blocking by adjusting
receive spin limit.
If unacceptable latency spikes occur during conditions of sparse message traffic,
one possible cause could be that messages arrive shortly after the receive spin
limit has elapsed, so the polling thread has recently blocked. In this situation,
consider increasing the receive spin limit to a value that is greater than the
maximum expected time between messages. Select a value that is large enough to
prevent threads from blocking between consecutive messages. Test the results
empirically.
Coordinate with developers to understand the thread behavior of application
programs. When the application program creates many dispatch threads, use
caution when increasing receive spin limits. Avoid starving threads by
monopolizing CPU resources.
Tuning to Optimize CPU Resources
If CPU resources are scarce or expensive, then consider decreasing the receive
spin limit so threads that are waiting for data relinquish their CPU resources to do
other work.
Zero is an acceptable value. FTL polls for available data only once. If data is not
available, then FTL blocks immediately.
From Transports to Dispatch
Receive spin limit is a parameter of transports, but its value governs the behavior
of two delivery phases (as described above).
TIBCO FTL Administration
52
| Chapter 4
Transports
The receive phase operates at the transport level, and takes its receive spin limit
directly from the transport definition.
The dispatch phase operates at the event queue level, and inherits its receive spin
limit as the maximum value over all the transports that feed messages into the
event queue (see Figure 9 on page 52).
Figure 9 Receive Spin Limit—Example with Several Transports
T1
T2
T3
Administrator
Perspective
E1
E2
Programmer
Perspective
S1
S2
Q1
Inline Mode
Regular operation separates the receive and dispatch phases into distinct threads.
In contrast, inline mode merges the phases into a single thread—the thread in
which the program calls the dispatch method. Accordingly, for inline mode the
governing spin limit in both polling phases is the maximum value over all the
relevant transports (as mentioned above regarding the dispatch phase).
TIBCO FTL Administration
UDP Packet Send Limit 53
|
UDP Packet Send Limit
With UDP-based transports such as multicast, fast sending programs can
overwhelm slower receiving programs, which could result in
retransmission-related latency, extra resource consumption (CPU cycles and
network bandwidth), retransmission storms, or data loss. To prevent these
scenarios, FTL can limit the rate at which sending programs transmit UDP
packets to the network.
Administrators can empirically tune the flow of data packets from sending
programs by adjusting the Packet Send Limit—a required property of
UDP-based transports.
Limiting the packet send rate also limits the data send rate (bytes per second),
because the data send rate varies with the packet rate and the data sizes of the
packets. However, even if the data send rate is low, a high packet send rate can
still overwhelm a receiver. Hardware limits on the number of NIC I/O interrupts
translate into limits on the receiver’s inbound message rate. When an inbound
packet arrives, the cost of the NIC interrupt is independent of the size of the data
in the packet.
General Guidelines
•
Tune the packet send limit parameter on the senders’ transports (this
parameter has no effect at the receiving end).
•
When an application sends batched messages (that is, several messages per
send call), it is probably already using UDP bandwidth efficiently. We
recommend setting the packet send limit to zero. However, if slow receivers
report dataloss, then consider tuning the packet send limit (as explained
below).
•
When an application rapidly sends small messages singly (that is, one
message per send call), then adjust the packet send limit to increase
TIBCO FTL Administration
54
| Chapter 4
Transports
throughput efficiency. Use these guidelines as you empirically tune this
parameter:
— The general goal is to determine the highest value that does not overwhelm
any receiving hardware.
— To begin, try a value within the range 50,000 to 150,000 packets per second
(depending on capacity of the receiving CPUs to handle NIC interrupts.)
— To reduce average latency, try raising the value.
— If the number of packets overwhelms any receiver, try a lower value—
which raises average throughput by utilizing MTU capacity more
efficiently.
See Also
Multicast: Packet Send Limit, page 66
TIBCO FTL Administration
Shared Memory Transport 55
|
Shared Memory Transport
Endpoints in programs that run on the same host computer can communicate
using a shared memory transport. Shared memory transports communicate at
high speeds, and exhibit very low latency.
Shared memory transports are an excellent strategy for fast communication
among processes on multi-core hardware.
Shared memory transport definitions are inherently unitary.
Topology
The natural topology of a shared memory bus is the mesh (complete graph) of all
its runtime transports. All runtime transports can use the bus for both sending
and receiving operations. When appropriate, you can configure connectors to
artificially limit the abilities that an endpoint may use.
Non-Blocking Send
See Shared Memory Transports and One-to-Many Non-Blocking Send on page 47.
Configuration Parameters
Table 10 describes the parameters specific to shared memory transports in the
configuration interface. For parameters that are common to several transport
types, see Configuring a Transport Definition on page 131.
Table 10 Transport Configuration Parameters: Shared Memory (Sheet 1 of 2)
Parameter
Description
Segment Name
Required.
Name of the shared memory segment.
We recommend only ASCII alphanumeric characters in the segment name.
The maximum length of the segment name depends on the operating system:
•
Mac OS X: 16 characters
•
UNIX: PATH_MAX
•
Windows: MAX_PATH
TIBCO FTL Administration
56
| Chapter 4
Transports
Table 10 Transport Configuration Parameters: Shared Memory (Sheet 2 of 2)
Parameter
Description
Size
Required.
Size of the shared memory segment. (See also Size Units, page 109.)
Directory Name
Optional.
Each FTL shared memory transport uses a scratch directory to store
information about the runtime transports that use its shared memory
segments.
When present, this directory path specifies the scratch directory. (If the
directory you specify doesn’t exist in the file system, FTL attempts to create it.)
When absent, the default scratch directory is /tmp (or its equivalent on
non-UNIX platforms).
Global Scope
Windows only (on other platforms, the base library ignores this parameter).
On Windows platforms, shared memory segments can either be local to a
specific username (that is, a login name) or global (available to all usernames).
To use a global segment, enable this feature. If the process instances using the
transport run with different usernames, then you must use a global segment.
To use a local segment (specific to the user running the application process),
disable this feature. You may use a local segment only if the process instances
using the transport all run with the same username.
For further information, see
msdn.microsoft.com/en-us/library/aa366537%28VS.85%29.aspx.
TIBCO FTL Administration
Remote Direct Memory Access Transport (RDMA) 57
|
Remote Direct Memory Access Transport (RDMA)
On computers that support remote direct memory access (RDMA), network
adapters can move data directly from memory in one computer to memory in
another computer (across a network). This strategy can reduce or eliminate
several sources of latency resulting from overhead—including network protocol
overhead, operating system overhead, context switching overhead.
On each host computer, FTL allocates buffers for each connection on an RDMA
transport.
RDMA is a connection-oriented protocol. Its transport definitions are inherently
fragmentary; you must define at least two complementary transport definitions to
establish a bus. For more information, see Pair Connections on page 44.
Although an individual RDMA connection links exactly two host computers, you
can combine several connections into a bus with a more complex topology; see
Assembling Larger Topologies from Pair Connections on page 40.
Configuration Parameters
Table 11 describes the parameters specific to RDMA transports in the
configuration interface. For parameters that are common to several transport
types, see Configuring a Transport Definition on page 131.
Table 11 Transport Configuration Parameters: RDMA (Sheet 1 of 2)
Parameter
Description
Pair Connection Settings
You must specify at least one triplet (host, port and initialization mode).
Host
Required.
For the host, specify an RDMA interface either as a host name or as an IP
address.
Asterisk (*) is a special value, which designates all RDMA interfaces on
the host computer (analogous to INADDR_ANY, but limited to RDMA
interfaces). This special value is available only with Listen mode (that is,
RDMA transports can listen for connections on all network interfaces, but
they must connect to a specific interface).
Port
Required.
Specify a port number.
TIBCO FTL Administration
58
| Chapter 4
Transports
Table 11 Transport Configuration Parameters: RDMA (Sheet 2 of 2)
Parameter
Description
Mode
Required.
You must select either Connect or Listen as the initialization protocol
mode:
•
Connect—the transport initiates RDMA communication by sending a
connection request to host:port.
•
Listen—the
transport listens for RDMA connection requests at
host:port.
For more information, see Listen End and Connect End on page 44.
Other RDMA Properties
Source Address
Optional. Specify an IP address.
When the host computer initializing an RDMA connection request has
more than one local interface, the transport attempts outward connection
requests over this interface.
When absent, the transport attempts outward connection requests over
all the available interfaces (in an indeterminate order).
This parameter does not affect a transport’s ability to listen for inbound
connection requests.
Transport Relationships
Transport
Relationships
You must create a relationship with all other transports that cooperate to
establish a bus.
RDMA Hardware
FTL RDMA transports require hardware that is compliant with implementation
standards in Table 12.
Table 12 RDMA Hardware (Sheet 1 of 2)
Platform
RDMA Hardware
Linux
InfiniBand HCA; RoCE
TIBCO FTL Administration
Remote Direct Memory Access Transport (RDMA) 59
|
Table 12 RDMA Hardware (Sheet 2 of 2)
Platform
RDMA Hardware
Windows Server 2008 R2
InfiniBand HCA
RDMA Implementation Libraries
In addition to RDMA hardware, the FTL RDMA transports require the verbs and
RDMACM libraries from OFED.
Table 13 RDMA Driver Libraries
Platform
Driver Support
Linux
ofed-1.5.1
Windows Server 2008 R2
ofed-3.1
(or later)
(or later)
Locked Memory Buffers
The FTL library reserves buffers for RDMA transports. These buffers are locked—
that is, the operating system cannot swap them out to virtual memory.
For each RDMA connection FTL attempts to allocate 4 megabytes of locked
memory—that is, 128 buffers of length 32 kilobytes each (64 buffers for sending
messages, and another 64 buffers for receiving messages).
On Linux platforms, set the user-level locked memory with the ulimit command;
for example:
ulimit -l unlimited
On Linux platforms with the PAM limits module, set the system-level locked
memory values in the file /etc/security/limits.conf; for example:
* soft memlock 8192
* hard memlock unlimited
Supply values either in kilobytes, or as the string unlimited.
TIBCO FTL Administration
60
| Chapter 4
Transports
Dynamic TCP Transport
A TCP transport enables communication over a set of dedicated connections. To
configure a full mesh topology using TCP links, we recommend dynamic TCP
transports.
In contrast, for other topologies (such as hub-and-spoke), use static TCP (see
Static TCP Transport on page 62).
Dynamic TCP uses transport definitions that are inherently unitary. Nonetheless,
it establishes a bus composed of individual TCP pair connections. However, all
the details of those pair connections—listening end, connecting end, host and
port—are transparent to the administrator. The application and the realm server
arrange those details automatically and dynamically.
The resulting mesh is limited to applications that connect to a single realm server
process. That is, applications that connect to a satellite realm server cannot
participate in a dynamic TCP bus with applications that connect to the primary
realm server. However, such applications can still communicate through a
transport bridge connecting dynamic TCP meshes at different locations (see
Bridges among Dynamic TCP Meshes on page 236).
Configuration Parameters
Table 15 describes the parameters specific to static TCP transports in the
configuration interface. For parameters that are common to several transport
types, see Configuring a Transport Definition on page 131.
Table 14 Transport Configuration Parameters: Dynamic TCP (Sheet 1 of 2)
Parameter
Description
Advanced Settings
Optional.
Subnet Mask
Limit the hardware interfaces that this TCP transport can use.
When network administrators allocate subnets for specific purposes, use
this parameter to comply.
Specify a CIDR mask; for example, 192.168.2.0/24.
TIBCO FTL Administration
Dynamic TCP Transport 61
|
Table 14 Transport Configuration Parameters: Dynamic TCP (Sheet 2 of 2)
Parameter
Description
Port
Designate a specific port to establish a TCP bus.
When zero or absent, dynamic TCP transports use ephemeral listen ports
to establish a bus. A firewall can thwart this mechanism. To circumvent
the obstacle, designate a specific port for this purpose, and arrange for
the firewall to open that port.
When present, all applications that use the transport use this port to
establish a bus. Notice that using this feature implies a restriction—only
one application per host computer can use this dynamic TCP transport
(as only one application can bind the listen port).
TIBCO FTL Administration
62
| Chapter 4
Transports
Static TCP Transport
A TCP transport enables communication over a set of dedicated connections. Use
static TCP for other topologies (such as hub-and-spoke.
In contrast, to configure a full mesh topology using TCP links, we recommend
dynamic TCP transports (see Dynamic TCP Transport on page 60).
Static TCP is a connection-oriented protocol. Its transport definitions are
inherently fragmentary; you must define at least two complementary transport
definitions to establish a bus. For more information, see Pair Connections on
page 44.
Although an individual static TCP connection links exactly two host computers,
you can combine several connections into a bus with a more complex topology;
see Assembling Larger Topologies from Pair Connections on page 40.
Configuration Parameters
Table 15 describes the parameters specific to static TCP transports in the
configuration interface. For parameters that are common to several transport
types, see Configuring a Transport Definition on page 131.
Table 15 Transport Configuration Parameters: Static TCP (Sheet 1 of 2)
Parameter
Description
Pair Connection Settings
You must specify at least one triplet (host, port and initialization mode).
Host
Required.
For the host, specify a static TCP interface either as a host name or as an
IP address.
Asterisk (*) is a special value, which designates all TCP interfaces on the
host computer (that is, INADDR_ANY). This special value is available only
with Listen mode (that is, TCP transports can listen for connections on
all network interfaces, but they must connect to a specific interface).
Port
Required.
Specify a port number.
TIBCO FTL Administration
Static TCP Transport 63
|
Table 15 Transport Configuration Parameters: Static TCP (Sheet 2 of 2)
Parameter
Description
Mode
Required.
You must select either Connect or Listen as the initialization protocol
mode:
•
Connect—the
•
Listen—the
transport initiates TCP communication by sending a
connection request to host:port.
transport listens for TCP connection requests at host:port.
For more information, see Listen End and Connect End on page 44.
Transport Relationships
Transport
Relationships
You must create a relationship with all other transports that cooperate to
establish a bus.
TIBCO FTL Administration
64
| Chapter 4
Transports
Multicast Transport (Mcast)
A multicast transport enables reliable multicast communication among endpoints
on many host computers. Multicast transports are efficient for high fan-out
communication across a LAN. Multicast transports use a negative
acknowledgement protocol for reliable message transfer.
Multicast transports excel at one-to-many communications.
Starting with release 4.0, multicast transports can also support one-to-one
communications. For example, servers can send one-to-one replies to individual
clients (requestors). For configuration details, see Configuring Multicast Inbox
Communication on page 68.
Starting with release 4.1, multicast transports can filter messages by subscriber
interest. For backward compatibility issues, see TIBCO FTL Release Notes.
Multicast Group as Shared Communication Medium
Multicast transport definitions can be either unitary or fragmentary. They do not
require any initial connection protocol, so the determining factor is the use case.
•
In a unitary use case, a set of communicating peers could all use the same
transport. For example, all endpoints send on the same multicast group, and
all endpoints listen to the same group (or groups).
•
In the more common fragmentary case, administrators control network data
flow to achieve specific results (such as bandwidth allocation, performance,
data segregation, or asymmetric multicast topologies). Sending peers and
listening peers use related transports with the same port, but different send
and listen groups.
TIBCO FTL Administration
Multicast Transport (Mcast) 65
|
Configuration Parameters
Table 16 describes the parameters specific to multicast transports in the
configuration interface. For parameters that are common to several transport
types, see Configuring a Transport Definition on page 131.
Table 16 Transport Configuration Parameters: Multicast (Sheet 1 of 4)
Component or
Property
Description
Host
Optional.
Specify a network interface. You may supply an IP address in dot-decimal
notation. The transport resolves the value of the host parameter when the
application establishes a bus.
If you supply an IP address, the transport first treats the IP address as a host
address, comparing it against the interface addresses of the host computer; it
uses the first matching interface. If it does not find a direct match, the
transport next treats the IP address as a network address (subnet), and
compares the IP address against the network addresses of the interfaces of
the host computer; it uses the first interface address whose network address
matches the IP address.
Asterisk (*) is a special value, which designates all network interfaces on the
host computer (that is, INADDR_ANY).
When absent, the transport uses the default interface address. First it calls
to get the hostname string. Then it calls gethostbyname with
that hostname to get the IP address of the default network interface.
gethostname
Port
Required.
Specify a multicast port.
Require Subscriber
Interest
When enabled, the multicast transport carries only those messages that
match subscriber interest—filtering outbound messages at sending
endpoints; see Subscriber Interest on page 46.
However, enabling this parameter is not sufficient. You must also configure
the transport’s multicast groups to support bi-directional communication (that
is, inbound and outbound) on the transport bus (see Multicast Groups on
page 66). The two directions need not use the same multicast group.
When disabled, the multicast transport carries all messages—without
filtering. This value is the default, for backward compatibility.
TIBCO FTL Administration
66
| Chapter 4
Transports
Table 16 Transport Configuration Parameters: Multicast (Sheet 2 of 4)
Component or
Property
Description
Multicast Groups
Listen Groups
The transport joins all the listen groups that you specify. You may configure
between zero and 64 listen groups.
A listen group enables inbound communication.
When absent, the transport does not support these two types of
communication.
Send Group
When present, the transport sends on this multicast group. You may supply
at most one send group.
A send group enables outbound communication.
When absent, the transport does not support these two types of
communication.
Send Limit
Packet Send Limit
Required. Use this upper limit to prevent fast senders from overwhelming
slower receivers.
This value limits the maximum number of UDP packets per second that a
program can send over the multicast transport. When a sending program
exceeds this maximum, the FTL library buffers the excess packets in order to
keep the transport’s outbound packet rate at or below this limit.
Zero is a special value, indicating no upper limit on sending programs.
For a detailed explanation, see UDP Packet Send Limit on page 53.
TIBCO FTL Administration
Multicast Transport (Mcast) 67
|
Table 16 Transport Configuration Parameters: Multicast (Sheet 3 of 4)
Component or
Property
Description
Reliability
Reliability Time
Required.
FTL retains multicast data during this time window (a floating point value,
in seconds).
Transports in sending applications retain recent multicast data in order to
redeliver data to receiving applications upon request.
The reliability time of the sending transport determines the effective
reliability window of all applications receiving data from it. A receiving
transport does not request data beyond the reliability window of the sending
transport (even if the receiver configures a longer reliability window).
For this value, FTL supports time granularity of 0.001 (1 millisecond), and a
maximum value of 120.0 seconds (2 minutes). The FTL base library (within
application programs) throws an exception when it detects a non-zero value
less than 1 millisecond or greater than 120 seconds.
Zero is a special value; sending transports do not store data for
retransmission; receiving applications never request retransmission.
Reliability Memory
When present, FTL retains multicast data up to this maximum (in bytes). (See
also Size Units, page 109.)
When absent, the default is zero (a special value indicating no reliability limit
by size).
Loopback
Enable Loopback
On Send
When enabled, the transport includes the loopback interface in its bus, so
co-located application processes can communicate over the multicast bus.
(Otherwise the multicast bus carries messages only over the network.)
To properly configure loopback behavior, enable this parameter for all the
transports of the bus that use loopback—that is, on the sending transports
and the receiving transports. (The internal details of loopback semantics vary
by operating system. We recommend configuring for consistent behavior on
every platform, rather than coupling the transport definition to a specific
operating system.)
TIBCO FTL Administration
68
| Chapter 4
Transports
Table 16 Transport Configuration Parameters: Multicast (Sheet 4 of 4)
Component or
Property
Description
Sizing
UDP Send Buffer
Size
When present, FTL requests a buffer of this size (in bytes) for outbound
multicast data. (Operating system constraints can limit this request.) The
value must be a non-negative integer. (See also Size Units, page 109.)
When absent or zero, FTL requests the default buffer size, 16MB.
In most situations we recommend the default buffer size. In high-volume
situations, larger buffers could yield higher throughput (depending on other
factors).
UDP Receive Buffer
Size
When present, FTL requests a buffer of this size (in bytes) for inbound
multicast data. (Operating system constraints can limit this request.) The
value must be a non-negative integer. (See also Size Units, page 109.)
When absent or zero, FTL requests the default buffer size, 16MB.
In most situations we recommend the default buffer size. In high-volume
situations, larger buffers could yield higher throughput (depending on other
factors).
Retransmission Control
Retransmission
Control
When present, the transport suppresses retransmission requests from
receivers that miss packets in excess of this loss percentage.
When absent, the transport always requests retransmission (within the
reliability window).
For details, see Multicast Retransmission Control on page 69.
Transport Relationships
Transport
Relationships
For a fragmentary transport definition, you must create a relationship with
all other transports that share a multicast group in common with this
transport.
For a unitary transport definition, relationships are not needed (you must
omit them).
Configuring Multicast Inbox Communication
Multicast transports can carry one-to-one communication:
TIBCO FTL Administration
Multicast Transport (Mcast) 69
|
1. Configure the transport’s multicast groups to support bi-directional
communication (that is, inbound and outbound) on the transport bus (see
Multicast Groups on page 66). The two directions need not use the same
multicast group.
2. Enable the send inbox and receive inbox abilities for endpoints that use the
transport.
Multicast Retransmission Control
The high volume of retransmission requests from chronically slow or lossy
receivers can overwhelm publishing applications, and even overwhelm the entire
network. Receiver loss can result from faulty network hardware, oversubscribed
applications, or underpowered host computers.
Retransmission control is a tool to detect lossy receivers and suppress their
retransmission requests. Administrators can set a receiver loss threshold; if the
percentage of lost packets between any pair of multicast subscriber and publisher
exceeds this limit, then the transport suppresses all retransmission requests from
that subscriber to that publisher.
To configure this threshold, see Retransmission Control on page 68.
TIBCO FTL Administration
70
| Chapter 4
Transports
Reliable UDP Transport (RUDP)
A reliable UDP (RUDP) transport enables reliable communication over a set of
dedicated connections. Endpoints on an RUDP bus exchange UDP datagrams.
RUDP transports use a positive acknowledgement protocol for reliable message
transfer.
Consider using RUDP transports for network client-server communications that
are not sensitive to latency, in situations of high fan-out (or fan-in) and low data
volume. (TCP yields faster data transfer. However, RUDP features more efficient
fan-out; RUDP consumes only one socket, which accepts many connections.)
RUDP is a connection-oriented protocol. Its transport definitions are inherently
fragmentary; you must define at least two complementary transport definitions to
establish a bus. For more information, see Pair Connections on page 44.
Although an individual RUDP connection links exactly two host computers, you
can combine several connections into a bus with a more complex topology; see
Assembling Larger Topologies from Pair Connections on page 40.
Configuration Parameters
Table 17 describes the parameters specific to RUDP transports in the
configuration interface. For parameters that are common to several transport
types, see Configuring a Transport Definition on page 131.
Table 17 Transport Configuration Parameters: RUDP (Sheet 1 of 2)
Component or
Property
Description
Pair Connection Settings
You must specify at least one triplet (host, port and initialization mode).
Host
Required.
For the host, specify an RUDP interface either as a host name or as an IP
address.
Asterisk (*) is a special value, which designates all RUDP interfaces on the
host computer (that is, INADDR_ANY). This special value is available only with
Listen mode (that is, RUDP transports can listen for connections on all
network interfaces, but they must connect to a specific interface).
TIBCO FTL Administration
Reliable UDP Transport (RUDP) 71
|
Table 17 Transport Configuration Parameters: RUDP (Sheet 2 of 2)
Component or
Property
Description
Port
Required.
Specify a port number.
Mode
Required.
You must select either Connect or Listen as the initialization protocol mode:
•
Connect—the
•
Listen—the
transport initiates RUDP communication by sending a
connection request to host:port.
transport listens for RUDP connection requests at host:port.
For more information, see Listen End and Connect End on page 44.
Sizing
UDP Send Buffer
Size
When present, FTL requests a buffer of this size (in bytes) for outbound
RUDP data. (Operating system constraints can limit this request.) The value
must be a non-negative integer. (See also Size Units, page 109.)
When absent or zero, FTL requests the default buffer size, 16MB.
In most situations we recommend the default buffer size. In high-volume
situations, larger buffers could yield higher throughput (depending on other
factors).
UDP Receive Buffer
Size
When present, FTL requests a buffer of this size (in bytes) for inbound RUDP
data. (Operating system constraints can limit this request.) The value must be
a non-negative integer. (See also Size Units, page 109.)
When absent or zero, FTL requests the default buffer size, 16MB.
In most situations we recommend the default buffer size. In high-volume
situations, larger buffers could yield higher throughput (depending on other
factors).
Transport Relationships
Transport
Relationships
You must create a relationship with all other transports that cooperate to
establish a bus.
TIBCO FTL Administration
72
| Chapter 4
Transports
Process Transport (PROC)
Endpoints within a single program process can communicate using a process
(PROC) transport. Process transports communicate at high speeds, and exhibit
very low latency.
Process transports are an excellent strategy for fast communication among
threads within a process.
Process transport definitions are inherently unitary.
Process transports cannot participate in transport bridges.
Administrators arrange process transports only when program developers
request it.
For best performance, avoid binding an endpoint to both a process transport and
a slower transport (as the slower transport limits the performance of the process
transport).
Configuration Parameters
Table 18 describes the parameters specific to process transports in the
configuration interface. For parameters that are common to several transport
types, see Configuring a Transport Definition on page 131.
Table 18 Transport Configuration Parameters: PROC
Component or
Property
Description
Buffer Size
Required.
A process transport passes messages between threads through a buffer in
process memory. This parameter determines the maximum number of
messages that the buffer can hold.
When the buffer is full a non-blocking process transport discards new
messages from the sending endpoint (instead of placing them in the buffer).
Blocking process transports block until the buffer can accept the new
message.
TIBCO FTL Administration
| 73
Chapter 5
Realm Server
This chapter presents the realm server utilities, their command line options and
configuration parameters.
Topics
•
Realm Server Overview, page 74
•
Affiliated Realm Servers, page 75
•
Realm Server Authentication and Authorization, page 82
•
Option and Property Names, page 84
•
Using the tibrealmserver Executable, page 85
•
Using the tibrealmadmin Utility, page 94
TIBCO FTL Administration
74
| Chapter 5
Realm Server
Realm Server Overview
The realm server contains the complete realm definition. FTL application
programs request the realm definition from the server, which responds with a
version of the realm that is tailored for a specific application. The application
process stores this tailored realm definition in a realm object.
Administrators configure, run and maintain the realm server, which includes
configuring the realm definition in the server.
The realm server can run either as a singleton process, or as a family of affiliated
server processes—which can include a primary server, satellite servers, and
backup servers (for fault tolerance). For more information, see Affiliated Realm
Servers on page 75.
These sections describe the executable files related to the realm server:
•
Option and Property Names, page 84
•
Using the tibrealmserver Executable, page 85
•
Using the tibrealmadmin Utility, page 94
TIBCO FTL Administration
Affiliated Realm Servers 75
|
Affiliated Realm Servers
You can configure a family of affiliated realm server processes that coordinate
within a single realm, distributing the task of serving the realm definition to their
clients.
Server Roles and Relationships
Affiliated realm server processes are connected by relationships, which in turn
place each affiliated server in a specific role. Administrators configure the
relationships among affiliated servers using command line parameters or
configuration file properties (see Affiliated Servers on page 87).
Figure 10 Affiliated Realm Servers: Roles and Relationships
backup to
Primary
Backup
backup for
satellite of
satellite of
satellite of
backup to
Satellite
(New York)
Backup
backup for
backup to
Satellite
(New Jersey)
Backup
backup for
Satellite
(Connecticut)
backup to
Backup
backup for
Primary
The primary server is the central hub within a family of affiliated servers.
TIBCO FTL Administration
76
| Chapter 5
Realm Server
•
Within a family of affiliated server processes, exactly one process can play the
role of primary.
•
Administrators can update the primary’s realm definition (using the graphical
configuration interface or a realm server Python script). The primary can
deploy updates to its clients, and to other affiliated servers.
•
Client application processes can connect to the primary. Satellite server
processes can connect to the primary.
Satellite
A satellite server provides local service to clients that are geographically distant
from the primary, or clients that are insulated from the primary (to fulfill
enterprise requirements). Administrators can arrange satellite servers in order to
reduce remote connection costs, or to distribute client load. Consider a server S,
which is a satellite of the primary P:
•
Several servers can be satellites of the primary. A server cannot be a satellite of
another satellite server, nor of a backup server.
•
Satellite server S initiates a TCP connection to primary P (and not the reverse).
•
Satellite S receives the realm definition from primary P. When an
administrator deploys an updated realm definition to P, P pushes the
deployment to S. (Administrators cannot deploy updates directly to a satellite
server.)
•
Each client connects either to P or S (or some other satellite) as its realm server.
Primary P and all its satellites serve sets of clients that are disjoint from one
another.
•
Satellite S is loosely coupled to the primary P. If one of them became
inoperative, or the connection between them broke, P would not take any
restorative action. S would attempt to reconnect to P, yet would continue to
serve its clients in the interim. P can deploy a new realm definition while S is
disconnected (but see Disconnected Satellite on page 78).
Backup
A backup server provides fault-tolerant service to clients of a regular server (which
can be either the primary or a satellite). For example, consider a regular server R
(either the primary or a satellite), which has a backup to server B:
•
The primary server can back up to at most one backup server. Each satellite
can back up to at most one backup server. A backup server cannot back up to
another backup server.
•
Regular server R initiates a TCP connection to backup B (and not the reverse).
TIBCO FTL Administration
Affiliated Realm Servers 77
|
See Also
•
Regular server R pushes its realm definition to backup B. When R deploys an
updated realm definition, it pushes the update to B. (Administrators cannot
deploy updates directly to a backup server.)
•
Each client that connects to R as its realm server also designates B as its
backup server for fault tolerance. R and B serve the same set of potential
clients.
•
Backup server B does not accept client connection requests unless regular
server R becomes inoperative. In this failover situation, clients of R
automatically connect to B instead. When R is fully operative again, clients
disconnect from B and reconnect to R.
•
Regular server R is tightly coupled to its backup B. If one of them became
inoperative, or the connection between them broke, they would warn the
administrator and take action. That is, R would attempt to restore the
connection to B; B would begin failover operation.
•
If R and B are disconnected when R receives a realm update, R cannot accept
the update. The administrator must first ensure that R and B have
reconnected, then try the update again.
Primary Out of Sync with Backup, page 79
Summary of Roles
Table 19 Affiliated Realm Servers—Role Summary (Sheet 1 of 2)
Primary
Satellite
Backup
Realm Definition
Can receive updates
from administrators.
Can receive updates
only from the primary.
Can receive updates
only from its regular
server.
Numerical Limits
Only one primary per
realm.
No limit.
One backup per
regular server.
Initiating TCP
Connections
Connects to its
backup.
Connects to the
primary, and to its
backup.
Does not initiate
connections
TIBCO FTL Administration
78
| Chapter 5
Realm Server
Table 19 Affiliated Realm Servers—Role Summary (Sheet 2 of 2)
Accepting TCP
Connections
Primary
Satellite
Backup
Accepts connections
from satellites.
Accepts connections
from clients.
Accepts connections
from its regular server.
Accepts connections
from clients, but only
when its regular
server fails.
Accepts connections
from clients.
Monitoring Interface
Administrators can
monitor and manage
clients and satellites.
Administrators can
monitor and manage
clients.
Administrators can
monitor and manage
clients.
Configuration
Interface
Administrators can
edit the realm
definition and deploy
updates to clients,
satellite servers and
backup servers.
Administrators can
view the realm
definition (read-only).
Administrators can
view the realm
definition (read-only).
Modifying the Realm Definition
Administrators can modify the realm definition using the browser configuration
interface.
•
Only the primary server can accept realm modifications and updates directly
from administrators.
•
A satellite server can accept updates only from the primary server.
•
A backup server can accept updates only from its regular server (that is, the
server for which it plays the role of backup).
Disconnected Satellite
Before attempting to deploy an updated realm definition, we strongly recommend
that administrators check the health of all affiliated servers and correct any
network issues.
A primary server with a backup (and a satellite server with a backup) cannot
accept updates unless it is connected to its backup server.
TIBCO FTL Administration
Affiliated Realm Servers 79
|
Although a primary server can accept an update even while disconnected from a
satellite, we do not recommend this practice, as it can cause administrative
complexities.
Consider a situation in which a satellite S is inoperative or disconnected from the
primary P—nonetheless, an administrator deploys an updated realm definition to
a family of affiliated servers. The deployment can proceed (unless some other
condition prevents it, such as a No answer from a client).
Meanwhile, if satellite S is still operating, it continues to service client requests
with information from the outdated realm definition. If S is inoperative, clients
migrate to its backup server, which also serves information from the outdated
realm definition.
When S reconnects to P, P deploys the updated realm definition to S. Because the
update is already deployed at other affiliated servers, P does not first test the
update against S and its clients. Instead, P deploys the update to S, and S
immediately deploys it to its clients and its backup server—even though the
update might cause difficulties for some clients of S.
If you must deploy an updated realm definition in such circumstances, then as S
reconnects and deploys the update, it is prudent to carefully monitor its clients.
Primary Out of Sync with Backup
In rare situations, it is possible that the primary server can have a newer
deployment than its backup server. This situation automatically resolves itself
when the primary and backup servers reconnect.
In extremely rare situations, it is possible that a backup server B can have a newer
deployment than its primary server P.
It is important to resolve this anomalous situation.
To recover, the administrator must do these steps:
1. Stop primary server P; see --shutdown on page 95.
2. Back up the database at B (the result is a zip file); see --backup_database on
page 95.
TIBCO FTL Administration
80
| Chapter 5
Realm Server
3. Replace the database files on P with the contents of that zip file:
a. Copy the zip file to the primary’s host computer.
b. Navigate to the data folder for P, see --data on page 85.
c. Extract the contents of the zip file into the data folder, overwriting existing
files. (This operation overwrites some of the existing database files, but not
all of them.)
4. Restart P.
Configuring Fault Tolerance
The primary server and each satellite server can each designate at most one
backup server.
Task A Starting the Backup Server
1. Supply the --backupfor parameter, to start as a backup server.
2. If authentication is required, supply the --server.user and
--server.password parameters, with credentials that the backup server can
use to authenticate itself to the regular server.
Ensure that this username is in the authorization group ftl-backup.
Task B Starting the Regular Server
The regular server can be either the primary server or a satellite server.
3. Supply the --backupto parameter, indicating the location of the backup server
(see Connect Port).
4. If authentication is required, supply the --server.user and
--server.password parameters, with credentials that the regular server can
use to authenticate itself to the affiliated servers.
Ensure that this username is in the appropriate authorization group—either
ftl-primary or ftl-satellite.
If satellites and backups require different authentication credentials, then also
supply the --server.authtobackup.user and --server.authtobackup.password
parameters (which the regular server uses to authenticate itself to its backup
server).
TIBCO FTL Administration
Affiliated Realm Servers 81
|
Task C Configuring Clients
5. In the realm connect call, programmers supply the locations of two realm
servers:
•
Supply the location of the regular server as the realm server URL argument
(see Connect Port).
•
Supply the location of the backup server as the value of the secondary server
property (see Connect Port).
Configuring Satellites
The primary server can designate satellite servers.
Task D Starting the Primary Server
1. If authentication is required, supply the --server.user and
--server.password parameters, with credentials that the primary server can
use to authenticate itself to the satellite servers.
Ensure that this username is in the authorization group ftl-primary.
Task E Starting a Satellite Server
2. Supply the --satelliteof parameter, indicating the location of the primary
server (see Connect Port).
3. If authentication is required, supply the --server.user and
--server.password parameters, with credentials that the satellite server can
use to authenticate itself to the primary server.
Ensure that this username is in the authorization group ftl-satellite.
TIBCO FTL Administration
82
| Chapter 5
Realm Server
Realm Server Authentication and Authorization
The realm server can use JAAS to authenticate client programs, administrative
tools, and affiliated servers.
To specify a JAAS configuration file, see --jaas on page 91.
You must configure the JAAS file to meet these requirements:
Table 20 Configuring JAAS
Authorization Group
Usage
tibrealmserver
The name of the JAAS realm must be tibrealmserver.
ftl
Realm servers require FTL client programs to authenticate with
usernames in the authorization group ftl.
ftl-admin
Authenticated users in the authorization group ftl-admin can view
realm definition and monitoring pages. They can also modify the realm
definition and execute administrative operations.
ftl-guest
Authenticated users in the authorization group ftl-guest can view
realm definition and monitoring pages. However, they cannot modify the
realm definition nor execute administrative operations.
ftl-primary
Affiliated realm servers require the primary server to authenticate with a
username in the authorization group ftl-primary.
ftl-satellite
The primary realm server requires its satellite servers to authenticate with
usernames in the authorization group ftl-satellite.
ftl-backup
Each realm server requires its backup realm server to authenticate with a
username in the authorization group ftl-backup.
JAAS allows a username to belong to several authorization groups (also known as
roles).
You can suppress the requirements on group membership by specifying the flag
--disable.jaas.groups on page 91.
TIBCO FTL Administration
Realm Server Authentication and Authorization 83
|
Password File
If the realm server enables JAAS authentication and authorization, then you must
configure credentials for FTL components that run as client processes of the realm
server (such as a transport bridge, store server or Rendezvous adapter).
Each such process authenticates itself to the realm server using credentials that it
reads from an ASCII password file (which you specify using the client’s
--password-file command line parameter).
The password file consists of two lines. The first line contains the username. The
second line contains the password string.
The username must be in the JAAS authorization group ftl. For details, see
Realm Server Authentication and Authorization on page 82.
To hide the password from casual observers, you may first obfuscate the
password using tibrealmadmin --mangle.
JAAS Sample Login Modules
TIBCO FTL supports these sample login modules:
•
org.eclipse.jetty.jaas.spi.JDBCLoginModule
•
org.eclipse.jetty.jaas.spi.PropertyFileLoginModule
•
org.eclipse.jetty.jaas.spi.DataSourceLoginModule
•
org.eclipse.jetty.jaas.spi.LdapLoginModule
For more information about login modules and how to configure them, see
http://www.eclipse.org/jetty/documentation/current/jaas-support.html.
See Also
To implement your own login module, see
http://docs.oracle.com/javase/1.5.0/docs/guide/security/jaas/JAASLMDevG
uide.html
TIBCO FTL Administration
84
| Chapter 5
Realm Server
Option and Property Names
The realm server executable files each accept three kinds of options:
•
Short-form command line option—a hyphen with one or two alphabetic
characters (quick to type, but occasionally non-intuitive)
•
Long-form command line option—double hyphen (--) introducing a
descriptive name (longer to type, but usually intuitive)
•
Configuration property
The configuration file has the syntax of a Java properties file.
— To construct a property name, remove the initial double hyphen (--) from
the long-form command line option, and replace them with the prefix
com.tibco.executable_name. For example, in a properties file for the
tibrealmserver utility, the option --data becomes the property
com.tibco.tibrealmserver.data.
— When a command line option acts as a flag (that is, it signals its value by its
presence or absence, rather than a value), the properties file form requires
an explicit value. The value true corresponds to a flag that is present;
false corresponds to absent.
Unique Names
The long-form command line options of the various executables do not conflict.
That is, if the two executables use a parallel option name, they use it in an
identical way.
Furthermore, property names include an explicit namespace (the utility name), so
they can never overlap (between different utilities).
TIBCO FTL Administration
Using the tibrealmserver Executable 85
|
Using the tibrealmserver Executable
Administrators use tibrealmserver (the realm server command line executable)
to start a realm server process.
The realm server must run on a host computer with Java Runtime Environment
(JRE), version 1.7 or later (64-bit).
Most command line parameters and options have both a short and a long form.
The command line parser accepts either form. In addition, you can supply a Java
properties form for most options in a configuration file; see --config on page 93.
Table 21 tibrealmserver Utility (Sheet 1 of 9)
Short
Long
-h
--help
Arguments
Description
Display a help message describing the
command line parameters and options.
Input and Output
-d
--data
path
Optional.
When present, the realm server stores its
working data files in this path location. (The
directory at path must exist; the realm server
does not create it automatically.)
If you run several realm server processes, you
must supply a unique path location for each
server process.
When absent, the default path is the current
directory.
TIBCO FTL Administration
86
| Chapter 5
Realm Server
Table 21 tibrealmserver Utility (Sheet 2 of 9)
Short
Long
Arguments
Description
-ht
--http
host:port
Connect Port
Optional.
Clients send initial contact requests to this
web service. The server responds with
information that enables clients to make
requests using the FTL request protocol.
For arguments, you may supply any
combination—host:port, host: or :port.
However, when either --backupto or
--backupfor is also present, you must
explicitly supply both (that is, host:port).
host indicates one of the host computer’s
network interfaces. When host is absent, the
realm server listens for HTTP requests on the
localhost interface. The star character (*)
indicates all available interfaces.
When port is absent, the default value is port
8080.
-f
--ftl
host:port
Client Port
Optional.
Connected clients communicate with the
realm server (using the FTL protocol) over
this service.
For arguments, you may supply any
combination—host:port, host: or :port.
host indicates one of the host computer’s
network interfaces. When host is absent, this
service uses the same host interface as the
--http connect port. The star character (*)
indicates all available interfaces.
When port is absent, this service uses a port
number that is 3 greater than the --http
connect port.
TIBCO FTL Administration
Using the tibrealmserver Executable 87
|
Table 21 tibrealmserver Utility (Sheet 3 of 9)
Short
Long
Arguments
Description
-g
--gui
host:port
Interface Port
Optional.
Browsers send graphic user interface requests
(using the HTTP protocol) to this service. The
realm server responds to web API requests
over this service.
For arguments, you may supply any
combination—host:port, host: or :port.
host indicates one of the host computer’s
network interfaces. When host is absent, this
service uses the same host interface as the
--http connect port. The star character (*)
indicates all available interfaces.
When port is absent, this service uses a port
number that is 5 greater than the --http
connect port.
Affiliated Servers
For rules about legal relationships among servers, see Table 19 on page 77.
--backupfor
host:port
When present, start this realm server process
as a potential backup server for a primary or
satellite. (The host:port arguments must match
the arguments to the --http parameter of the
primary or satellite server.)
The primary or satellite server initiates the
backup connection. (You must also configure
that server using the --backupto parameter.)
When present, you must also explicitly
supply --http host:port (with both
arguments).
TIBCO FTL Administration
88
| Chapter 5
Realm Server
Table 21 tibrealmserver Utility (Sheet 4 of 9)
Short
Long
Arguments
Description
--backupto
host:port
When present, the server designates a backup
server and attempts to connect to it at
host:port. (The host:port arguments must match
the arguments to the --http parameter of the
backup server.)
(You must also configure the backup server
using the --backupfor parameter.)
While disconnected, this server repeatedly
attempts to connect to its backup.
When present, you must also explicitly
supply --http host:port (with both
arguments).
--satelliteof
host:port
When present, the server designates itself as a
satellite of a primary server. This satellite
server connects to its primary server at
host:port.
A satellite server does not accept client
connection requests until it first receives a
realm definition from its primary server.
A satellite server accepts realm updates only
from its primary. While disconnected, a
satellite server repeatedly attempts to connect
to its primary server.
TIBCO FTL Administration
Using the tibrealmserver Executable 89
|
Table 21 tibrealmserver Utility (Sheet 5 of 9)
Short
Long
Arguments
Description
-to
--server.timeout
timeout
Optional.
Servers use this timeout (in seconds) for
several purposes:
•
Heartbeat Timeout The server determines
that an affiliated server is unavailable
when its heartbeat signal is silent for this
timeout interval.
•
Connection Timeout The server waits for
this timeout interval before repeating its
connection request to an affiliated server.
Supply a positive number.
When absent, the default value is 3 seconds.
-hb
--server.heartbeat
hb_interval
Optional.
The server sends its heartbeat signal at
hb_interval (in seconds).
Supply a positive number.
When absent, the default value is 1 second.
-u
--server.user
username
Required for affiliated servers when enabling
JAAS.
The server authenticates itself to affiliated
servers with this username. For details, see
Realm Server Authentication and
Authorization on page 82.
When --server.authtobackup.user is present,
the server authenticates itself to its backup
server using that value; however, it still uses
the value of --server.user to authenticate
to satellites.
TIBCO FTL Administration
90
| Chapter 5
Realm Server
Table 21 tibrealmserver Utility (Sheet 6 of 9)
Short
Long
Arguments
Description
-pw
--server.password
password
Required for affiliated servers when enabling
JAAS.
The server authenticates itself to affiliated
servers with this password.
To hide the password from casual observers,
you may first obfuscate the password using
tibrealmadmin --mangle.
--server.authtobackup.
username
user
Optional.
When present, the server authenticates itself
to its backup server with this username. For
details, see Realm Server Authentication and
Authorization on page 82.
When absent, it uses the value of
--server.user instead.
--server.authtobackup.
password
password
Optional.
When present, the server authenticates itself
to its backup server with this password.
To hide the password from casual observers,
you may first obfuscate the password using
tibrealmadmin --mangle.
When absent, it uses the value of
--server.password instead.
--server.label
label
Optional.
You may supply a string to easily identify the
realm server process within the monitoring
interface. For example, when a primary
server has several satellites, it could be useful
to label them according to their geographic
locations.
If the string value contains space characters,
enclose it in double quote (") characters.
When absent, the default is the host and
HTTP port of the server (see --http on
page 86).
TIBCO FTL Administration
Using the tibrealmserver Executable 91
|
Table 21 tibrealmserver Utility (Sheet 7 of 9)
Short
Long
Arguments
Description
path
The realm server configures security using
the JAAS configuration file at path.
Security
-j
--jaas
When present, enable JAAS—the realm
server requires and verifies username and
password credentials from client processes,
affiliated servers, transport bridges, browsers
and tibrealmadmin.
When absent, disable JAAS—the realm server
neither requires nor verifies credentials.
For JAAS configuration requirements, see
Realm Server Authentication and
Authorization on page 82.
--disable.jaas.groups
When present, the realm server disables
enforcement of the JAAS group requirements,
so that client programs and administrators
can be in any authorization group.
Client programs and administrators must still
have valid username and password
credentials.
This flag lets you use an existing LDAP server
without modifying the group information.
TIBCO FTL Administration
92
| Chapter 5
Realm Server
Table 21 tibrealmserver Utility (Sheet 8 of 9)
Short
Long
Arguments
Description
level
When present, the realm server logs FTL
protocol communication at this level of detail.
Supply one of these strings:
Logging
-l
--loglevel
•
off
•
severe
•
warn
•
info
•
verbose
•
debug
The output from debug and verbose can
result in very large log files. This level of
detail is generally not useful unless TIBCO
staff specifically requests it.
When this option is absent, the default value
is info.
--logfile
logfile_prefix
When present, the realm server logs to a
rolling set of log files instead of the console.
The logfile_prefix argument may denote a path
(all of the directories in the path must already
exist).
For more information about rotating log files,
see Log Output Targets in TIBCO FTL
Development.
When absent, the realm server sends log
output to the console, and ignores the
parameters --max.log.size and
--max.logs.
--max.log.size
TIBCO FTL Administration
size
Limits the maximum size (in bytes) of log
files. The value must be greater than 100
kilobytes (102400). The default value is 2
megabytes (2*1024*1024).
Using the tibrealmserver Executable 93
|
Table 21 tibrealmserver Utility (Sheet 9 of 9)
Short
Long
Arguments
Description
--max.logs
logs
Limits the maximum number of rolling log
files. The default is 50.
path
When present, the realm server reads its
configuration from the file at path.
Configuration File
-c
--config
See Option and Property Names on page 84.
If you specify both a configuration properties
file and command line options, the command
line options override those in the file (where
they conflict).
TIBCO FTL Administration
94
| Chapter 5
Realm Server
Using the tibrealmadmin Utility
Administrators use tibrealmadmin (the realm server utility) to stop, update,
dump or back up a realm server process.
Most command line parameters and options have both a short and a long form.
The command line parser accepts either form. In addition, you can supply a Java
properties form for most options in a configuration file; see --config on page 96.
Table 22 tibrealmadmin Utility (Sheet 1 of 3)
Short
Long
-h
--help
Arguments
Description
Display a help message describing the command
line parameters and options.
Connecting to the Realm Server
-rs
--realmserver
url
Required (except with the --mangle command).
Administer the realm server at this location.
url has the form http://host:port, where host and
port correspond to elements of the realm server’s
--gui
-u
--user
username
-pw
--password
password
argument.
Credentials. Required when the realm server
enables JAAS (see --jaas on page 91).
The utility authenticates itself to the realm server
with this username and password.
Commands
Commands are mutually exclusive; you may use only one at a time.
Most commands affect a realm server process that is already running. Specify that realm server
using the --realmserver parameter.
Supply commands only on the command line. It is illegal to supply commands in a configuration
file.
-dr
--dumprealm
path
Write the realm definition to a JSON file at path.
Modifiers: --debug
TIBCO FTL Administration
Using the tibrealmadmin Utility 95
|
Table 22 tibrealmadmin Utility (Sheet 2 of 3)
Short
Long
Arguments
Description
-ur
--updaterealm
path
Update the realm definition from the JSON file at
path.
The utility replaces the old realm definition (if one
already exists) with the new definition. This
command is available only for the primary server.
Modifiers: --force
-b
--backup_database
Immediately back up the realm server’s database
files.
This command creates a zip file that contains the
relevant files from the server’s data folder. The
name of the zip file incorporates a timestamp.
This command stores the zip file under the server’s
data directory (see --data on page 85), in the
backups subdirectory. You may arrange to copy the
contents of the backups subdirectory to off-site
storage.
-st
-x
--status
Get the status of the realm server and its clients;
output to stdout.
--server_status
Get the status of the realm server—but omit the
status of its clients; output to stdout.
--shutdown
Stop the realm server process.
This command is asynchronous (the utility does not
wait for confirmation that the server has stopped).
To verify that the server has actually stopped, use
the --status command.
TIBCO FTL Administration
96
| Chapter 5
Realm Server
Table 22 tibrealmadmin Utility (Sheet 3 of 3)
Short
Long
Arguments
Description
--mangle
password
Obfuscate a password to hide it from casual
observers.
You may supply the resulting obfuscated password
as a command line argument to the realm server
(for example, with the --server.password
parameter), or use it in the realm server's
configuration properties file.
This command outputs the obfuscated password to
then exits immediately.
stdout,
(This command ignores the --realmserver
parameter.)
Modifiers
--force
When present along with --updaterealm, break
the realm lock, discarding any undeployed changes
to the realm definition.
--debug
When present along with --dumprealm, dump
additional information for debugging. Use only
when TIBCO support staff request this information.
Configuration File
-c
--config
path
When present, tibrealmadmin reads its
configuration from the file at path.
See Option and Property Names on page 84.
If you specify both a configuration properties file
and command line options, the command line
options override those in the file (where they
conflict).
It is illegal to supply commands in a configuration
file; see Commands on page 94.
TIBCO FTL Administration
| 97
Chapter 6
Realm Server and its Browser Interfaces
This chapter introduces the graphical tools that let you interact with the realm
server, and additional details related to those interactions.
The realm configuration interface lets you modify the realm definition, and deploy
changes to the realm server and its client application processes. The realm
monitoring interface lets you monitor and manage clients as they run, and as the
server updates them to a modified realm definition.
Subsequent chapters describe those tools in greater detail.
See Also
TIBCO eFTL™ is documented separately. Administrators use the FTL realm
server GUI to configure and monitor the eFTL service. For information about
these GUI pages, see the documentation set for TIBCO eFTL.
Topics
•
Browser Support, page 98
•
Common Features, page 99
•
Realm (Home Page), page 100
•
Icons, page 101
•
Sidebar, page 104
•
Summary Pages, page 106
•
Restrictions on Names, page 108
•
Size Units, page 109
•
Realm Storage, page 110
•
Modification Lock, page 111
•
The Deploy Transaction, page 112
•
Valid Realm Modifications, page 115
TIBCO FTL Administration
98
| Chapter 6
Realm Server and its Browser Interfaces
Browser Support
The realm server graphical user interface supports the browsers in Table 23.
Table 23 Realm Server Browser Support
Browser and Version
Chrome 35
Firefox 29
Internet Explorer 11
Safari 7
Realm Server URL
To access the realm server graphical user interface, use a URL based on this
template:
http://realm_server_host:gui_port
For information about gui_port see Interface Port on page 87.
TIBCO FTL Administration
Common Features 99
|
Common Features
This section describes features common to several pages of the realm server
interface.
Navigation
The large title at the top of each page is the trail of breadcrumbs, which summarizes
the context of the page you are viewing. Breadcrumbs show the shortest path
from the home page to the current page.
Home Logo
The TIBCO FTL logo at the top of each page returns to the main Realm (Home
Page).
Command Icons
Icons in the upper right corner denote commands. The available set of command
icons and their semantics vary, depending on the state and location within the
realm server interface. For complete details, see Icons on page 101.
Auto-Save
The configuration interface automatically saves to the working copy as each
atomic change becomes complete. For example, mouse selections trigger
auto-save, as does shifting the cursor focus away from a text field.
In addition, you can explicitly save to the working copy by clicking the Save
command icon
.
TIBCO FTL Administration
100
| Chapter 6
Realm Server and its Browser Interfaces
Realm (Home Page)
The Realm page is the home page of the FTL browser interface. Its main content is
a complete set of icons that navigate to the various tool pages of the interface. For
descriptions of those icons, see Table 24 on page 101.
The navigation icons are organized according to tool usage:
•
Configure & Browse These tool pages let you view and modify various parts
of the realm definition.
•
Manage & Monitor These tool pages let you monitor and manage processes
that operate within the realm, including deployments of updated realm
definitions.
TIBCO FTL Administration
Icons 101
|
Icons
The tables in this section summarize the icons of the realm server graphical
interface.
Table 24 Realm Server Icons—Configure and Browse Commands (Sheet 1 of 2)
Icon
Name
Description
Realm Configure and Deploy Commands
For background information and details, see Realm Storage on page 110.
Lock & Edit
Grab the lock and start editing.
•
Create a modifiable copy of the realm definition, and store it as a
JSON file in the working directory. This copy is equivalent to the
database.
•
Lock the realm definition so only the current user can modify it.
If another user holds the lock, this command fails.
To use this command, users must be in the ftl-admin authorization
group. If you are not in that group, this command fails.
Deploy
Refresh
Finish editing and deploy the modified realm.
•
Auto-save the modified realm definition to the working directory,
and package it as a deployment.
•
Send the deployment package to the realm server. (If the realm server
detects errors in the deployment, it displays the Validation Results
page.)
•
Deploy the new realm definition within a transaction (see The Deploy
Transaction on page 112).
•
If the deployment succeeds, the browser interface releases the lock,
and displays the Deployments page.
Undo modifications and continue editing.
•
Discard undeployed modifications; display the current realm
definition.
•
Retain the lock and continue editing.
TIBCO FTL Administration
102
| Chapter 6
Realm Server and its Browser Interfaces
Table 24 Realm Server Icons—Configure and Browse Commands (Sheet 2 of 2)
Icon
Name
Description
Revert
Undo modifications and stop editing.
Save
•
Discard undeployed modifications; display the current realm
definition.
•
Release the lock.
Save modifications to the working directory.
This command does not affect the realm server database.
(The configuration interface frequently auto-saves your modifications to
the working directory. This command lets you force a save.)
Table 25 Realm Server Icons—Maniupulating Items (Sheet 1 of 2)
Icon
Name
Description
Manipulating Items
These general-use icons can appear in several contexts within the interface.
Add
Add or define a new item.
Configure
View the configuration or definition of an item. You may modify the
configuration of an item only if the realm is open for editing.
Reorder
Reorder items (drag and drop this icon).
Delete
Delete an item.
View
View more detail.
Duplicate
Make a copy of an item (as a starting point for defining a similar item).
TIBCO FTL Administration
Icons 103
|
Table 25 Realm Server Icons—Maniupulating Items (Sheet 2 of 2)
Icon
Name
Description
Undo
Undo the previous modification.
Purge
Purge a store or a durable. (This action deletes all messages in the store or
durable.)
Table 26 Realm Server Icons—Monitoring Commands
Icon
Name
Description
Monitoring Icons
For background information, see Chapter 9, Monitoring a Realm, on page 155.
Disable
Disable the selected clients.
Purge
Delete the selected clients or satellites from a list. (The state of the client or
satellites does not change.)
TIBCO FTL Administration
104
| Chapter 6
Realm Server and its Browser Interfaces
Sidebar
The sidebar (visible on most pages) speeds navigation to other pages, and
summarizes the realm server’s most important statistics.
Navigating
On pages in the realm configure and browse interfaces, the upper section of the
sidebar contains navigation buttons to other configure and browse pages.
On pages in the realm monitor interface, the upper section of the sidebar contains
navigation buttons to other manage and monitor pages.
Status Summary
The third section of the sidebar summarizes the realm server status at a glance.
(For more detail, see other pages in the realm monitor interface.)
Table 27 Status Summary (Sidebar) (Sheet 1 of 2)
Row
Description
Label or
The label string of this realm server instance. If you did not supply a label when
starting the realm server (using --server.label) this field displays the location
of the realm server instead (see Connect Port and Host:Port).
hostname:port
TIBCO FTL Administration
Sidebar 105
|
Table 27 Status Summary (Sidebar) (Sheet 2 of 2)
Row
Description
Mode
(no label)
For more detail, see the Monitoring the Realm Server.
Realm
Revision
Revision number of the realm definition as stored in the realm server.
Backup For
If the server is a backup server, this field displays the status of its regular server,
and is also a link to the regular server’s home page.
Backup To
If the server has a backup server, this field displays its status, and is also a link to
the backup server’s home page.
Primary
If the server is a satellite server, this field displays the status of its primary, and is
also a link to the primary server’s home page.
Clients
Number of clients.
This number increases each time you deploy modified definitions to the realm
server. This number does not change if the changes do not affect realm semantics
(for example, modifying only a description string).
For details about clients, see the Clients Summary page.
Satellites
Number of satellite servers.
For details about satellites, see the Satellites Summary page.
Uptime
Approximate elapsed time since this realm server process started.
Deployment
Approximate time since the most recent successful deployment to this realm
server.
JVM Memory
Approximate size of the realm server within the Java Virtual Machine. (This
approximation does not include the FTL library, nor the JVM itself.)
TIBCO FTL Administration
106
| Chapter 6
Realm Server and its Browser Interfaces
Summary Pages
Summary pages are pages within the realm server graphical interface that display
a list of definitions or entities. This section describes features common to all
summary pages. The configuration interface includes summary pages for
applications, formats and transports. The monitoring interface includes summary
pages for clients and satellites.
Viewing an Item
To view a definition or entity, click its name within the list.
Filtering the List
To view a subset of the items, type characters in the Filter or Create field. The list
narrows to display only those items that contain the character sequence in their
names.
Filters accept standard Java regular expressions using standard JavaScript regular
expressions (we present a subset of the details in Table 28).
Table 28 Filtering Instance Connections—Regular Expression Semantics
Syntax
Description
JavaScript Regular Expression Filtering
.
(dot)
Match any single character.
*
(star)
Match zero or more instances of the preceding element.
+
(plus)
Match one or more instances of the preceding element.
\w
Match any word character.
[chars]
Match any single instance of the characters within square brackets.
Sorting the List
To sort a summary list, click on a column heading. A vertical arrow indicates the
sort order. To reverse the sort order, click the column heading again.
TIBCO FTL Administration
Summary Pages 107
|
Creating a New Definition
To create a new definition, type its name in the Filter or Create field, then click the
Create button or type the Enter key. The new definition appears in the list below.
(This operation is available only when you hold the realm modification lock; see
Modification Lock on page 111.)
Duplicating a Definition
To duplicate a definition (as a starting point for defining a similar item) click the
Duplicate icon
. The browser immediately displays the duplicate item in a
definition page for editing. (This operation is available only when you hold the
realm modification lock.)
Deleting a Definition
To delete a definition, click the Delete icon
corresponding to the definition.
(This operation is available only when you hold the realm modification lock.)
TIBCO FTL Administration
108
| Chapter 6
Realm Server and its Browser Interfaces
Restrictions on Names
Reserved Names
All names that begin with an underscore character (_) are reserved. It is illegal for
programs to define formats, fields, endpoints and applications with these
reserved names.
You may use the underscore character elsewhere—that is, where it is not the first
character of a name.
Length Limit
All names are limited to a maximum length of 256 characters.
This limit includes names of formats, fields, endpoints and applications. It also
extends to string values in content matchers.
TIBCO FTL Administration
Size Units 109
|
Size Units
Sizing parameters that accept numeric values also accept unit designators as part
of their arguments. Table 29 presents those units.
Table 29 Size Units
Unit
Designates
Example
none
bytes
2048
KB, K
kilobytes
100KB
MB, M
megabytes
500MB
GB, G
gigabytes
1GB
TIBCO FTL Administration
110
| Chapter 6
Realm Server and its Browser Interfaces
Realm Storage
Each realm server stores the definition of exactly one realm; however, it stores the
realm definition in several different ways—which interact with commands in the
browser interface.
The canonical realm definition resides in the realm server database.
The browser interface uses private working copies of the realm definition (in
JSON format) as intermediate storage while administrators modify the realm
definition. The browser always displays a working copy.
The browser interface also caches a copy of each update of the realm definition to
a deployment directory.
Figure 11 illustrates the stored forms of a realm, and the commands that transition
among them (colored arrows). Numbered arrows in Figure 11 refer to transaction
steps in the Deploy command (for further details, see The Deploy Transaction on
page 112).
Each command begins in the browser, and flows to the realm server, which
executes the command. During command execution, all data flows through the
realm server. (We have simplified some arrows in Figure 11 to make the diagram
more readable; nonetheless, everything flows through the realm server.)
Figure 11 Realm Storage and Commands
Save;
Auto-Save
Configuration
Interface
(Browser)
Lock & Edit;
Refresh;
Revert
Deployment
Directory
4
Working
Directory
Realm
Server
Deploy
2
Clients
1
3
Realm Server Database
TIBCO FTL Administration
Modification Lock 111
|
Modification Lock
The realm definition is protected by a lock file, so that only one user at a time may
modify it.
The realm configuration interface always displays part of the realm definition. If
you hold the lock, then the interface lets you modify the definition. If you do not
hold the lock, the interface is read-only.
To grab the lock and edit the realm definition, users must be in the ftl-admin
authorization group.
The lock is not required for management operations, such as purging durables
from a persistence store, or saving the state of persistence servers.
Lock & Edit Command
The Lock & Edit command attempts to grab the lock. If another user already
holds the lock, you can choose one of three options:
•
Break. Reject the other user’s modifications. Grab the lock, and begin editing
with a realm definition equivalent to the realm server database.
•
Take. Accept the other user’s modifications as a starting point. Grab the lock,
and begin editing with a realm definition that reflects the other user’s
modifications.
The dashed yellow line in Figure 11 does not apply with this option. At a later
time, if you decide to discard the other user’s modifications, you can use the
Refresh command to begin again with a realm definition equivalent to the
database.
•
Cancel. Leave everything as it stands.
Refresh and Revert Commands
In Figure 11 and Table 24, notice that after either the Refresh command or the
Revert command, the configuration interface displays a realm definition
equivalent to the realm server database. These commands differ in their effect on
the realm modification lock.
TIBCO FTL Administration
112
| Chapter 6
Realm Server and its Browser Interfaces
The Deploy Transaction
The Deploy command initiates a transaction (see the steps below), with the goal
that all clients begin using the modified realm definition.
A dialog box offers options:
•
Deploy attempts to execute all the transaction steps, and displays the results
on the Deployments page.
•
Test Deployment attempts to execute only step 1, and displays the results on
the Deployments page.
Transaction Steps
Step numbers correspond to numbered arrows in Figure 11 on page 110.
1. Test the deployment against all connected client application processes. (If the
realm server is a primary with satellites, see Satellite Servers Recursively Test
Their Clients on page 113.)
The server also tests the connection to its backup server (if one is configured).
If it is disconnected, then rollback the transaction.
Each client tests the modified realm definition to determine whether it can
accept the modifications and continue running. Each client reports its
response to the realm server (see Responses to Deployment Tests, below). The
server combines the answers from its clients, and reports a single consolidated
answer (see Consolidating Responses, below).
If the consolidated test succeeds (see Successful Test, below), or an
administrator intervenes with a Proceed option, then proceed to the next step;
otherwise rollback the transaction.
2. Write the modified realm definition to the realm server database.
3. Instruct client application processes to begin using the modified realm
definition.
4. Copy the deployment package from the working directory to a deployment
directory (archive).
5. Release the realm modification lock.
TIBCO FTL Administration
The Deploy Transaction 113
|
Responses to Deployment Tests
Table 30 lists the possible responses after testing a realm update deployment,
from most favorable to least favorable.
Table 30 Responses after Testing a Modified Realm Definition
Response
Description
Yes
The client can accept the modifications, and continue running.
Requires
The current client process cannot accept the modifications, but restarting the
client process would resolve the issue.
Restart
The client program cannot accept the modifications. (Even restarting the client
process would not suffice to resolve the issue.)
No
See Also
Valid Realm Modifications, page 115
Consolidating Responses
A server consolidates the responses from all of its clients. The primary server
consolidates the responses from all of its clients and all of its satellite servers.
The consolidated response is the least favorable response reported by any client or
satellite server. For example, if 77 clients report Yes, and one client reports
Requires Restart, then the consolidated response is Requires Restart. If
even one client were to report No, then the consolidated response would be No.
Satellite Servers Recursively Test Their Clients
Satellite realm servers broaden step 1 of the deploy transaction (above). The
primary server not only tests the deployment against its own clients, it also tests
the deployment against each of its satellite servers—which, in turn, test the
modified realm definition against their clients (and backup servers). Each of these
clients determines whether it can accept the modifications and continue running;
each client reports its answer to the satellite server. Each satellite server combines
the answers from its clients, and reports a single consolidated answer to the
primary.
The primary consolidates the answers from its clients and satellites, using the
same rules in Consolidating Responses, above.
TIBCO FTL Administration
114
| Chapter 6
Realm Server and its Browser Interfaces
Successful Test
If the consolidated response is Yes, then the transaction proceeds to step 2.
Unsuccessful Test
If the consolidated response is anything other than Yes, then the browser interface
displays the Action Status panel (see Active Deployment Request on page 170).
The administrator must intervene by selecting one of the options in Table 31.
Table 31 Action Status Options
Option
Description
Cancel
The transaction rolls back. The realm server and its clients discard the modified realm
definition, and continue as they were.
Proceed
The transaction proceeds to step 2. When the transaction commits, the realm server
stores the modified realm definition in the database, and instructs the clients that can
accept it to begin using it. Clients that cannot accept it continue running as they were
(problems might arise as those clients interact with updated clients).
Wait
Sometimes the realm server cannot communicate with one or more clients. In this
situation you can wait for more clients to respond (or select one of the options above).
Meanwhile, the transaction remains at step 1.
After waiting a maximum of 10 minutes, the primary realm server automatically
cancels and rolls back the deploy transaction (which allows new clients to connect to
the realm server).
Backup Prevents Satellite Update
A backup server is tightly coupled to its regular server, but a satellite is only
loosely coupled to its primary server. As a result, a backup server B to a satellite S
can prevent primary server P from updating S, but S cannot prevent P from
updating itself and its other satellites. If B is unavailable when P attempts to
update S, then S will remain out of sync with P until B again becomes available.
TIBCO FTL Administration
Valid Realm Modifications 115
|
Valid Realm Modifications
Table 32 describes the ways in which you can modify the realm definition, and the
consequences of each modification.
Table 32 Realm Modifications and Deployments (Sheet 1 of 6)
Modification
Details
Application Definition Modifications
Add applications
You can add a new application definition.
Delete applications
You can delete an application definition from the realm definition. All
client instances of that application implicitly become invalid (though they
continue to run). You must explicitly stop or disable those client processes
(see Disabling Clients, page 164).
Manage All Formats
If you modify the application parameter Manage All Formats, then
clients could require restart. In particular, if the modification changes an
application’s effective value of this parameter, then all instances of that
application require restart.
Format Modifications
Add formats
You can add a new managed format to an application definition.
You can also upgrade a dynamic format to a managed format, in order to
gain efficiency. When upgrading, the managed format must exactly
match the existing dynamic format (that is, format name, field names,
and field types); it may also include additional fields that are not in the
existing dynamic format.
For a client to use a new managed format, you must also add that format
to the application’s preload formats list.
Add preload format
You can add preload formats to an application definition.
TIBCO FTL Administration
116
| Chapter 6
Realm Server and its Browser Interfaces
Table 32 Realm Modifications and Deployments (Sheet 2 of 6)
Modification
Details
Add fields
You can add fields to an existing format definition.
We recommend adding fields only to the end of an existing format (that is,
after all its existing fields).
Delete fields
•
Conforming to this rule permits graceful migration of client processes
from the old format definition to its new definition. As each client
restarts, it begins using the new definition, and the new fields become
accessible. Meanwhile, clients using different versions of the format
definition can still exchange messages with that format.
•
Violating this rule is disadvantageous. All clients that use the format
require restart—and they all must restart in synchrony. Clients that
use one version of the format definition cannot recognize messages
that use another version, and silently discard them.
You can delete a field from an existing format definition. All clients that
use the format require restart—and they all must restart in synchrony.
Clients can recognize older format versions only if they received those
versions during their initial preload from the realm server. Clients silently
discard messages with unrecognized formats.
Endpoint Modifications
Add endpoints
You can add new endpoints to an application definition.
Delete endpoints
You can delete an endpoint from an application definition. If a client has
publisher or subscriber objects on that endpoint, then the client requires
restart.
Transport Modifications
Add transports
TIBCO FTL Administration
You can add new transports to an application definition.
Valid Realm Modifications 117
|
Table 32 Realm Modifications and Deployments (Sheet 3 of 6)
Modification
Details
Delete transports
You can delete an existing transport definition. Client processes
immediately stop using the bus on the affected transport:
•
Send to inbox calls raise an exception (when the inbox is no longer
accessible).
•
Send one-to-many calls return normally, but the deleted transport
does not carry messages. (If an endpoint still has other operating
transports, then they continue to carry messages; otherwise the
endpoint silently discards messages.)
•
Subscribers silently stop delivering messages from the deleted
transport.
Modify transport
parameters
You can modify the parameter values of a transport. If an application
instance binds an affected transport, then it requires restart.
Add or delete
transport relationships
You can add or delete a transport relationship.
Application Instance Modifications
Add transports to
endpoints
You can add a transport to implement an existing endpoint in an
application instance. Existing process instances immediately bind the
new transport to implement the endpoint, and attempt to establish a bus.
Some transports require the application process to restart (in order to
establish their bus).
Delete transports from
endpoints
You can delete a transport from an endpoint (in an application instance).
Client processes immediately stop using that transport to implement that
endpoint:
•
Send to inbox calls raise an exception (when the inbox is no longer
accessible).
•
Send one-to-many calls return normally, but the deleted transport
does not carry messages. (If the send ability still has other operating
transports, then they continue to carry messages; otherwise the
endpoint silently discards messages.)
•
Subscribers silently stop delivering messages from the deleted
transport.
TIBCO FTL Administration
118
| Chapter 6
Realm Server and its Browser Interfaces
Table 32 Realm Modifications and Deployments (Sheet 4 of 6)
Modification
Details
Enable or disable
abilities
You can enable or disable transport abilities of an endpoint in an
application instance.
Communications on the endpoint immediately expand to use the
additional ability.
A disabled ability immediately stops carrying messages:
•
Send to inbox calls raise an exception (when the inbox is no longer
accessible).
•
Send one-to-many calls return normally, but the transport’s send
ability does not carry messages. (The endpoint silently discards
messages.)
•
The transport’s receive and receive inbox abilities silently stop
delivering messages.
Realm Property Modifications
Modify realm
properties
You can modify any realm property.
If you modify the realm property Manage All Formats, then some
clients could require restart. In particular, if the modification changes an
application’s effective value of this parameter, then all instances of that
application require restart.
Store and Durable Modifications
Add or delete stores
You can add, rename or delete a store.
When deleting or renaming a store, all store server processes require
restart. You must first stop all the servers, then restart all servers (note that
this resets the cluster’s data state to empty).
To avoid data reset, you can delete all the durables from a store, instead of
deleting the store itself. (You can delete the store later, at a time when
data reset is acceptable.)
Before deleting a store, you must first review every application definition
in the realm, ensuring that none of the endpoints still refer to the store
you plan to delete.
Add or delete durables
You can add durables to a store, or delete durables from a store.
(When deleting a durable from a store, you must also remove subscriber
name mappings to that durable.)
TIBCO FTL Administration
Valid Realm Modifications 119
|
Table 32 Realm Modifications and Deployments (Sheet 5 of 6)
Modification
Details
Modify store or
durable parameters
You can modify parameter values of stores and durables.
When modifying the publisher mode of a store, or the acknowledgement
mode of a durable, all affected clients disconnect from the cluster (that is,
the leader) and automatically reconnect.
From the moment that a subscriber object first interacts with a durable,
you may no longer change a durable’s message interest, nor its matcher
fields. If these configuration values must subsequently change, you can
instead map the subscriber to a new durable with the correct message
interest and matcher fields.
Modify the mapping
from subscriber names
to durables
You can modify the mapping from subscriber names to durable names for
an endpoint. All clients that have durable subscribers on that endpoint
require restart.
Add or delete store
servers
You can add or delete a store server.
The cluster temporarily becomes unavailable while reforming a quorum.
Ensure that adding or deleting a store server does not prevent forming a
quorum.
When adding a server, we recommend assigning it a low weight, so that it
does not immediately become the leader. You can raise its weight later—
after it replicates the cluster’s message data.
Changing the name of a store server is like deleting it, and replacing it
with a new one. The store server process requires restart.
Modify cluster
transport parameters
of a store server
Modify client transport
parameters of a store
server
You can modify cluster transports of store servers.
When modifying even one cluster transport or any of its parameters, all
store servers require restart. You must first stop all servers, then restart all
servers (note that this resets the cluster’s data state to empty).
You can modify client transports of store servers.
When modifying a primary client transport or any of its parameters, that
store server and all its clients require restart. If you modify the client
transports of several servers, we recommend that you stop and restart
them one at a time, so that the cluster retains its data state.
TIBCO FTL Administration
120
| Chapter 6
Realm Server and its Browser Interfaces
Table 32 Realm Modifications and Deployments (Sheet 6 of 6)
Modification
Details
Modify alternate client
transport parameters
of a store server
You can modify alternate client transports of store servers.
Adding an alternate client transport (when it was not previously
configured) does not require restart. Clients can connect using that
transport immediately following successful deployment.
Deleting an alternate client transport does not require restart. Clients
cannot connect (nor reconnect) using the deleted transport. However,
existing clients can remain connected on the deleted transport.
Modifying the transport parameters of an alternate client transport
requires restart of the store server and the clients that connect using the
modified transport.
You can add and delete associated client host names. The store server
does not require restart. Clients on added hosts can connect using the
alternate client transport immediately following successful deployment.
A client on a deleted host remains connected until the client restarts.
See Also
Responses to Deployment Tests, page 113
TIBCO FTL Administration
| 121
Chapter 7
Configuring a Realm using the GUI
This chapter presents the graphical configuration interface that lets you define
and configure a realm.
(To configure a realm using Python-based scripts, see Chapter 10, Configuring a
Realm using Python Scripts, on page 177.)
Topics
See Also
•
Applications Summary, page 122
•
Configuring an Application Definition, page 123
•
Configuring an Application Instance, page 127
•
Transports Summary, page 130
•
Configuring a Transport Definition, page 131
•
Formats Summary, page 135
•
Configuring a Format Definition, page 136
•
Configuring the Realm Properties, page 139
To configure stores and durables, see these sections in Chapter 15:
•
Configuring the Realm Persistence Cluster, page 270
•
Configuring a Persistence Server Definition, page 272
•
Configuring a Store Definition, page 275
•
Configuring a Durable Definition, page 277
•
Configuring Persistence Stores within the Application Definition, page 280
•
Configuring Durable Subscribers within an Application Instance, page 281
To configure the eFTL service, see TIBCO eFTL User’s Guide.
TIBCO FTL Administration
122
| Chapter 7
Configuring a Realm using the GUI
Applications Summary
The Applications summary page lists application definitions in the realm, and lets
you create new application definitions.
See Also
Chapter 3, Implementing Endpoints, page 15
TIBCO FTL Administration
Configuring an Application Definition 123
|
Configuring an Application Definition
The Application definition page presents the details of an application definition,
and lets you modify the definition.
TIBCO FTL Administration
124
| Chapter 7
Configuring a Realm using the GUI
Table 33 Application Definition—Components (Sheet 1 of 3)
Parameter
Description
Name
Required.
Name of the application.
Application names must be globally unique within the realm.
All names are limited to a maximum length of 256 characters.
Description
Optional.
You can use this text field as a comment to describe the application
and attach administrative notes.
TIBCO FTL Administration
Configuring an Application Definition 125
|
Table 33 Application Definition—Components (Sheet 2 of 3)
Parameter
Description
Manage All Formats
Restrict the formats available to an application.
When enabled, the only available formats are preload formats and
built-in formats. For complete information, see Restricting Formats on
page 141.
Endpoints
Define the endpoints of the application.
When the application defines only the default instance, you can add and configure endpoint
transport connectors in the Default Transport Connectors sections, and the endpoint subscriber
names (for mapping to durables) in the Default Subscribers sections.
Endpoint Name
Required for each endpoint.
Store
Optional for each endpoint.
To associate an endpoint with a store, add the store name here. For
details, see Configuring Persistence Stores within the Application
Definition on page 280.
Application Instances
Define the instances of the application.
You must configure the default application instance (and you cannot
delete it). You may also define other application instances (optional).
When the application defines only the default instance, you can add
and configure endpoint connectors and subscriber names on this page.
If the application defines additional instances, then this section
displays a list of the instances. You can configure the endpoint
connectors of an instance on its application instance page (including a
separate page for the default instance); see Configuring an
Application Instance on page 127.
For an overall conceptual explanation of instances and connectors, see
Implementation—Application (Macro) on page 23.
The icons (at left of each instance) indicate whether the instance
defines transport connectors, and whether it maps durable subscriber
names.
TIBCO FTL Administration
126
| Chapter 7
Configuring a Realm using the GUI
Table 33 Application Definition—Components (Sheet 3 of 3)
Parameter
Description
Preload Formats
Determines the set of format definitions that the application receives
from the realm server when the process instance starts (and which the
process caches in its realm object). This parameter also determines the
set of defined formats that an application can use.
Each format name must be defined as a format in the realm.
See Also
Chapter 3, Implementing Endpoints, page 15
Configuring Persistence Stores within the Application Definition, page 280
TIBCO FTL Administration
Configuring an Application Instance 127
|
Configuring an Application Instance
The Application Instance definition page presents the details of an application
instance definition, and lets you modify the definition.
TIBCO FTL Administration
128
| Chapter 7
Configuring a Realm using the GUI
Table 34 Application Instance Definition—Components (Sheet 1 of 2)
Parameter
Description
Instance Name
Required.
Name of the application instance.
Instance names must be unique within each application. (You may use the same
instance name in several different applications.)
All names are limited to a maximum length of 256 characters.
The default instance always has the instance name default; you cannot change it.
Description
Optional.
You can use this text field as a comment to describe the application instance and
attach administrative notes.
Host
Optional.
Hostname or IP address for matching.
When present, the Transports (Endpoint Connectors) apply only to process
instances running on this host. To match, this string value must exactly match
either the output of the hostname operating system call on the computer where
the application process is running, or the IP address bound to that hostname.
For an explanation of matching, see Implementation—Application (Macro) on
page 23.
Identifier
Optional.
Identifier string for matching.
When present, the Transports (Endpoint Connectors) apply only to process
instances that supply this identifier when connecting to the realm server. The
identifier must match exactly.
For an explanation of matching, see Implementation—Application (Macro) on
page 23.
TIBCO FTL Administration
Configuring an Application Instance 129
|
Table 34 Application Instance Definition—Components (Sheet 2 of 2)
Parameter
Description
Transports (Endpoint Connectors)
For each of the application’s endpoints, this page displays a corresponding endpoint connector
panel. The title of each endpoint connector panel is the name of the endpoint that it configures.
You must connect each endpoint to at least one transport. For background information, see
Implementation—Endpoints (Micro) on page 20.
To create a connector, click the Add a Transport icon.
Transport
Name
Endpoint
Ability
Check-Boxes
Required.
Each connector binds an endpoint to a transport. You must supply a valid
transport name. For background information, see Chapter 3, Implementing
Endpoints, on page 15.
Receive
Send
Receive Inbox
Send Inbox
Each connector specifies the endpoint abilities that the transport carries. You must
check at least one ability box. For details, see Abilities on page 18, and
Implementation—Endpoints (Micro) on page 20.
Subscribers
For each of the application’s endpoints, this page displays a mapping from subscriber names to
durables. The title of each subscriber panel is the name of the endpoint that it configures.
For details, see Configuring Durable Subscribers within an Application Instance on page 281.
To create a connector, click the Add a Subscriber icon.
See Also
Chapter 3, Implementing Endpoints, page 15
TIBCO FTL Administration
130
| Chapter 7
Configuring a Realm using the GUI
Transports Summary
The Transports summary page displays transport definitions in the realm, and
lets you create new transport definitions.
For each transport definition, the summary displays the transport name, and its
transport type in square brackets. You can filter by type by including brackets in
the filter string. (Brackets have special meaning in regular expression syntax; to
avoid this meaning, precede brackets with escape characters.)
See Also
Chapter 4, Transports, page 35
TIBCO FTL Administration
Configuring a Transport Definition 131
|
Configuring a Transport Definition
The Transport definition page presents the details of a transport definition, and
lets you modify the definition.
It is erroneous to define two transports with identical configurations.
TIBCO FTL Administration
132
| Chapter 7
Configuring a Realm using the GUI
Table 35 Transport Definition—Components (Sheet 1 of 2)
Parameter
Description
Common Components
Name
Required.
Name of the transport.
Transport names must be globally unique within the realm.
All names are limited to a maximum length of 256 characters.
Description
Optional.
You can use this text field as a comment to describe the transport and
attach administrative notes.
Transport Type
Required.
Select one of the available transport types.
For detailed descriptions of the available transport types, see
Chapter 4, Transports, on page 35.
Additional Components
transport parameter fields
Other fields (described elsewhere) represent parameters that are
specific to the various transport types. For explanations of the
parameters for each transport type, see Chapter 4, Transports, on
page 35.
Related Transports
Transport Relationships
This pane (see screenshot below) appears only when the transport
type allows fragmentary transport definitions.
Transport types that are not inherently unitary allow relationships
between transports; see Transport Relationships on page 38. Transport
relationships are symmetric—if you configure a relationship from T1
to T2, then the configuration interface automatically records the
reciprocal relationship from T2 to T1.
TIBCO FTL Administration
Configuring a Transport Definition 133
|
Table 35 Transport Definition—Components (Sheet 2 of 2)
Parameter
Description
Advanced Settings
Non-Blocking Send
This check-box governs the behavior of the transport when the bus is
full (that is, it cannot accept any more outbound messages).
When enabled (the default), and the bus is full, the transport holds
outbound messages in a backlog buffer (in process memory) until the
bus can accept them.
When disabled, and the bus is full, the transport blocks send calls in
the program.
For more information, see Blocking vs Non-Blocking Send on page 47.
Backlog Buffer Size
Required when Non-Blocking
Send
is enabled.
This parameter determines the size (in bytes) of the backlog buffer.
The default value is 64 megabytes.
With zero bytes of backlog buffer, a non-blocking send call
immediately discards its message if the transport cannot accept
outbound data.
Receive Spin Limit
This parameter governs blocking behavior of threads when waiting
for message data to arrive. The default value is 0.01 seconds.
Do not adjust this parameter unless you thoroughly understand the
material in Receive Spin Limit on page 50.
Edit Configuration
Manually
See Also
Do not use this feature except as directed by TIBCO Support personnel.
For details, see Edit Configuration Manually on page 134.
Chapter 4, Transports, page 35
TIBCO FTL Administration
134
| Chapter 7
Configuring a Realm using the GUI
Edit Configuration Manually
Do not use this feature except as directed by TIBCO Support personnel.
If you need to view any part of the realm definition as a JSON string (but do not
need to modify it), see instead Realm Source on page 154.
Selecting this check-box lets you edit the transport definition as a JSON string.
However, once you enable this feature, the realm server constrains your
subsequent choices.
•
The realm server enforces correct JSON syntax, but does not verify semantics.
•
The realm server does not parse the JSON string to extract values for the GUI
fields.
•
Turning off this feature does not return to the original GUI configuration of the
transport. Instead, it supplies a default transport configuration (which is a
shared memory transport with default values for the required parameters).
To return to the original GUI configuration, you may use the Refresh
command (discard all realm modifications).
TIBCO FTL Administration
Formats Summary 135
|
Formats Summary
The Formats summary page displays format definitions in the realm, and lets you
create new format definitions.
Show Historic Formats
When you modify a format definition by deleting a field, the realm server creates
a new version of the definition, and retains the old version. The realm server
retains older versions so that durable subscribers can still receive messages (that
use older format versions) from the store.
The formats summary list does not ordinarily display superceded versions;
however, to display those older versions, you can enable the checkbox Show
Historic Formats.
If you are certain that an old format version is no longer relevant (that is, all
publishing applications and all messages within stores no longer use that
version), you may explicitly delete that version.
See Also
Defining Formats, page 12
TIBCO FTL Administration
136
| Chapter 7
Configuring a Realm using the GUI
Configuring a Format Definition
The Format definition page presents the details of a format definition, and lets
you modify the definition.
Table 36 Format Definition—Components (Sheet 1 of 2)
Parameter
Description
Name
Required.
Name of the format.
Format names must be globally unique within the realm.
All names are limited to a maximum length of 256 characters.
Description
Optional.
You can use this text field as a comment to describe the format and
attach administrative notes.
TIBCO FTL Administration
Configuring a Format Definition 137
|
Table 36 Format Definition—Components (Sheet 2 of 2)
Parameter
Description
Fields
Required.
Define the fields of the format.
Each field consists of a name and a type.
Field names must be unique within each format. (You may use the
same field name in several different formats.)
Select the field’s type from the drop-down menu. For descriptions of
the datatypes, see Table 37, below.
Table 37 Field Datatypes
Type Name
(in Realm)
Type Constant
(in Programs)
Description
long
TIB_FIELD_TYPE_LONG
A long integer.
long_array
TIB_FIELD_TYPE_LONG_ARRAY
An array of long integers.
double
TIB_FIELD_TYPE_DOUBLE
A double-length floating point number.
double_array
TIB_FIELD_TYPE_DOUBLE_ARRAY
An array of double-length floating
point numbers.
string
TIB_FIELD_TYPE_STRING
A UTF-8 string.
string_array
TIB_FIELD_TYPE_STRING_ARRAY
An array of UTF-8 strings.
opaque
TIB_FIELD_TYPE_OPAQUE
An opaque byte-array.
message
TIB_FIELD_TYPE_MESSAGE
An FTL message (that is, the field’s
value is a sub-message).
message_array
TIB_FIELD_TYPE_MESSAGE_ARRAY
An array of FTL messages.
inbox
TIB_FIELD_TYPE_INBOX
An inbox.
datetime
TIB_FIELD_TYPE_DATETIME
An FTL DateTime value.
datetime_array
TIB_FIELD_TYPE_DATETIME_ARRAY
An array of FTL DateTime values.
TIBCO FTL Administration
138
| Chapter 7
Configuring a Realm using the GUI
See Also
Defining Formats, page 12
TIBCO FTL Administration
Configuring the Realm Properties 139
|
Configuring the Realm Properties
The Realm Properties configuration page presents the values of realm properties,
and lets you modify the property values.
TIBCO FTL Administration
140
| Chapter 7
Configuring a Realm using the GUI
Table 38 Realm Parameters
Parameter
Description
Description
You can use this text field as a comment to describe the realm and attach
administrative notes. Optional.
Client-Server
Heartbeat Interval
The realm server instructs its clients to send it heartbeats at this interval
(in seconds).
Zero is a special value, instructing the clients not to send heartbeats.
Server Timeout Client
When a realm server does not receive client heartbeats for this interval,
the server deletes the client from list of monitored clients.
Server-Client
Heartbeat Interval
The realm server sends heartbeats to its clients at this interval (in
seconds).
Zero is a special value, instructing the realm server not to send heartbeats.
Client Timeout Server
When a client does not receive server heartbeats for this interval, it
actively attempts to reconnect to a server. If the server has a fault-tolerant
partner, the client can failover to that partner.
Client Monitoring
Sample Interval
Clients sample their operating statistics at this interval (in seconds).
Zero is a special value, instructing all clients to disable the monitoring
feature.
For background information, see Chapter 11, Client Monitoring, on
page 181.
Manage All Formats
Restrict the formats available to an application.
When enabled, the only available formats are preload formats and
built-in formats. For complete information, see Restricting Formats on
page 141.
TIBCO FTL Administration
Restricting Formats 141
|
Restricting Formats
For efficiency and for safety, administrators can use the Manage All Formats
parameters to restrict the formats available to some or all of the applications in a
realm. That is, administrators can require that applications use only preload
formats and built-in formats, and prohibit applications from using dynamic
formats.
Configuration
Twin parameters determine whether this prohibition is in effect; these parameters
both have the same name, but they apply with different scope. One applies only
to the instances of a specific application; the other applies to all applications
throughout the realm.
While administrators can configure these parameters independently, the effective
value governing an application is the inclusive OR (IOR) of the parameter in both
scopes. That is, if either the realm or the application restricts formats, then the
restriction is in force for the application.
•
To restrict formats only in a specific application, fill the check-box Manage
Formats (check-box filled) on that application’s definition page.
•
To restrict formats in all applications, fill the check-box Manage
on the realm properties page.
•
To permit formats without restriction in an application, both check-boxes must
be empty (that is, the realm property and the application parameter).
All
All Formats
The default value of this parameter is false (check-box empty) for new application
definitions and also for new realm definitions. (Application definitions receive the
same default value when migrating from release 2.0.)
See Also
Background information: Formats—Managed, Built-In and Dynamic, page 10.
Changes require restart: Valid Realm Modifications, page 115
Application parameter: Manage All Formats, page 125
Realm property: Manage All Formats on page 140
TIBCO FTL Administration
142
| Chapter 7
Configuring a Realm using the GUI
TIBCO FTL Administration
| 143
Chapter 8
Browsing a Realm using the GUI
This chapter presents the graphical tools that let you browse a realm, and view it
from different perspectives.
Topics
•
Validation Results, page 144
•
Instance Connections, page 145
•
Transport Relationships, page 152
•
Realm Source, page 154
TIBCO FTL Administration
144
| Chapter 8
Browsing a Realm using the GUI
Validation Results
The configuration interface validates modifications as you make them (that is, at
every save and auto-save operation). The realm server also validates when you
deploy.
When validation detects any configuration errors, this page reports them. A
numeric badge in the sidebar indicates the total number of detected errors and
warnings.
Next to each reported error is a View icon, which displays the configuration page
where that error occurs.
Table 39 presents general categories of configuration errors that the realm server
detects during validation.
Table 39 Realm Configuration Errors
Configuration Errors
Two or more items with the same name.
References to named items that are not defined in the realm.
Duplicate references to items that must be unique.
Required fields that are empty, missing or undefined.
Transports with invalid values for configuration parameters.
See Also
The Deploy Transaction, page 112
TIBCO FTL Administration
Instance Connections 145
|
Instance Connections
The Instance Connections page displays a connectivity graph visualizing the
connections (as configured) between endpoints in application instances and the
transports that implement them.
The graph shows connections as configured in the realm definition. You can use it
to diagnose configuration errors, but not hardware or network errors.
Connections at Work
Internally, each process instance manifests instance connections within its
endpoint instances (that is, publisher or subscriber objects). Neither programmers
nor administrators have direct access to these instance connections.
Operationally, each instance connection represents a pathway for data to flow into
an application process—or out from it—through one of its endpoint instances.
Example 1 Instance Connections Graph for Request-Reply Sample Applications
Figure 12 on page 146 depicts a subset of the instance connections among the
endpoints and transports in the sample realm, for use in the applications
tibrequest and tibreply.
The program tibrequest sends one-to-many messages through
The program tibreply receives those messages through
tibreply-endpoint, and sends one-to-one replies back through the same
endpoint. The program tibrequest receives those replies through
tibrequest-endpoint.
tibrequest-endpoint.
In default instances of these application programs, a common transport
(shm-requestreply-tport) implements the two endpoints, connecting the two
programs with a shared communication path.
In rdma instances of these application programs, a pair of related transports
(rdma-request-tport and rdma-reply-tport) implement the two endpoints,
connecting the two programs with a shared communication path.
TIBCO FTL Administration
146
| Chapter 8
Browsing a Realm using the GUI
Figure 12 Application Instance Connections Graph
TIBCO FTL Administration
Instance Connections 147
|
Figure 13 Application Instance Connections Graph with Store
Understanding the Instance Connections Graph
The instance connections graph consists of vertices and edges. The vertices are
arranged in two columns, with edges crossing between the columns.
Table 40 Instance Connections Graph, Iconography (Sheet 1 of 2)
Glyph
Description
Green circle vertices in the left column represent endpoints in application instances
(grouped by application name).
•
Large labels represent application names (for grouping endpoints). To view the
definition page of an application, shift-click the application’s label.
•
Smaller labels represent endpoints, and have the form endpoint@instance_name.
To highlight the full connection path from or to an endpoint instance, click the endpoint’s
instance label or its green circle vertex; see Visualizing Specific Connections on page 148.
Gray ball vertices in the right column represent transports.
Labels represent transport names.
To view the definition page of a transport, shift-click the transport’s label or its gray ball
vertex.
Gray box vertices in the right column represent stores.
Labels represent store names.
To view the definition page of a store, shift-click the store’s label or its gray box vertex.
TIBCO FTL Administration
148
| Chapter 8
Browsing a Realm using the GUI
Table 40 Instance Connections Graph, Iconography (Sheet 2 of 2)
Glyph
Description
Straight black edges between the two columns represent connectors—visually linking
endpoints with the transports that implement them.
A black arrowhead indicates that a connector binds its transport to a one-to-many
ability. (Messages flow toward the arrowhead.)
•
An arrowhead near the transport column (pointing right) indicates a send
ability.
•
An arrowhead near the endpoint column (pointing left) indicates a receive
ability.
A black dot-head indicates that a connector binds its transport to a one-to-one
ability. (Messages flow toward the dot-head.)
•
A dot-head near the transport column (on the right) indicates a send inbox
ability.
•
A dot-head near the endpoint column (on the left) indicates a receive inbox
ability.
Curved edges to the right of the transport column represent relationships between
transports.
Visualizing Specific Connections
In a large or complex graph it is sometimes difficult to see the way in which
individual connections unite to form a path for messages.
To highlight the full path from or to an endpoint instance, click its label or its
green circle vertex. All other connections, endpoints and transports fade to gray,
so you can clearly see a specific path (see Figure 14).
TIBCO FTL Administration
Instance Connections 149
|
Figure 14 Application Instance Connections Graph, Highlighting Specific Connections
To highlight a different path, click one of its endpoint instances.
To remove highlighting, click one of the highlighted endpoint instances.
To view the definition of an application or a transport, double-click its name.
(This feature is not available for group and bridge definitions.)
Filtering Instance Connections
The instance connections page supports standard JavaScript regular expressions,
supplemental instance filtering syntax (see Table 41) and display modifiers (see
Table 42).
Table 41 Filtering Instance Connections—Regular Expression Semantics (Sheet 1 of 2)
Syntax
Description
Instance Filtering Syntax
This filtering syntax applies only on the instance connections graph.
@
Match specific elements within the endpoint name. Endpoint names have this
implicit syntax: endpoint@instance@application. You may omit the application element.
When an @ character is present, the filter applies only to extended endpoint
names, and not to transport names.
TIBCO FTL Administration
150
| Chapter 8
Browsing a Realm using the GUI
Table 41 Filtering Instance Connections—Regular Expression Semantics (Sheet 2 of 2)
Syntax
Description
space
Combine filter elements with logical OR semantics.
-
(not)
Invert the sense of the following filter element.
For example, -mcast matches any item that does not contain the string mcast.
JavaScript Regular Expression Filtering
This filtering syntax applies to the instance connections graph, and also to summary pages (see
Filtering the List on page 106).
.
(dot)
Match any single character.
*
(star)
Match zero or more instances of the preceding element.
+
(plus)
Match one or more instances of the preceding element.
\w
Match any word character.
[chars]
Match any single instance of the characters within square brackets.
Table 42 Filtering Instance Connections—Display Modifiers (Sheet 1 of 2)
Display Modifier
Description
Filter Endpoints Related
Via Transports
Control the degree of filtering.
When checked, filter the graph strictly, so you can more easily locate
items of interest. Apply the filter to both endpoint names and transport
names. Display endpoints only if they match.
When unchecked, filter the graph leniently, so you can see complete
paths from endpoint to endpoint. Apply the filter only to transport
names. Display endpoints that match, or are connected to displayed
transports (even if the endpoints do not match the filter).
With either setting, the graph displays transports that match, or are
connected to endpoints that match, or are related to other displayed
transports.
Hide Transports/Stores
with No Endpoints
TIBCO FTL Administration
When checked, hide unused transports.
When unchecked, show all matching transports.
Instance Connections 151
|
Table 42 Filtering Instance Connections—Display Modifiers (Sheet 2 of 2)
Display Modifier
Description
Hide Endpoint with No
Transports
When checked, hide unbound endpoints.
Show Send & Receive
When checked draw arrowhead connectors representing one-to-many
abilities.
When unchecked, show all matching endpoints.
When unchecked, hide one-to-many abilities.
Show Send Inbox &
Receive Inbox
When checked draw dot-head connectors representing one-to-one
abilities.
When unchecked, hide one-to-one abilities.
TIBCO FTL Administration
152
| Chapter 8
Browsing a Realm using the GUI
Transport Relationships
The Transport Relationships page displays a connectivity graph visualizing the
links among related transports. You can use the graph to quickly understand the
relationships among transports in the realm.
The graph shows relationships as configured in the related transport section of
transport definitions—not the actual shared communication path among the
related transports.
The screenshot shows the sample realm, filtered to show only those transports
whose transport name contains the string req, plus any other transports that are
related to the filtered set. Notice that RDMA and RUDP transports are related in
pairs—the connecting end at the request transport, and the listening end at the
reply transport. In contrast, the shared memory transport definition
(shm-requestreply-tport) is unitary, and cannot participate in a relationship
with other transports.
TIBCO FTL Administration
Transport Relationships 153
|
Each green dot is a hyperlink to the transport definition page of the
corresponding transport.
For background information, see Transport Relationships on page 38.
To configure transport relationships, see Transport Relationships on page 132.
TIBCO FTL Administration
154
| Chapter 8
Browsing a Realm using the GUI
Realm Source
The Realm Source page displays the realm definition in JSON format. It does not
permit you to edit that definition.
Browser search mechanisms can find strings within the definition.
TIBCO FTL Administration
| 155
Chapter 9
Monitoring a Realm
This chapter presents the graphical tools that let you monitor a realm and manage
its clients.
Topics
See Also
•
Overview, page 156
•
Monitoring the Realm Server, page 157
•
Clients Summary, page 160
•
Monitoring a Client, page 161
•
Disabling Clients, page 164
•
Satellites Summary, page 165
•
Deployments, page 168
•
Active Deployment Request, page 170
•
Last Deployment Request, page 173
•
Recent Deployments, page 174
To monitor advanced features, such as groups, transport bridges and stores, see
the chapters that present those features:
•
Group Server Monitoring Page, page 220
•
Bridge Monitoring Summary, page 244
•
Bridge Status, page 245
•
Persistence Servers Monitoring Summary, page 283
•
Monitoring a Persistence Server, page 286
•
Persistence Stores Monitoring Summary, page 289
•
Monitoring a Store, page 290
To monitor the eFTL service, see TIBCO eFTL User’s Guide.
TIBCO FTL Administration
156
| Chapter 9
Monitoring a Realm
Overview
The realm server monitoring interface lets you do these actions:
•
View the server properties and status
•
View a list of clients
•
View individual clients (in greater detail)
•
Disable clients, which prevents them from using FTL transports to
communicate
•
View a list of satellite servers
•
View individual satellite servers (in greater detail)
•
Purge clients or satellites from the realm server’s list
•
View the status of the realm’s current deployment
•
View the status of a deployment as it proceeds
•
View a history of recent deployments
•
Redeploy a previous deployment
•
Delete deployments from the history
•
View the status of groups
•
View the status of transport bridges
•
View the status of store servers and stores
Commands
For command icons available in the monitoring interface, see Table 26, Realm
Server Icons—Monitoring Commands, on page 103.
TIBCO FTL Administration
Monitoring the Realm Server 157
|
Monitoring the Realm Server
The Server page presents a dashboard overview of realm server activity.
TIBCO FTL Administration
158
| Chapter 9
Monitoring a Realm
Table 43 Server Status (Sheet 1 of 2)
Property
Description
Label
The label string of this realm server instance. If you did not supply a label
when starting the realm server (using --server.label) this field
displays the Host:Port value instead.
Host:Port
Location of the realm server (see Connect Port).
Mode
Current state of the realm server. The server can be running (as a
primary), acting as a backup, or running as a satellite.
Started At
Date and time that the server process started.
Current Deployment
Name of the current realm deployment.
(This name originates in the Deploy command.)
Realm Revision
Revision number of the realm definition as stored in the realm server.
This number increases each time you deploy modified definitions to the
realm server. This number does not change if the changes do not affect
realm semantics (for example, modifying only a description string).
Web API Version
Version of the realm server’s internal API (for features and compatibility).
Server Version
Release number of the realm server executable.
HTTP Port
The realm server listens on this port for initial contact requests from
clients, Python scripts and command line utilities.
After a client initiates a connection, the realm server directs it to interact
at the FTL port.
After a Python script or a command line utility initiates a connection, the
realm server directs it to interact at the GUI port.
FTL Port
Clients interact with the realm server through this port.
GUI Port
The realm server listens on this port for graphical user interface (GUI)
requests from browsers, Python scripts and command line utilities.
Backup Heartbeat
Heartbeat interval between a regular server and its backup.
Backup Timeout
Timeout between a regular server and its backup.
TIBCO FTL Administration
Monitoring the Realm Server 159
|
Table 43 Server Status (Sheet 2 of 2)
Property
Description
Backup To
This realm server process has a backup server at the location indicated
here. During failover, clients can contact the backup server at this location
(hostname and HTTP port).
The value is a link to the backup server’s browser interface.
Backup Status
Status of the backup server and this server’s connection to it. When
connected, this value is a link to the backup server’s home page.
Backup For
This realm server process is a backup server for the regular server at this
location (hostname and HTTP port).
The value is a link to the regular server’s browser interface.
Satellite Heartbeat
Heartbeat interval between primary and satellites.
Satellite Timeout
Timeout between primary and satellites.
Satellite Of
This realm server process is a satellite server of the primary server at this
location (hostname and HTTP port).
The value is a link to the primary server’s browser interface.
Satellite Status
Status of the satellite server and this server’s connection to it. When
connected, this value is a link to the satellite server’s home page.
Clients
Number of clients.
Satellites
Number of satellites.
TIBCO FTL Administration
160
| Chapter 9
Monitoring a Realm
Clients Summary
The Clients summary page lists the clients of the realm server.
Selecting a row (using the check-box at left) holds that row in the display, even if it
would not match the filter.
Table 44 Clients Summary
Column
Description
Client ID
The realm server assigns each client a unique identifier.
Host
The hostname string of the client’s host computer (if available).
Application
Application name (as configured in the realm server).
Instance
Application instance name that the client matches.
TIBCO FTL Administration
Monitoring a Client 161
|
Monitoring a Client
The Client page presents the status and properties of a specific client. It also
presents client monitoring statistics (see Client Statistics on page 163).
TIBCO FTL Administration
162
| Chapter 9
Monitoring a Realm
Table 45 Client Page (Sheet 1 of 2)
Field
Description
ID
Client ID (assigned by the realm server).
Status
•
Running—the client is running, and its local realm definition is up-to-date
(that is, it is the latest realm deployment).
•
Needs Restart—the client is running, but its realm definition is out-of-date,
and it cannot accept a realm deployment. To synchronize the realm
definition, you must restart the process instance.
•
Timed Out—the server has lost the client’s heartbeat signal. Either the client
has stopped, or a network segmentation obstructs the heartbeat signal.
•
Exception—the client is running, but its realm definition is out-of-date. The
deployment caused an error in the client, so the client continues to use its
old realm definition.
Restarting the client might not be sufficient to resolve the issue. For
example, the deployment specifies a new static TCP transport, but the port
is already bound in some other process.
•
Out-of-sync—the client’s realm definition is a different revision than the
server’s.
Last Contact
Time of the most recent contact between the realm server and this client.
Time Since Last
Contact
Approximate elapsed time since the most recent contact between the realm
server and this client.
Application
Name
Application name (as configured in the realm server).
Application
Instance
Application instance name that the client matches.
Realm Revision
Revision number of the realm definition received at the client.
If this number is not equal to the server’s revision, then the client is not
synchronized with the server, and might need to restart.
Client Version
Version string of the client’s FTL library.
Startup Time
Timestamp when the client first contacted the realm server.
FTL User
The client supplied this value for the username property in its realm connect
call.
TIBCO FTL Administration
Monitoring a Client 163
|
Table 45 Client Page (Sheet 2 of 2)
Field
Description
Host Name
Hostname of the client’s host computer.
IP Address
IP address of the client’s host computer.
Identifier
The application identifier of the client. The client passes this string as a
property value when connecting to the realm server.
Other Info
Additional information about the client; for example, hardware, operating
system, process ID.
Notices
Notes about client status, or further explanation of the client’s Status.
Dynamic TCP Transports
When the client uses dynamic TCP transports, the realm server client page
displays the other clients that participate in the mesh using that transport. This
display includes the interfaces where the transport listens for TCP connections.
Client Statistics
When client statistics are available, the realm server client page summarizes them
(displaying mean values over recent samples).
Icons indicate value change direction—up (green up-tick), down (red down-tick),
or unchanged (gray dot).
For complete details, see Chapter 11, Client Monitoring, on page 181.
TIBCO FTL Administration
164
| Chapter 9
Monitoring a Realm
Disabling Clients
Administrators can disable individual client processes; a disabled client cannot
use FTL communications resources.
Consider disabling clients in the following situations:
•
When you modify the realm definition, clients that cannot accept the new
revision might need to restart. If immediately stopping their messages is
critical, you can disable them as a group (and then restart them in some other
way).
•
When you delete (or rename) an application from the realm definition, all
existing client instances of that application implicitly become invalid (that is,
the realm no longer supports them), but they continue running. You must
explicitly disable those clients.
•
If a client consumes more message bandwidth than is appropriate, depriving
other clients of communications resources, consider disabling the
misbehaving client so that other clients can continue to communicate.
•
If a client sends invalid messages that disrupt other clients, disable the
misbehaving client so that other clients can continue to communicate.
Task F Disabling Clients
1. Navigate to the Clients Summary page.
2. Select one or more clients to disable.
3. Click the Disable icon
in the upper-right corner of the page.
4. Optional. Type the reason for disabling. Client programs receive this reason as
a string argument of the realm notification callback.
5. Click OK to confirm.
Task G Purging Clients
When a client process no longer exists, the server purges it from the list of clients
after a timeout interval. You can also explicitly purge clients that list.
1. Navigate to the Clients Summary page.
2. Select one or more clients to purge.
3. Click the Purge icon
TIBCO FTL Administration
in the upper-right corner of the page.
Satellites Summary 165
|
Satellites Summary
The Satellites summary page lists the satellites of the realm server. (This list is
empty unless the realm server is a primary server and has actual satellites.)
Selecting a row (using the check-box at left) holds that row in the display, even if it
would not match the filter.
Table 46 Satellites Summary
Column
Description
Label
This string identifies the satellite server. Clicking this link navigates to the
home page of the satellite server.
Administrators can set a realm server’s label on the command line or in the
configuration file (see --server.label on page 90). If its label is not set, this string
displays the server’s hostname and HTTP port.
Realm Revision
Revision number of the realm definition as stored in the realm server.
This number increases each time you deploy modified definitions to the realm
server. This number does not change if the changes do not affect realm
semantics (for example, modifying only a description string).
Status
Aggregated client status of the satellite’s clients; see Status on page 162.
Click this icon to see details of an individual satellite (Satellite Status on
page 166).
TIBCO FTL Administration
166
| Chapter 9
Monitoring a Realm
Task H Purging Satellites
When a satellite server no longer exists, the server purges it from the list of
satellites after a timeout interval. You can also explicitly purge satellites from that
list.
1. Navigate to the Satellites Summary page.
2. Select one or more satellites to purge.
3. Click the Purge icon
in the upper-right corner of the page.
Satellite Status
The Satellite Status page presents the details of an individual satellite.
Table 47 Satellite Status (Sheet 1 of 2)
Field
Descriptions
Label
This string identifies the satellite server. For more information see Label on
page 165.
Status
Aggregated client status of the satellite’s clients; see Status on page 162.
Admin UI
A link to the satellite server’s home page.
Last Contact
Time of the last protocol message from the satellite.
TIBCO FTL Administration
Satellites Summary 167
|
Table 47 Satellite Status (Sheet 2 of 2)
Field
Descriptions
Realm
Revision
Revision number of the realm definition as stored in the realm server.
FTL User
Username supplied when the satellite server started.
Host Name
Hostname of the computer where the satellite server is running.
UUID
Unique ID of the satellite server.
Notices
Log messages related to the satellite server.
This number increases each time you deploy modified definitions to the realm
server. This number does not change if the changes do not affect realm semantics
(for example, modifying only a description string). If this number is not equal to
the primary’s revision, then the satellite is not synchronized with the primary, and
could require administrator attention.
TIBCO FTL Administration
168
| Chapter 9
Monitoring a Realm
Deployments
The Deployments page presents details about deployments in several panels
(displaying only a subset of those panels at any time):
•
Active Deployment Request, page 170
•
Last Deployment Request, page 173
•
Recent Deployments, page 174
Deployment Information
Table 48 describes information fields that can appear in any of those panels of the
Deployments page.
Table 48 Deployment Information (Sheet 1 of 2)
Field
Description
Name
Name of the deployment.
Description
Administrators can use this text field as a comment to describe the deployment
and attach administrative notes. Optional.
Realm Revision
Revision number of the realm definition as stored in the realm server.
This number increases each time you deploy modified definitions to the realm
server. This number does not change if the changes do not affect realm
semantics (for example, modifying only a description string).
Deployed By
Username of the administrator who requested the deployment.
If the realm server enables JAAS authentication, this field displays the
username that requested the deployment.
If JAAS is disabled, this field displays the string anyone.
Deployed On
Deployment request timestamp.
This field displays the date and time that an administrator requested
deployment. (After redeploying, this value can differ from Created On.)
TIBCO FTL Administration
Deployments 169
|
Table 48 Deployment Information (Sheet 2 of 2)
Field
Description
Created By
Username of the administrator who created the deployment package.
If the realm server enables JAAS authentication, this field displays the
username that created the deployment.
If JAAS is disabled, this field displays the string anyone.
Created On
Deployment creation timestamp.
This field displays the date and time that the deployment package was created.
State
This string reports the status and progress of the deployment.
Log
These strings display log output during the deploy transaction.
Changes from
Previous
Deployment
A list of items that have changed since the previous deployment.
+
The item is added in this deployment.
-
The item is deleted in this deployment.
~
The item has changed in this deployment.
TIBCO FTL Administration
170
| Chapter 9
Monitoring a Realm
Active Deployment Request
When a deployment requires administrator intervention, the Deployments page
displays the Active Deployment Request panel (at its top). This panel presents the
state of the deploy command in progress, and prompts the administrator to select
an action in response to problems at clients or satellites.
TIBCO FTL Administration
Active Deployment Request 171
|
Table 49 Active Deployment Request
Field
Description
These sections can appear in the Active Deployment Request panel. Sections appear in the display
only when they contribute relevant information (otherwise they are hidden).
Numbers indicate the phases of the deployment:
1. The server is expecting deployment test responses from clients and
satellites.
2. The server is waiting for the administrator to Proceed or Cancel the
deployment. (If the phase 2 timeout expires, the server automatically
cancels the deployment.)
3. The server is either proceeding or cancelling.
Deployment
Identification
This section identifies the deployment by Name, Description, Created By and
Created On (for descriptions of these items, see Table 48 on page 168).
Phase Time Left
This row indicates the time remaining before phase 2 timeout.
Response
Summary
This section displays a graphic that summarizes the deployment test responses.
The first column summarizes responses from direct clients of the realm server;
the second column summaries responses from satellites of the realm server.
The fraction in the center indicates the number of responses the server has
already received over the number of responses the server expects. An outer
ring reflects this fraction graphically.
The color of the outer ring and the text label within the ring both indicate the
consolidated response so far.
Response Lists
A list of client and satellite IDs that are still Expected (that is, have not yet
responded), Need Restart, or reported an Exception. After phase timeout, the
Expected list becomes a Did Not Respond list.
Ellipses (...) at the bottom indicates that the display has truncated a long list.
Notices
The server displays additional information that might affect your decision.
Available
Actions
To continue the deployment, click the Proceed button.
See Also
To stop the deployment, click the Cancel button.
The Deploy Transaction, page 112
TIBCO FTL Administration
172
| Chapter 9
Monitoring a Realm
New Clients during a Deployment
When a deployment problem requires administrator intervention, the realm
server does not send the realm definition to new clients.
You must first resolve the problem by clicking one of the available actions. Your
choice determines the official realm definition (either the new deployment or the
previous deployment). Then the realm server can send that realm definition in
response to requests from new clients.
TIBCO FTL Administration
Last Deployment Request 173
|
Last Deployment Request
The Last Deployment Request panel presents detailed information about the most
recent realm deployment request—whether or not that deployment succeeded.
For an explanation of these items, see Deployment Information on page 168.
When a deployment is in progress, this section is replaced by the section Active
Deployment Request on page 170.
TIBCO FTL Administration
174
| Chapter 9
Monitoring a Realm
Recent Deployments
The Recent Deployments panel lists deployment requests.
Table 50 Recent Deployments
Column
Description
Name
Deployed By
Deployed On
Created On
For descriptions of these items, see Table 48 on page 168.
View.
Click this icon to view details of this deployment request; see Deployment
Information on page 168.
Redeploy.
Click this icon to redeploy this deployment package.
Delete.
Click this icon to delete a deployment package from the list.
Redeploy
The Redeploy icon appears only when it is permissible to change the
deployment—that is, to return to an earlier realm definition. Usually, only the
primary realm server has permission to change the deployment. However, if the
primary is unavailable, administrators can change the redeploy through a backup
or satellite server.
TIBCO FTL Administration
Recent Deployments 175
|
For example, consider a situation in which hardware or network failure prevents
deployment from completing. The primary server stores the new deployment,
pushes it to its clients, and affiliated realm servers. Before the backup and satellite
servers can completely store the deployment, failure disconnects the primary
from its clients, which failover to the backup realm server. Those clients already
have the new deployment, but the backup and satellite server do not; clients of
satellites have the previous deployment. Using the backup server’s GUI, the
administrator can redeploy the previous realm definition to all clients, and so
ensure that all clients use a common realm definition.
TIBCO FTL Administration
176
| Chapter 9
Monitoring a Realm
TIBCO FTL Administration
| 177
Chapter 10
Configuring a Realm using Python Scripts
This chapter presents a Python script interface that lets you define and configure a
realm.
(For a browser-based graphical configuration interface, see Chapter 7,
Configuring a Realm using the GUI, on page 121.)
Topics
•
Overview, page 178
•
Using the Realm Server Python Script, page 179
TIBCO FTL Administration
178
| Chapter 10
Configuring a Realm using Python Scripts
Overview
Python scripts give administrators command line access to realm servers and
realm definitions.
Table 51 Realm Server Python Scripts and Related Files
Filename (Location)
Description
rs_script.py
This Python script lets you add and delete definitions in a realm.
(bin directory)
It can read a realm definition from either a JSON file or a realm
server process. It can write a modified realm definition to either a
JSON file or a realm server process.
When writing to a realm server, this script can also instruct the
server to deploy the modified realm definition.
The script can read a command file that specifies actions to
modify the realm definition.
rs_scriptlib.py
rs_python2utils.py
These Python libraries define functions used by rs_script.py
and other Python scripts.
rs_python3utils.py
(bin directory)
rs_script_sample_input.txt
(samples directory)
TIBCO FTL Administration
This command file for rs_script.py specifies actions that
define the sample realm.
Using the Realm Server Python Script 179
|
Using the Realm Server Python Script
Before using rs_script.py, you must first ensure that Python (version 2.4 or
later) is installed.
The script’s help option (rs_script.py -h) outputs detailed information about
its options and commands—including command line examples.
You can also use the sample command file (rs_script_sample_input.txt) as a
model for composing your own command files.
TIBCO FTL Administration
180
| Chapter 10
Configuring a Realm using Python Scripts
TIBCO FTL Administration
| 181
Chapter 11
Client Monitoring
This chapter presents client monitoring and statistics.
Topics
•
Overview, page 182
•
Storage, page 183
•
Catalog of Client Statistics, page 184
•
Web API, page 187
TIBCO FTL Administration
182
| Chapter 11
Client Monitoring
Overview
The FTL client library monitors each client process, sampling several values that
reveal operating behavior and performance. The client library sends these value
samples to the realm server, which stores them, and displays them for
administrators. A realm server web API also makes these samples available for
visual analysis programs and for longer-term storage.
Sampling
Every client process—throughout the realm—collects sample data at the same
interval. The realm property Client Monitoring Sample Interval determines
that interval. Zero is a special value, instructing all clients to disable the
monitoring feature.
Each client sends all its pending samples to the realm server in the next heartbeat
message. If the heartbeat interval is large, then the realm server receives a batch of
accumulated samples after a delay (that is, at the next heartbeat). The first batch of
data becomes available with the first heartbeat after the first sample interval.
Display
For each client, the realm server displays a summary of recent sample data (see
Client Statistics on page 163).
You can use third-party statistical analysis tools or visualization tools to examine
sample data in greater depth.
TIBCO FTL Administration
Storage 183
|
Storage
The realm server maintains a recent subset of samples from each client. To use
memory resources efficiently, the realm server discards older samples to make
room for new sample data.
In this sense, the realm server is a temporary store for sample data. We
recommend that you arrange to periodically download sample data from the
server (using the realm server web API), and copy it to long-term storage.
Estimating Maximum Memory Size
You can estimate the realm server’s maximum memory requirements to store
client monitoring data at approximately 70 kilobytes per counter.
The number of counters depends on the number of application processes, and on
the number of endpoints, transports and event queues in each application
process; see Table 52.
Table 52 Client Monitoring Resource Usage
1 counter per client process
2 counters per endpoint
2 counters per event queue
3 counters per transport (for all transport types, but see below for multicast)
9 counters per multicast transport (6 specific to multicast, in addition to the 3
for all transports)
Task I
Calculating Maximum Memory to Store Client Monitoring Data
1. For each application instance definition, determine the number of counters
per client process of that application instance. Combine information from the
application instance definitions with information from Table 52).
2. For each application instance definition, multiply its counters per client
process (previous step) by the expected number of process instances.
3. Sum that number of counters over all the application instance definitions.
4. Multiply by 70 kilobytes to yield the total memory requirements for the realm
server to store all client monitoring data.
TIBCO FTL Administration
184
| Chapter 11
Client Monitoring
Catalog of Client Statistics
Standard Client Statistics
Table 53 Client Statistics (Sheet 1 of 2)
Statistic Type
Descriptions
Tracking
Queue Discards
For each event queue in the client process, a counter of this
type tracks the number of inbound messages that the queue
discarded.
Per queue
For each event queue in the client process, a counter of this
type reports the maximum number of messages in the
queue during the sample interval.
Per queue
For each transport in the client process, a counter of this
type tracks the outbound data bytes on the transport.
Per transport
For each transport in the client process, a counter of this
type tracks the inbound data bytes on the transport.
Per transport
For each transport in the client process, a counter of this
type tracks the data loss (inbound loss events) on the
transport. It is not possible to measure the magnitude of the
events in bytes.
Per transport
For each client process, a single counter of this type reports
the number of distinct dynamic formats that the client
creates within the sample interval. (This number includes
message formats used in recent intervals; the number can
decrease as the client library automatically discontinues
unused formats.)
Per client
For each endpoint in the client application, a counter of this
type tracks the outbound data messages through the
endpoint.
Per endpoint
For each endpoint in the client process, a counter of this type
tracks the inbound data messages through the endpoint.
Per endpoint
Queue Backlog
Bytes Sent
Bytes Received
Data Lost
Dynamic Formats
Messages Sent
Messages Received
TIBCO FTL Administration
Cumulative
Instantaneous
Cumulative
Cumulative
Cumulative
Instantaneous
Cumulative
Cumulative
Catalog of Client Statistics 185
|
Table 53 Client Statistics (Sheet 2 of 2)
Statistic Type
Descriptions
Tracking
Store Mismatch
Messages
Store mismatch is a misconfiguration in which a direct path
transport connects two endpoints that are associated with
two different persistence stores.
Per endpoint
Cumulative
For each endpoint in the client process, a counter of this type
detects message flows that result from store mismatch. Any
non-zero value indicates a store mismatch misconfiguration.
Bytes sent and received need not correlate exactly with messages sent and
received on corresponding endpoints (for example, filtering and optimizations
can decouple these statistics).
Client Statistics for Multicast Transports
FTL gathers additional statistics for each multicast transport.
For all statistics in Table 54, tracking is per multicast transport, and cumulative
since transport creation.
Table 54 Client Statistics for Multicast Transports (Sheet 1 of 2)
Statistic Type
Description
Packets Sent
For each multicast transport in the client process, a counter of this type tracks
the outbound data packets on the transport.
This counter includes all outbound data packets (including original data
packets and retransmitted data packets).
Packets Received
For each multicast transport in the client process, a counter of this type tracks
the inbound data packets on the transport.
This counter includes all inbound data packets (including original data
packets and retransmitted data packets).
Packets
Retransmitted
For each multicast transport in the client process, a counter of this type tracks
outbound retransmission (packets retransmitted) on the transport.
If the transport retransmits a packet several times, it increments this counter
each time.
Packets Missed
For each multicast transport in the client process, a counter of this type tracks
retransmit requests (packets requested) for missed inbound packets on the
transport.
TIBCO FTL Administration
186
| Chapter 11
Client Monitoring
Table 54 Client Statistics for Multicast Transports (Sheet 2 of 2)
Statistic Type
Description
Packets Lost
Outbound
For each multicast transport in the client process, a counter of this type tracks
outbound dataloss (packets discarded) on the transport.
Packets Lost
Inbound
For each multicast transport in the client process, a counter of this type tracks
inbound dataloss (packets accounted lost) on the transport.
The transport accounts a packet as lost after its reliability constraints expire.
Store Server Statistics
See Persistence Server Statistics on page 288.
TIBCO FTL Administration
Web API 187
|
Web API
The client monitor web API consists of a single command, with one optional
parameter. This command queries the realm server for accumulated client
statistics:
http://realm_server_host:gui_port/cmd/monitor?start_after=sample_number
Table 55 Monitor API: Monitor Command, Parameters
Parameter
Description
realm_server_host:gui_port
Location of the realm server (see Interface Port on page 87).
start_after=sample_number
Optional.
When present, limit the response to items with sample strictly
greater than sample_number.
-1 is a special value, which requests all samples that the realm
server currently retains in its store.
When absent, the default value is -1.
The monitor command returns a response in JSON format. The response contains
of an array of clients; for each client, an array of statistics (in the series field);
and for each statistic, an array of samples (in the data field). For details, see tables
56–59.
Table 56 Monitor API: Response
Field
Description
clients
An array of client elements, each presenting the statistics for a single client
process; see Table 57
status
Query return status.
version
Realm server version.
TIBCO FTL Administration
188
| Chapter 11
Client Monitoring
Table 57 Monitor API: Client Element
Field
Description
connect_time
Time (in milliseconds since the epoch) at which the client connected to the realm
server.
id
Unique client ID number (assigned by the realm server).
series
An array of series elements, each presenting recent samples for a single statistic;
see Table 58.
Table 58 Monitor API: Series Element
Field
Description
context
Name of the object that this statistic monitors (for example, the name of an
endpoint, event queue, transport or application).
data
An array of data elements; see Table 59.
description
Name of the statistic type (mixed case string containing spaces).
type
Name of the statistic type (lower case string with underscores, and without
whitespace).
Table 59 Monitor API: Data Elements
Field
Description
sample
Sample number.
The sample number is a unique label for all the data values that a specific client
collects during a specific sample interval.
up_time
Time (in milliseconds) from the client’s initial connection to the realm server (see
connect_time) until it closed the sample interval.
value
Value of the statistic at the sample interval.
All values are 64-bit integers.
TIBCO FTL Administration
Web API 189
|
Example 2 Client Monitor Response from the Realm Server
{
"clients":[
{
"connect_time":1334693445686,
"id":71041,
"series":[
{
"context":"tibsend-endpoint",
"data":[
{
"sample":5,
"up_time":180010,
"value":179
}],
"description":"Messages Sent",
"type":"messages_sent"
},
{
"context":"shm-sendrecv-tport",
"data":[
{
"sample":5,
"up_time":180010,
"value":229
}],
"description":"Bytes Sent",
"type":"bytes_sent"
}]
}],
"status":"OK",
"version":"2.1"
}
TIBCO FTL Administration
190
| Chapter 11
Client Monitoring
TIBCO FTL Administration
| 191
Chapter 12
Rendezvous Adapter
This chapter describes a message adapter that can connect TIBCO FTL
applications with TIBCO Rendezvous® applications.
Readers of this chapter must already understand TIBCO Rendezvous messaging
technology.
Topics
•
Adapter Overview, page 192
•
Adapter Operation, page 194
•
Using tibrvadapter, page 196
•
Adapter Configuration, page 198
•
Adapter Administration—Realm, page 204
•
Adapter Subject Translation, page 205
•
Adapter Datatype Mapping, page 206
•
Request/Reply Interactions through the Adapter, page 209
•
Rendezvous Subjects, page 212
•
Restrictions, page 214
TIBCO FTL Administration
192
| Chapter 12
Rendezvous Adapter
Adapter Overview
The TIBCO Rendezvous adapter converts messages so FTL programs can
communicate with existing Rendezvous programs. The adapter translates
messages in both directions.
To understand the adapter, consider it from three perspectives:
•
FTL
•
Rendezvous
•
Adapter
Figure 15 Rendezvous Adapter
RV Client
Program
Client Connection
Rendezvous Adapter
FTL Transport
RV to FTL Translator
FTL
Program
RV
FTL
FTL
Program
FTL to RV Translator
RV Client
Program
FTL
Program
FTL
From the perspective of FTL applications (right side of Figure 15), the adapter
behaves like any other FTL application. It can publish messages and subscribe to
messages. It contacts the realm server to get formats and transports, just as any
other FTL application would. It communicates with other FTL applications over
FTL transports, as defined in the realm.
Rendezvous
From the perspective of Rendezvous applications (left side of Figure 15), the
adapter appears like a Rendezvous daemon—but its operation differs
significantly.
TIBCO FTL Administration
Adapter Overview 193
|
Rendezvous applications connect to the adapter as they would connect to a
daemon. The adapter delivers inbound messages to applications, and accepts
outbound messages from applications (as a daemon would). Furthermore, all the
clients that connect to the same Rendezvous adapter process can exchange
Rendezvous messages—just as if they were connected to the same daemon.
However, unlike a daemon, the adapter is not connected to any Rendezvous network.
The adapter neither transmits outbound Rendezvous messages on a network, nor
receives inbound Rendezvous messages from a network. On its Rendezvous side,
it communicates only with the clients that connect to it. (That is, it does not
communicate with other Rendezvous programs on the network that are not
themselves clients of the adapter.)
Adapter
Within the adapter itself, messages flow in two directions between its
Rendezvous side and its FTL side. FTL messages and Rendezvous messages are
very different, so the adapter translates these messages according to its
configuration.
The central portion of the adapter in Figure 15 on page 192 shows the two
translators, one for each direction.
TIBCO FTL Administration
194
| Chapter 12
Rendezvous Adapter
Adapter Operation
The adapter has three operating parts:
•
Start Phase
•
FTL Side
•
Rendezvous Side
Start Phase
1. The adapter start phase begins by reading the configuration file.
2. The adapter contacts the realm server to get the realm definition.
3. The adapter validates its configuration.
If the adapter configuration is incompatible with the realm in any way, or
violates other constraints, the adapter outputs an error and exits.
4. If the start phase succeeds in reaching this point, the adapter starts both its
FTL side and its Rendezvous side.
FTL Side
The FTL side creates one FTL subscriber for each endpoint in the adapter
configuration. These subscribers do not include content matchers; they receive all
messages on the endpoint.
Each time an FTL subscriber receives a message with a format specified in one of
the configuration’s from-FTL tags, the adapter attempts to translate it to a
Rendezvous message. The from-FTL tag guides the translation. The adapter first
finds the set of FTL fields that translate into the Rendezvous subject or inbox
name. Then the adapter translates each remaining field:
•
The FTL field name becomes a Rendezvous field name.
•
Every FTL field datatype either maps unambiguously to a Rendezvous field
datatype, or raises an error (for details, see Adapter Datatype Mapping,
page 206).
•
The FTL field value translates to the Rendezvous field value (of the
appropriate datatype).
After translating all the fields, the adapter transmits the translated Rendezvous
message to all its clients that have expressed interest in the translated Rendezvous
subject.
TIBCO FTL Administration
Adapter Operation 195
|
Rendezvous Side
The Rendezvous side begins by listening for connections from Rendezvous
clients. Clients connect to the adapter as they would connect to a Rendezvous
daemon.
The adapter processes each message that its Rendezvous clients send.
Each time a Rendezvous message matches the subject specification in one of the
configuration’s from-RV tags, the adapter attempts to translate it to an FTL
message. The from-RV tag guides the translation.
1. The adapter translates and stores the Rendezvous subject.
— If the Rendezvous subject is a multicast subject name, the adapter stores its
elements in FTL fields.
— If the Rendezvous subject is an inbox, the adapter maps it to an FTL inbox,
and stores the FTL inbox in an FTL field.
2. Then the adapter attempts to fill each of the remaining fields of the FTL
format with values from the Rendezvous message.
The adapter attempts to get a Rendezvous field with the same name as the
FTL field.
— If the Rendezvous field type maps to an FTL field datatype (see Adapter
Datatype Mapping, page 206), then the adapter translates the Rendezvous
field value to an FTL field value (of the appropriate datatype).
— If the Rendezvous field type does not map to an FTL field datatype (see
Adapter Datatype Mapping, page 206), then the adapter either discards the
entire message, or skips the field—depending on the discard-messages
attribute of the from-RV tag.
3. After translating all the FTL fields, the adapter publishes the translated FTL
message on the relevant FTL endpoints.
Rendezvous Unnamed Fields
Rendezvous messages support unnamed fields, accessed only by index or field
identifier. In contrast, FTL does not support unnamed fields.
The adapter does not translate unnamed fields. When translating a Rendezvous
message, the adapter ignores unnamed fields.
TIBCO FTL Administration
196
| Chapter 12
Rendezvous Adapter
Using tibrvadapter
Administrators use tibrvadapter (the adapter executable) to start the adapter
process.
Most command line parameters and options have both a short and a long form.
The command line parser accepts either form.
Table 60 tibrvadapter
Short
Long
Parameters
Description
-c
--config
path
Required.
The Rendezvous adapter reads its
configuration from the file at path.
-pf
--password-file
path
Optional. (Required for JAAS
authentication.)
When present, the Rendezvous adapter
reads a username and password from the
file at path, and authenticates itself to the
realm server using those credentials. For
details, see Password File on page 83.
-rs
--realmserver
URL
Optional.
When present, the Rendezvous adapter
connects to the realm server at URL
(overriding the URL in the configuration
file).
-s
--secondary-realm-server
URL
Optional.
When present, the Rendezvous adapter can
connect to the backup realm server at URL
(overriding the secondary-URL in the
configuration file).
-h
--help
TIBCO FTL Administration
Display a help message describing the
command line parameters and options.
Using tibrvadapter 197
|
Password File
If the realm server enables JAAS authentication and authorization, then you must
configure credentials for the Rendezvous adapter.
The adapter process authenticates itself using credentials that it reads from an
ASCII password file (see --password-file on page 196).
The password file consists of two lines. The first line contains the username. The
second line contains the password string.
The username must be in the JAAS authorization group ftl. For details, see
Realm Server Authentication and Authorization on page 82.
To hide the password from casual observers, you may first obfuscate the
password using tibrealmadmin --mangle.
Disabled
If an administrator disables an adapter process (using the realm server
monitoring interface), the adapter does not restart itself. You must restart it—
either manually, or through some automatic mechanism of the operating system
(for example, register it as an auto-start service).
TIBCO FTL Administration
198
| Chapter 12
Rendezvous Adapter
Adapter Configuration
The adapter configuration file is an XML document. This section presents the
XML tags and their meanings.
All attribute values must be strings, delimited by double-quote characters.
Table 61 Configuration Language for Rendezvous Adapter (Sheet 1 of 6)
XML Tag
Description
Top Level Tag
realm
Begin the adapter configuration. Exactly one.
•
URL
Required. The adapter contacts the realm server at this location. A
realm server must be listening at that location.
•
secondary-URL
Optional. If the regular realm server fails, the adapter can failover
to the backup realm server at this location.
•
application-name
Required. The adapter uses this name to get its tailored realm from
the realm server. The realm must define an application with this
name.
Contains: log (at most one), RV-clients (exactly one), service (at
least one), from-FTL (zero or more).
TIBCO FTL Administration
Adapter Configuration 199
|
Table 61 Configuration Language for Rendezvous Adapter (Sheet 2 of 6)
XML Tag
Description
Rendezvous Parameters
RV-clients
Configure parameters that affect the adapter’s behavior with respect to
its clients. Exactly one.
The adapter accepts the following attributes:
•
listen
Optional. When present, the adapter listens on this TCP port for
connection requests from Rendezvous client programs.
When listen is absent, the adapter listens for Rendezvous client
connections on port 7900.
•
max-consumer-buffer
Optional. When present, the adapter enforces this upper bound (in
bytes) on each consumer buffer (the outbound queue of translated
messages for a client transport). When the adapter produces
translated messages faster than the client consumes them, the
buffer overflows this size limit, and the adapter discards the oldest
messages to make space for new messages. The client transport
receives a CLIENT.SLOWCONSUMER advisory.
When absent or zero, the adapter does not enforce a size limit on
the consumer buffer. (However, a 60-second time limit on messages
still limits buffer growth, independently of this parameter.)
TIBCO FTL Administration
200
| Chapter 12
Rendezvous Adapter
Table 61 Configuration Language for Rendezvous Adapter (Sheet 3 of 6)
XML Tag
Description
Service
service
Configure a Rendezvous service, and adapter behavior with respect to
that service. At least one.
•
port
Required. The adapter maps this Rendezvous service to one or
more FTL endpoints, translating messages in both directions.
Contains: endpoint (at least one), from-RV (zero or more).
endpoint
At least one.
•
name
Required. The adapter maps this FTL endpoint to a Rendezvous
service (see the enclosing service tag), translating messages in
both directions.
When several endpoints are present, the adapter translates each
Rendezvous message from the service only once, and forwards the
translation to all of the endpoints.
TIBCO FTL Administration
Adapter Configuration 201
|
Table 61 Configuration Language for Rendezvous Adapter (Sheet 4 of 6)
XML Tag
Description
Translating Rendezvous to FTL
from-RV
Configure a translation from Rendezvous to FTL. Zero or more.
•
subject
Required. The adapter selects a subset of Rendezvous messages to
translate from the service. That is, the adapter translates only
messages with subjects that match this specification (which may
contain Rendezvous wildcard elements).
For important details, see Rendezvous Subjects on page 212.
•
format
Required. The adapter translates Rendezvous messages into this
managed FTL format.
•
parse-subject
Required. This string instructs the adapter as it parses the
Rendezvous message subject into fields in the target FTL format.
For the syntax and semantics of this string, see Parsing a
Rendezvous Subject to FTL Fields, page 205.
•
discard-messages
Optional. This value governs adapter behavior when it cannot
translate a Rendezvous field into an FTL field type.
When true, the adapter discards the entire Rendezvous message,
and does not produce an FTL translation.
When false, the adapter skips the offending field, and continues
its attempt to translate the rest of the message to FTL.
When absent, the default is false.
•
reply-field
Required for request/reply. Specifies a field name in the FTL
format. If the Rendezvous message includes a reply subject, the
adapter maps that Rendezvous inbox name to an FTL inbox, and
stores the FTL inbox in this FTL field. (Later, when an FTL program
sends a reply to that FTL inbox, the adapter translates the reply and
forwards the translation to the original Rendezvous inbox subject.)
TIBCO FTL Administration
202
| Chapter 12
Rendezvous Adapter
Table 61 Configuration Language for Rendezvous Adapter (Sheet 5 of 6)
XML Tag
Description
Translating FTL to Rendezvous
from-FTL
Configure a translation from FTL to Rendezvous. Zero or more.
•
format
Required. Specifies a managed FTL format. The adapter uses
information in this tag to translate all FTL messages with this
format.
•
assemble-subject
Required. This string instructs the adapter as it assembles
designated fields of an FTL message into a Rendezvous subject
name. For the syntax and semantics of this string, see Assembling
FTL Fields to a Rendezvous Subject, page 205.
•
reply-field
Required for request/reply. Specifies a field name in the FTL
format. When present, the adapter maps the inbox value of this
FTL field to a Rendezvous inbox reply subject, which it stores on
the Rendezvous message. (Later, when a Rendezvous program
sends a reply to that reply subject inbox, the adapter translates the
reply and forwards the translation to the original FTL inbox.)
•
expect-reply-format
Required for request/reply. Specifies an FTL format. When present,
the adapter remembers that the FTL requestor expects a reply
message with this format, and uses this format when translating
the reply.
•
discard-messages
Optional. This value governs adapter behavior when it cannot
translate an FTL field into a Rendezvous field type, and also when
it cannot translate a Rendezvous field in a reply message into an
FTL field type.
When true, the adapter discards the entire message, and does not
produce a translation.
When false, the adapter skips the offending field, and continues
its attempt to translate the rest of the message.
When absent, the default is false.
TIBCO FTL Administration
Adapter Configuration 203
|
Table 61 Configuration Language for Rendezvous Adapter (Sheet 6 of 6)
XML Tag
Description
Logging
log
Configure logging behavior. At most one.
•
level
Optional. This string determines the categories of errors that the
adapter logs. When absent, the default log level is info.
For more information about log level semantics, see Log Levels in
TIBCO FTL Development.
TIBCO FTL Administration
204
| Chapter 12
Rendezvous Adapter
Adapter Administration—Realm
The realm definition must satisfy all of these constraints to support the FTL side of
the adapter.
Communication through Transports
Administrators must configure transports to establish a bus to carry messages
between FTL programs and the FTL side of the adapter. The realm must configure
appropriate communications paths for each message stream.
Bidirectionality
During its start phase, the adapter creates a publisher and a subscriber for each of
its FTL endpoints. Administrators must ensure that the realm supports these
objects for each adapter endpoint. That is, for each adapter endpoint, the
connectors (in the adapter’s application instance definition) must cover (at least)
the send ability and the receive ability (even if you intend that messages flow
through the adapter in only one direction).
One-to-One Abilities
If the adapter uses an endpoint to forward one-to-one messages, then the
connectors (in the adapter’s application instance definition) that implement that
endpoint must cover either the send inbox ability, the receive inbox ability, or
both—as needed.
(In contrast, if the adapter does not forward one-to-one messages, then the
connectors need not cover either of these abilities.)
TIBCO FTL Administration
Adapter Subject Translation 205
|
Adapter Subject Translation
This section describes the translation between Rendezvous subjects and
designated FTL fields.
Parsing a Rendezvous Subject to FTL Fields
The parse-subject attribute of the from-RV configuration tag instructs the
adapter as it parses the Rendezvous message subject into fields in the target FTL
format.
•
Each element of this string has the form #n=field_name, where n represents the
subject element position in the Rendezvous subject, and field_name designates a
field in the target FTL format.
•
The comma (,) character separates the elements.
The adapter stores each subject element as the value of the corresponding FTL
field. The datatype of all of these fields must be TIB_FIELD_TYPE_STRING.
If the Rendezvous subject name has fewer elements than the parser requires, the
adapter discards the message immediately.
Assembling FTL Fields to a Rendezvous Subject
The assemble-subject attribute of the from-FTL configuration tag instructs the
adapter as it assembles designated fields of an FTL message into a Rendezvous
subject name.
•
Each element of this string has the form %field_name, where field_name designates
a field in the FTL format.
•
The dot (.) character separates the elements.
The adapter assembles a Rendezvous subject by concatenating the values of the
FTL fields, separating them with dots.
TIBCO FTL Administration
206
| Chapter 12
Rendezvous Adapter
Adapter Datatype Mapping
This section presents the details of adapter datatype mapping between FTL
messages and Rendezvous messages.
FTL to Rendezvous
The mapping from FTL message fields to Rendezvous message fields is
straightforward. Each FTL type maps to a Rendezvous type, according to
Table 62; the mapping is intuitive, and requires no conversion. Some FTL types do
not map to any Rendezvous representation; these fields raise an error (see Error
on page 208).
Table 62 Datatype Mapping: FTL to Rendezvous
FTL Type
Rendezvous Type
TIB_FIELD_TYPE_OPAQUE
TIBRVMSG_OPAQUE
TIB_FIELD_TYPE_LONG
TIBRVMSG_I64
TIB_FIELD_TYPE_LONG_ARRAY
TIBRVMSG_I64ARRAY
TIB_FIELD_TYPE_DOUBLE
TIBRVMSG_F64
TIB_FIELD_TYPE_DOUBLE_ARRAY
TIBRVMSG_F64ARRAY
TIB_FIELD_TYPE_STRING
TIBRVMSG_STRING
TIB_FIELD_TYPE_STRING_ARRAY
TIBRVMSG_STRINGARRAY
TIB_FIELD_TYPE_MESSAGE
Error
TIB_FIELD_TYPE_MESSAGE_ARRAY
Error
TIB_FIELD_TYPE_INBOX
Error
TIB_FIELD_TYPE_DATETIME
TIBRVMSG_DATETIME
TIB_FIELD_TYPE_DATETIME_ARRAY
Error
TIBCO FTL Administration
Adapter Datatype Mapping 207
|
Rendezvous to FTL
Because Rendezvous supports a very rich set of datatypes, while FTL supports a
deliberately narrow set of datatypes, the mapping from Rendezvous message
fields to FTL message fields is more complicated. The adapter coerces several
Rendezvous types into the same FTL type. Some Rendezvous types do not map to
any FTL representation; these fields raise an error (see Error on page 208).
Table 63 Datatype Mapping: Rendezvous to FTL (Sheet 1 of 2)
Rendezvous Type
FTL Type
TIBRVMSG_OPAQUE
TIB_FIELD_TYPE_OPAQUE
TIBRVMSG_BOOL
Error
TIBRVMSG_I8
TIB_FIELD_TYPE_LONG
TIBRVMSG_I16
TIBRVMSG_I32
TIBRVMSG_I64
TIBRVMSG_U8
TIBRVMSG_U16
TIBRVMSG_U32
TIBRVMSG_U64
Error
TIBRVMSG_I8ARRAY
TIB_FIELD_TYPE_LONG_ARRAY
TIBRVMSG_I16ARRAY
TIBRVMSG_I32ARRAY
TIBRVMSG_I64ARRAY
TIBRVMSG_U8ARRAY
TIBRVMSG_U16ARRAY
TIBRVMSG_U32ARRAY
TIBRVMSG_U64ARRAY
Error
TIBRVMSG_F32
TIB_FIELD_TYPE_DOUBLE
TIBRVMSG_F64
TIBRVMSG_F32ARRAY
TIB_FIELD_TYPE_DOUBLE_ARRAY
TIBRVMSG_F64ARRAY
TIBRVMSG_STRING
TIB_FIELD_TYPE_STRING
TIBRVMSG_STRINGARRAY
TIB_FIELD_TYPE_STRING_ARRAY
TIBRVMSG_MSG
Error
TIBCO FTL Administration
208
| Chapter 12
Rendezvous Adapter
Table 63 Datatype Mapping: Rendezvous to FTL (Sheet 2 of 2)
Rendezvous Type
FTL Type
TIBRVMSG_MSGARRAY
Error
TIBRVMSG_DATETIME
TIB_FIELD_TYPE_DATETIME
All other Rendezvous types
Error
Error
When a datatype mapping raises an error, the adapter responds according to the
discard-messages attribute (in the from-RV or from-FTL tag). If the value of
discard-messages is true, then the adapter discards the entire message.
Otherwise, the adapter skips the offending field and continues translating the
message.
TIBCO FTL Administration
Request/Reply Interactions through the Adapter 209
|
Request/Reply Interactions through the Adapter
Request/reply interactions involve complex configuration constraints. This
section presents the three possible situations (these three are the only possible
situations).
Primary FTL Request, Secondary Rendezvous Reply to an Inbox
An FTL program sends a request message. The adapter detects that it is a request
message because it meets all of these criteria:
•
The format of the message matches the format of a from-FTL configuration
tag.
•
The reply-field of that from-FTL tag specifies the name of an FTL field—
which we call the reply field.
•
The realm defines the format such that the reply field has type
TIB_FIELD_TYPE_INBOX.
•
That reply field is present in the message.
•
The expect-reply-format of the from-FTL tag specifies the name of an FTL
format—which we call the reply format. The requestor expects a reply message
in this reply format. (The realm must define the reply format.)
The adapter arranges a mechanism through which a Rendezvous program can
reply to the FTL request.
1. The adapter gets the value of the reply field—namely, the FTL inbox where
the requestor awaits a reply.
2. The adapter maps that FTL inbox to a Rendezvous inbox (within the adapter).
3. In the Rendezvous translation of the request message, the adapter sets the
reply subject to that Rendezvous inbox.
4. Later, when a Rendezvous program sends a reply to that inbox, the adapter
receives it, translates it to an FTL message using the reply format, and
forwards it to the FTL inbox where the requestor awaits the reply.
To configure this case, ensure that the adapter configuration meets the five criteria
in the above bullets.
TIBCO FTL Administration
210
| Chapter 12
Rendezvous Adapter
Secondary Rendezvous Request to an Inbox, Tertiary FTL Reply
The Rendezvous reply (in the previous case) could itself be a secondary request in
a longer chain of point-to-point messages. The adapter detects this situation
because the secondary message meets all of these criteria:
•
The adapter receives the secondary message at an adapter inbox, so the
message must be a Rendezvous reply to an FTL request.
•
The reply subject of the secondary Rendezvous message contains a
Rendezvous inbox name, so the sender must be awaiting a tertiary reply.
Rendezvous Adapter
RV Client
Program
FTL
Program
2a A Rendezvous
client receives
the primary
request, and
sends a reply
that is itself a
secondary
request.
2b The adapter
translates the
secondary
request, and sets
the reply field.
1b The adapter
translates the
primary request,
and sets the
reply subject.
3b The adapter
translates the
tertiary reply.
1a An FTL program
sends a primary
request.
3a An FTL program
receives the
secondary
request, and
sends a tertiary
reply.
The adapter repurposes part of the existing mechanism (from the primary
request) so an FTL program can send a tertiary reply to the secondary
Rendezvous request. The part it repurposes is the reply field—an FTL field name,
specified as the value of the reply-field of the from-FTL configuration tag (the
same tag that governed translation of the primary FTL request message).
1. The adapter gets the reply subject—namely, the Rendezvous inbox name
where the requestor awaits a reply.
2. The adapter maps that Rendezvous inbox to an FTL inbox (within the
adapter)—which we call the reply inbox.
3. In the FTL translation of the secondary request message, the adapter stores the
reply inbox in the reply field.
TIBCO FTL Administration
Request/Reply Interactions through the Adapter 211
|
4. Later, when an FTL program sends its tertiary reply to the reply inbox, the
adapter receives it, translates it to a Rendezvous message, and forwards it to
the reply subject (that is, the Rendezvous inbox where the secondary
requestor awaits the tertiary reply).
Because you have already configured the adapter to translate the primary request
(see Primary FTL Request, Secondary Rendezvous Reply to an Inbox, page 209),
you do not need any additional configuration to forward the secondary request,
nor to forward the tertiary reply.
Nonetheless, if the format of the tertiary reply differs from the format of the
primary request, you must configure a separate from-FTL tag to translate that
format. (This case has the same form as the configuration for the primary request.)
Primary Rendezvous Request to a Subject, Secondary FTL Reply to an Inbox
A Rendezvous program sends a request message to a multicast subject (not to an
inbox). The adapter detects that it is a multicast request message because it meets
all of these criteria:
•
The subject of the message matches the subject attribute of a from-RV
configuration tag.
•
The reply-field attribute of that from-RV tag specifies the name of an FTL
field—which we call the reply field.
•
The realm defines the format such that the reply field has type
TIB_FIELD_TYPE_INBOX.
The adapter arranges a mechanism through which an FTL program can reply to
the Rendezvous request.
1. The adapter gets the reply subject—namely, the Rendezvous inbox name
where the requestor awaits a reply.
2. The adapter maps that Rendezvous inbox to an FTL inbox (within the
adapter)—which we call the reply inbox.
3. In the FTL translation of the request message, the adapter stores the reply
inbox in the reply field.
4. Later, when an FTL program sends a reply to that reply inbox, the adapter
receives it, translates it to a Rendezvous message, and forwards it to the reply
subject (that is, the Rendezvous inbox where the requestor awaits the reply).
To configure this case, ensure that the adapter configuration meets the three
criteria in the above bullets.
TIBCO FTL Administration
212
| Chapter 12
Rendezvous Adapter
Rendezvous Subjects
The adapter carefully validates the subject attribute of each from-RV tag, using
the following rules:
•
Within the scope of a service tag, the subjects of the from-RV tags must not
collide with one another. (This restriction does not apply between from-RV
tags that are in different service tags.)
•
If a literal subject is identical to a previous literal subject, then they collide (not
permitted).
•
If a literal subject matches a previous wildcard subject, then they do not
collide (permitted).
•
If a wildcard subject matches a previous literal subject, then they do not
collide (permitted).
•
If a wildcard subject matches a previous wildcard subject, then they collide
(not permitted).
Examples
Table 64 Validating Rendezvous Subjects
TIBCO FTL Administration
Subject 1
Subject 2
Conformance
a.b
a.b.c
Permitted
a.b
a.*
Permitted
a.*
a.b
Permitted
a.b
a.>
Permitted
a.>
a.b
Permitted
a.b
a.b
Collide
a.*
a.>
Collide
a.>
a.*
Collide
a.*
*.b
Collide
*.b
a.*
Collide
Rendezvous Subjects 213
|
Messages that Match Two Rendezvous Subjects
The above restriction against colliding subjects helps ensure that the adapter
translates each Rendezvous message at most once.
The adapter forbids combinations in which two wildcard subjects collide,
preventing ambiguity.
The adapter permits combinations in which a message might match both a literal
subject and a wildcard subject. In this situation, the adapter translates the
message according to the from-RV tag that specified the literal subject.
TIBCO FTL Administration
214
| Chapter 12
Rendezvous Adapter
Restrictions
•
The adapter does not support dynamic formats. It can translate an FTL
message only if it uses a pre-loaded format. It can translate a Rendezvous
message only into a managed FTL format.
•
The adapter does not translate FTL messages of types
TIB_BUILTIN_MSG_FMT_OPAQUE (nor TIB_BUILTIN_MSG_FMT_KEYED_OPAQUE).
Instead, define a managed format with one opaque field.
TIBCO FTL Administration
| 215
Chapter 13
Groups of Applications
Applications can use the group facility to coordinate fault-tolerant operation, or to
distribute operating roles among application processes. This chapter presents the
group facility for administrators.
Before reading this chapter, we recommend that you first read the corresponding
chapter in TIBCO FTL Development.
Topics
•
Administrative Overview, page 216
•
Using the Group Setup Script, page 218
Monitoring Interface
•
Group Server Monitoring Page, page 220
TIBCO FTL Administration
216
| Chapter 13
Groups of Applications
Administrative Overview
A set of application processes can join a group. Each member of a group receives
an ordinal—that is, a number representing its current position within the group.
Application program logic uses the ordinal to select one of several possible
operating roles. A group server tracks the group members as processes join and
leave the group, and as they disconnect from and reconnect to the server. At each
of these events, the group facility revises ordinals to restore a one-to-one mapping
between n members and the positive integers [1,n].
Developers are responsible for the names of groups, and the API calls that join
groups. Administrators are responsible for configuring group communication
and running the group servers.
Group Communication
Within each member process, the group library connects to the group server.
While connected, the member and the group server exchange periodic protocol
messages. When disconnected, the member initiates reconnection.
To reduce the cost and complexity of this required communication (and for best
performance), we recommend that the group server and all group members run
in nearby geographical proximity to one another.
Group protocol communication depends on application definitions that define
endpoints and transports that connect members to the group server, and the
formats of group protocol messages.
To enable group communication, you must first add these definitions to the realm
definition, using the group setup script (see Using the Group Setup Script on
page 218). These application definitions are not visible in the realm server
configuration interface.
Running the Group Server
Beyond configuring group communication in the realm, the group server does not
require any further explicit administrative action.
The group server runs inside realm server processes. (The clients summary page
displays the group server as an internal client; you cannot disable nor purge it.)
The group server and all the group members that it coordinates must run within
one local area network. We do not recommend using the group facility across
routers and WANs.
TIBCO FTL Administration
Administrative Overview 217
|
Fault Tolerance
The group server is automatically fault-tolerant, if and only if both of these
conditions are true:
•
The primary realm server has a backup server.
•
The administrator supplied the backup server host and port information to
the group setup script when enabling groups.
The group server runs inside the primary realm server and (optionally) its backup
server—that is, the group server does not run in satellites nor in their backups.
Each realm server automatically determines whether it can and should run an
embedded group server—based on the realm configuration, and on the server’s
role (see Affiliated Realm Servers on page 75).
Group servers within a primary realm server and its backup server automatically
coordinate for fault-tolerant operation. Group members automatically failover
between these two servers.
Group members that failover to a secondary group server (within a backup realm
server process) remain with that group server (until it fails). In contrast, clients
that have migrated to a backup realm server automatically return to the regular
realm server when it again becomes available.
This can result in a situation where clients depend on regular server A for realm
information, but as group members they depend on backup server B to
coordinate groups. Although this divergence might seem counterintuitive, it is
the expected behavior.
TIBCO FTL Administration
218
| Chapter 13
Groups of Applications
Using the Group Setup Script
Administrators use init_groups.py (the group setup script) to modify the realm
definition within a running realm server, in order to enable groups.
Before running this script, ensure that your execution path environment variable
includes the product’s bin directory (to access the script).
init_groups.py [-u username -pw
[-a]
Syntax
password]
realm_svr_URL
primary_host:primary_port
[backup_host:backup_port]
[DELETE]
The script uses its arguments to define applications within the realm:
_GroupServerApp and _GroupClientApp. (If application definitions with these
names are already present in the realm, then the group setup script deletes them,
and replaces them with new definitions incorporating the script’s current
arguments.)
Table 65 Group Setup Script—Parameters (Sheet 1 of 2)
Parameter
Argument
Description
--user
-u
username
Credentials. Optional. (Required for JAAS
authentication.)
--password
-pw
password
When present, the group setup script authenticates itself
to the realm server using these credentials.
When present, these credentials must precede all
positional arguments.
When JAAS is enabled, username must be in authorization
group ftl-admin.
TIBCO FTL Administration
Using the Group Setup Script 219
|
Table 65 Group Setup Script—Parameters (Sheet 2 of 2)
Parameter
Argument
Description
Auto-Proceed. Optional.
-a
When present, the script resolves issues during the
deploy transaction by automatically proceeding (despite
any unsuccessful tests). For background information, see
The Deploy Transaction on page 112, and Unsuccessful
Test on page 114.
When absent, the script resolves issues by canceling the
deploy transaction.
realm_svr_URL
Realm server URL. Required.
The script contacts the realm server at this location, and
modifies its realm definition. Supply the location of the
primary realm server (see Connect Port on page 86).
primary_host:primary_port
Primary group server host:port. Required.
The hostname of the primary group server must be
identical to the hostname of the primary realm server.
Group members contact the primary group server at this
host and port.
backup_host:backup_port
Backup group server host:port. Optional.
The hostname of the backup group server must be
identical to the hostname of the primary realm server’s
backup server.
Group members contact the backup group server at this
host and port.
When present, the script deletes all group definitions
from the realm—which disables groups. See Disabling
Groups, below.
DELETE
Disabling Groups
To disable groups, execute this command line:
init_groups.py [-u
username -p password] realm_svr_URL DELETE
TIBCO FTL Administration
220
| Chapter 13
Groups of Applications
Group Server Monitoring Page
The Group Server monitoring page presents the status of the group server.
For descriptions of these fields, see Table 45, Client Page, on page 162.
This page also presents client monitoring statistics from the group server (see
Client Statistics on page 184).
TIBCO FTL Administration
| 221
Chapter 14
Transport Bridge
The transport bridge is an executable component that forwards messages among
transports.
Topics
•
Overview, page 222
•
Use Cases, page 224
•
Topologies, page 228
•
Transport Restrictions, page 230
•
Configuring Bridges, page 231
•
Using the Transport Bridge Executable, page 232
•
Fault Tolerance, page 235
•
Bridges among Dynamic TCP Meshes, page 236
•
Bridge Setup Script for Dynamic TCP Meshes, page 238
Configuration Interface
•
Bridges Summary, page 241
•
Configuring a Bridge Definition, page 242
Monitoring Interface
•
Bridge Monitoring Summary, page 244
•
Bridge Status, page 245
Command Line Script
•
Bridge Setup Script, page 246
TIBCO FTL Administration
222
| Chapter 14
Transport Bridge
Overview
A transport bridge is a specialized daemon process that efficiently forwards
messages among sets of transports.
Functionality
You can configure a bridge with two or more terminals, called transport sets (or
more briefly, sets). You can configure each set with one or more transports.
A transport bridge forwards all messages in all directions. Whenever a message
arrives on any one of its transports, it immediately republishes that message on all
of the transports in all of the other sets. (That is, it does not forward the message on
other transports within the same set.)
The transports can be of the same type, or they can be of different transport types
(for example, you can bridge between shared memory and RDMA transports).
A transport bridge operates completely within a single realm. It forwards
messages among transports within the realm—but it cannot forward messages
between two different realms.
Transport bridges can forward one-to-many messages and one-to-one messages.
Transport bridges support one-to-one messages on transports that support inbox
abilities. However, bridges support this feature only when both clients use the
FTL library from release 2.x (or later); bridges do not support one-to-one messages
when clients use the library from release 1.1 (or earlier).
You can run two (or more) bridge processes for fault-tolerant operation. Although
this feature ensures automatic and quick recovery, failover might leave some
messages unforwarded.
Design Features
Low latency is a key feature of the transport bridge. The transport bridge
implementation is extremely fast and efficient. It forwards packets immediately—
even before all the packets of a message have arrived.
Transport bridges are transparent to your application programs. Clients do not
need to do anything different to communicate across a bridge, nor can they detect
whether a bridge mediates between them.
TIBCO FTL Administration
Overview 223
|
Latency
Although the transport bridge is efficient, it still adds an extra layer between
sending and receiving processes, which necessarily increases message latency.
In some situations, sending on several transports could result in less additional
latency than a bridge (at the cost of limiting maximum throughput). We
recommend empirical testing to optimize results for your specific application
needs and resources. For more information, see Multiple Transports on page 28.
TIBCO FTL Administration
| Chapter 14
Transport Bridge
Use Cases
Shifting Fanout for Efficiency
You can use a transport bridge to shift fanout closer to subscribers, for more
efficient use of WAN bandwidth. For example, in Figure 16, a publisher in New
York communicates with several subscribers in Boston using a static TCP
transport. In this situation, each subscriber initiates a separate connection to the
publisher, and each message crosses the WAN repeatedly (once per connection).
This duplication of data over a slow or expensive link could be undesirable.
Cli
en
T1
E1
E2
t
Boston
Client
T2
New York
E2
TCP
Bus
T2
Serv
er
Figure 16 Fanout over WAN (without Transport Bridge)
T2
E2
Client
Instead consider the arrangement of Figure 17, in which a transport bridge in
Boston connects to the New York publisher only once using a static TCP transport
over a WAN, and forwards messages to many subscribers using LAN bandwidth.
T4
E4
E4
Clie
nt
New York
TIBCO FTL Administration
T4
Boston
Client
T2
T3
T1
RDMA
Bus
t
Clien
Transport Bridge
E4
TCP
Bus
T4
E1
Figure 17 Transport Bridge: Fanout after WAN
Serv
er
224
Use Cases 225
|
Extending the Capabilities of a Transport
You can also use a transport bridge to extend the capabilities of a transport. For
example, in Figure 18, a publisher communicates with several subscribers on a
single host computer using a shared memory transport T1. You can communicate
with subscribers on other computers across a LAN by configuring a multicast
transport T2, and a transport bridge between T1 and T2. (The transport bridge
must run on the computer that hosts the shared memory segment of T1.)
Figure 18 Transport Bridge: Extending Capabilities
SM1
SS1
P
E2
T2
T1
T1
SM
2
E2
E1
E1
T2
T1
E1
SS4
T2
E2
B
T2
T1
A
mcast
Bus
SM3
Transport Bridge
shm
Bus
T2
SM
4
E2
T1
T2
E2
SM 5
E1
SS2
T1
E1
SS3
Multiple Transports
Until this point, we have presented examples in which the bridge forwards
between two transport sets, each containing only one transport. You can also
configure a bridge with several transports in a set.
For example, return to Figure 18, and consider that an enterprise might
communicate over several multicast groups (not just one). To forward messages
on all of them, the bridge requires a separate transport for each multicast send
group. You can configure the bridge to include all of those multicast transports in
transport set B.
TIBCO FTL Administration
| Chapter 14
Transport Bridge
A bridge does not forward messages among the several transports in a transport
set—only from the transport set where the message arrives, to all the transports in
all the other sets. Consider the implications in the context of the current example.
When a message arrives on T1, the bridge forwards it on all the transports in
transport set B. When a message arrives on any one of the multicast transports in
B, the bridge does not forward the message on any of the other multicast
transports in B—it forwards only on T1 (which is in set A).
The transports in a set need not be of the same transport type.
Crossing the Boundary of Shared Memory
Access to a shared memory transport is limited to processes running on the
computer that hosts the transport’s shared memory segment. To escape this
natural boundary, you can arrange two transport bridges in series. Figure 19 on
page 226 depicts such an arrangement, connecting shared memory transports on
separate host computers.
One transport bridge must run on the computer that hosts the shared memory
segment of T1, while the other bridge must run on the computer that hosts the
shared memory segment of T4. The two bridges communicate with one another
over a fast RDMA transport.
Figure 19 Transport Bridge: Connecting Shared Memory on Two Computers
SS1
E1
Host 1
SS6
Host 2
E1
T1
T4
T4
Transport Bridge
shm
Bus
T4
T3
T1
T2
Transport Bridge
RDMA
Bus
T1
T4
E1
SS
9
T1
E1
E1
SS 2
SS3
SS8
See Also
E1
E1
T1
shm
Bus
SS7
E1
P
T4
226
Latency on page 223.
TIBCO FTL Administration
Use Cases 227
|
Isolated Spokes
Transport bridges can connect partner enterprises that must cooperate, and yet
remain separate. Figure 20 on page 227 shows a central control hub for the main
enterprise, with spokes to partner enterprises. Although each partner enterprise
must share data with the main hub, the partners must not share data with one
another.
Figure 20 Transport Bridge: Common Hub with Mutually-Isolated Spokes
Hub Host
RDMA
Hub
Bus
Hub
Transport
Bridge
TCP
Spoke
Bus 1
Spoke
Transport
Bridge
shm
Local
Bus
TCP
Spoke
Bus 2
Spoke
Transport
Bridge
RDMA
Local
Bus
TCP
Spoke
Bus 3
Spoke
Transport
Bridge
mcast
Local
Bus
Spoke Host 1
Spoke Host 2
Spoke Host 3
This use case is interesting in two respects:
•
It is an example of a complex bridge topology (see Hub and Spoke Bridges on
page 229).
•
It uses transport sets to isolate data. The hub transport bridge configures the
RDMA hub transport in one transport set, and collects all the spoke transports
in a second transport set. This configuration forwards data from the hub bus
to all spoke buses, and forwards data from each spoke bus to the hub bus.
Meanwhile, it isolates data from the various spoke buses, so it does not
forward to other spokes.
TIBCO FTL Administration
| Chapter 14
Transport Bridge
Topologies
Transport bridges support only the three topologies presented in this section.
Any topology that includes any kind of loop is prohibited.
One Bridge
The basic topology is a single bridge between two transports; see Figure 21.
Figure 21 Transport Bridge Topology—One Bridge
Host 1
Host 2
T1
T2
Transport Bridge
Bus
Bus
You may extend this topology by adding transport sets, or by adding transports
to the transport sets.
Two Serial Bridges
Two serial bridges are useful for bridging shared memory transports on different
hosts; see Figure 22. (For more information about this use case, see Crossing the
Boundary of Shared Memory on page 226.)
Figure 22 Transport Bridge Topology—Two Bridges
Host 1
Host 2
T3
T1
Bus
Transport Bridge
Bus
TIBCO FTL Administration
T4
Transport Bridge
T2
228
Bus
Topologies 229
|
You may extend this topology by adding transport sets, or by adding transports
to the transport sets.
You may not extend this topology by adding a third serial bridge.
Hub and Spoke Bridges
Hub and spoke bridges are useful for connecting partner enterprises, especially at
remote sites (for more information, see the use case Isolated Spokes on page 227).
Figure 23 Transport Bridge Topology—Hub and Spoke Bridges
Hub Host
Hub
Bus
Hub
Transport
Bridge
Spoke Hosts
Spoke
Bus 1
Spoke
Transport
Bridge
Local
Bus
Spoke
Bus 2
Spoke
Transport
Bridge
Local
Bus
Spoke
Bus 3
Spoke
Transport
Bridge
Local
Bus
You may extend this topology by adding transport sets, or by adding transports
to the transport sets. You may extend this topology by adding more spokes (each
consisting of a spoke bus, a spoke bridge, and a local bus).
You may not extend this topology by adding a third serial bridge—neither to the
hub bus, nor to any local bus. You may not extend this topology by adding a
second branching spoke bridge to any spoke bus.
TIBCO FTL Administration
230
| Chapter 14
Transport Bridge
Transport Restrictions
•
Transport bridges support only bidirectional transports. For example, a bridge
cannot support a multicast transport configured with a send group but
without a listen group (nor vice versa).
•
Transport bridges support only non-blocking transports. A transport that
blocks could impede data flow through the bridge.
TIBCO FTL Administration
Configuring Bridges 231
|
Configuring Bridges
You can arrange several bridges within a realm. Each bridge requires a separate
bridge definition with a distinct bridge name, at least two transport sets, and at
least one transport in each set.
Adding Bridge Definitions
To configure bridge definitions, administrators can use either the realm server’s
bridge configuration GUI (see Bridges Summary on page 241 and Configuring a
Bridge Definition on page 242) or the init_bridge.py script (see Bridge Setup
Script on page 246).
Configuring a bridge definition (in either way) automatically embodies the bridge
in a bridge application definition within the realm. Bridge applications supply the
bridge server processes with instructions for binding their transports and
endpoints. (The applications summary page displays bridge applications as
internal applications; you cannot modify them through the application
configuration GUI—only through the bridge configuration GUI.)
Use Transports Uniquely
A transport can be in at most one transport set within a bridge definition.
You may use the same transport definition in more than one bridge. However, it is
your responsibility to avoid creating a bridge topology that contains loops.
TIBCO FTL Administration
232
| Chapter 14
Transport Bridge
Using the Transport Bridge Executable
Administrators use tibbridge (the transport bridge command line executable) to
start a bridge process. (The clients summary page displays a bridge process as an
internal client; you cannot disable nor purge it.)
Each bridge process can implement one or more bridge objects (as defined in the
realm). These bridge objects are independent—even though one process
implements them all, messages do not cross from one bridge to another.
If the bridge objects (or the transport definitions that they use) change, you must
explicitly restart the affected bridge process.
Table 66 tibbridge Executable (Sheet 1 of 2)
Parameter
Arguments
Description
--realmserver
URL
Required.
URL of the realm server.
-rs
The bridge process contacts the realm server at this
location to receive its bridge objects. Supply the
location of the primary realm server or a satellite
server (see Connect Port on page 86).
--secondary-realm-server
-s
URL
Optional.
URL of the backup realm server.
If the regular realm server is unavailable, the bridge
process contacts the backup realm server at this
location to receive its bridge objects. Supply the
location of the backup realm server (see Connect
Port on page 86).
TIBCO FTL Administration
Using the Transport Bridge Executable 233
|
Table 66 tibbridge Executable (Sheet 2 of 2)
Parameter
Arguments
Description
--name
bridge_name
Optional (zero or more).
Bridge name.
-n
A bridge process implements one or more bridge
objects.
You may supply the name of a bridge object that this
process implements.
To implement several bridge objects in one process,
supply each bridge name as a separate command
line argument (that is, introduce each one with the
--name parameter).
When absent, the process implements only the
bridge named default.
--trace
level
Optional.
When present, the bridge process outputs trace
messages to stderr. You may specify any of the
standard log level strings (see Log Levels in the
book TIBCO FTL Development).
-t
When omitted, the process does not output trace
messages.
Print command line usage.
--help
-h
--password-file
-pf
path
Optional. (Required for JAAS authentication.)
When present, the bridge process reads a username
and password from the file at path, and authenticates
itself to the realm server using those credentials. For
details, see Password File on page 83.
Password File
If the realm server enables JAAS authentication and authorization, then you must
configure credentials for the bridge process.
The bridge process authenticates itself to the realm server using credentials that it
reads from an ASCII password file (see --password-file on page 233).
TIBCO FTL Administration
234
| Chapter 14
Transport Bridge
The password file consists of two lines. The first line contains the username. The
second line contains the password string.
The username must be in the JAAS authorization group ftl. For details, see
Realm Server Authentication and Authorization on page 82.
To hide the password from casual observers, you may first obfuscate the
password using tibrealmadmin --mangle.
TIBCO FTL Administration
Fault Tolerance 235
|
Fault Tolerance
You can run two (or more) bridge processes for fault-tolerant operation. Although
this feature ensures automatic and quick recovery, failover might leave some
messages unforwarded.
Fault-tolerant bridges rely on the group facility. When the group facility is
enabled, bridge processes use it to coordinate fault tolerance. (If the group facility
is not enabled, each bridge process operates as an independent entity.)
Task J Arranging a Fault-Tolerant Transport Bridge
1. Enable the group facility; see Using the Group Setup Script on page 218.
2. Ensure appropriate network connectivity, so that each bridge process can
communicate with the group server over a static TCP transport.
3. Configure bridges; see Configuring Bridges on page 231.
4. Start two bridge processes on separate host computers. Specify the same
command line arguments to each process (see Using the Transport Bridge
Executable on page 232). The FTL group facility automatically enables only
one bridge process at a time.
Shared Memory Transports and Fault-Tolerant Bridges
Shared memory transports require that all client processes run on the same host
computer as the shared memory segment; as a result, when bridging shared
memory transports, you cannot use redundant processes on separate host
computers as a fault tolerance mechanism. Instead you could arrange fault
tolerance by immediately and automatically restarting the bridge process.
TIBCO FTL Administration
236
| Chapter 14
Transport Bridge
Bridges among Dynamic TCP Meshes
A dynamic TCP transport establishes a bus with full mesh topology among all its
endpoints—as long as their applications connect to a single realm server process.
When your enterprise uses satellite realm servers, a single dynamic TCP transport
establishes a separate mesh for each satellite; each mesh includes all the
applications that are clients of one of the affiliated realm servers. You can use a
transport bridge to link those otherwise disjoint meshes.
It is possible to define a transport bridge for dynamic TCP meshes similarly to
other bridges. However, structural constraints on such a bridge allow us to
simplify its definition. We offer a specialized setup script that takes advantage of
that structure; see Bridge Setup Script for Dynamic TCP Meshes on page 238.
For more background information, see Dynamic TCP Transport on page 60.
Principles of Operation
Figure 24 Bridging for Dynamic TCP Meshes
Satellite 1 Location
Primary Location
Bridge Server
P
ir C
Pa
ne
on
on
cti
Bridge Server
S1
Satellite 1
Mesh
Bridge Server
S1 Backup
Primary
Mesh
Bridge Server
P Backup
Satellite 2 Location
Bridge Server
S2
Bridge Server
S2 Backup
Satellite 2
Mesh
Figure 24 depicts a general use case of a dynamic TCP bridge. This enterprise
includes three locations—the primary location (left) and two satellite locations
(right)—each with an affiliated realm server process (not shown). The realm
defines a single dynamic TCP transport, which establishes a mesh at each
location; the meshes are disjoint from one another.
TIBCO FTL Administration
Bridges among Dynamic TCP Meshes 237
|
To bridge the meshes, we need a bridge server at each location (orange), and a
bridge definition that links the locations using a static TCP transport. The static
TCP transport connects from the primary bridge server to each of the satellite
bridge servers (solid lines).
The fault-tolerant scenario adds a backup bridge server at each location (light
orange). Both bridge servers at the primary location connect to both bridge
servers at each satellite location (solid lines and dashed lines).
TIBCO FTL Administration
238
| Chapter 14
Transport Bridge
Bridge Setup Script for Dynamic TCP Meshes
Administrators can use init_dtcp_bridge.py to define transport bridge objects
that link dynamic TCP meshes in remote locations.
For background information, see Bridges among Dynamic TCP Meshes on
page 236.
Before running this script, ensure that your execution path environment variable
includes the product’s bin directory (to access the script).
Syntax
init_dtcp_bridge.py [-u
[-a]
[-d]
username -pw password]
realm_svr_URL
dtcp_transport_name
bridge_tcp_port
{ satellite_bridge_host[:backup_satellite_bridge_host] }+
Table 67 init_dtcp_bridge Script (Sheet 1 of 2)
Parameter
Arguments
Description
--user
-u
username
Credentials. Optional. (Required for JAAS
authentication.)
--password
-pw
password
When present, the bridge setup script authenticates itself
to the realm server using these credentials.
When present, these credentials must precede all
positional arguments.
When JAAS is enabled, username must be in authorization
group ftl-admin.
-a
Auto-Proceed. Optional.
When present, the script resolves issues during the
deploy transaction by automatically proceeding (despite
any unsuccessful tests). For background information, see
The Deploy Transaction on page 112, and Unsuccessful
Test on page 114.
When absent, the script resolves issues by canceling the
deploy transaction.
TIBCO FTL Administration
Bridge Setup Script for Dynamic TCP Meshes 239
|
Table 67 init_dtcp_bridge Script (Sheet 2 of 2)
Parameter
Arguments
Description
Delete a bridge. Optional.
-d
When present, the script deletes the definition from the
realm (instead of adding it). The subsequent parameters
indicate the bridge definition to delete; they must exactly
match the parameters of an existing bridge definition.
This command also deletes transports that the script
created automatically when defining the bridge.
realm_svr_URL
Realm server URL. Required.
The script contacts the realm server at this location, and
modifies its realm definition. Supply the location of the
primary realm server (see Connect Port on page 86).
dtcp_transport_name
Dynamic TCP transport name. Required.
The script defines a bridge object that links the otherwise
disjoint meshes that arise from this transport. This
transport must already be defined in the realm.
bridge_tcp_port
TCP port number. Required.
The script automatically defines a static TCP transport
that listens and connects on this TCP port number. The
transport links the bridge servers.
satellite_bridge_host
Host of the main bridge server in the satellite location.
Required.
You may specify a bridge server in one or more satellite
locations.
backup_satellite_bridge_host
Host of the backup bridge server in the satellite location.
Optional.
When present, use the colon character (:) to separate it
from the main bridge server host.
You may specify a backup bridge server for any main
bridge server.
TIBCO FTL Administration
240
| Chapter 14
Transport Bridge
Deleting a Bridge Definition for Dynamic TCP Meshes
To delete a bridge that you defined using this script, use this script again, with the
-d parameter.
We recommend this method (rather than deleting the definition using the GUI) to
avoid incomplete clean-up of automatically-defined transports.)
Adding Satellites to a Bridge for Dynamic TCP Meshes
Because this script automatically defines transports, you cannot directly add new
satellites bridge hosts to an existing bridge. Instead, delete the exiting bridge
definition, then redefine the bridge to include the new and existing satellite
bridge hosts.
Example 3 Adding Satellite Bridge Servers for Dynamic TCP Meshes
1. Suppose you have defined a bridge using this command:
init_dtcp_bridge.py myrealmhost:5238 tport1 9372 br1:br2-bkp
2. You must first remove that definition:
init_dtcp_bridge.py -d myrealmhost:5238 tport1 9372 br1:br2-bkp
3. Then redefine the bridge to include the new satellite bridge hosts.
init_dtcp_bridge.py myrealmhost:5238 tport1 9372 br1:br2-bkp br3:br4-bkp
TIBCO FTL Administration
Bridges Summary 241
|
Bridges Summary
The Bridges summary page displays bridge definitions in the realm, and lets you
create new bridge definitions.
TIBCO FTL Administration
242
| Chapter 14
Transport Bridge
Configuring a Bridge Definition
The Bridge definition page presents the details of a bridge definition, and lets you
modify the definition.
Table 68 Bridge Definition—Components (Sheet 1 of 2)
Parameter
Description
Common Components
Name
Required.
Name of the bridge.
Bridge names must be globally unique within the realm.
All names are limited to a maximum length of 256 characters.
TIBCO FTL Administration
Configuring a Bridge Definition 243
|
Table 68 Bridge Definition—Components (Sheet 2 of 2)
Parameter
Description
Description
Optional.
You can use this text field as a comment to describe the bridge and
attach administrative notes.
Transport Sets
Required.
You must define at least two transport sets.
Transport Names
Required.
For each transport set, you must define at least one transport name. The
transports must already be defined in the realm.
TIBCO FTL Administration
244
| Chapter 14
Transport Bridge
Bridge Monitoring Summary
The Bridges summary page lists the bridge processes (bridge processes are clients
of the realm server).
Selecting a row (using the check-box at left) holds that row in the display, even if it
would not match the filter.
Table 69 Bridges Summary
Column
Description
Client ID
The realm server assigns each bridge client a unique identifier.
Name
The bridge name string.
Host
The hostname string of the bridge client’s host computer (if available).
TIBCO FTL Administration
Bridge Status 245
|
Bridge Status
The bridge status monitoring page presents the status of a bridge.
Table 70 Bridge Status Page
Field
Description
Bridge Name
Bridge name (defined in the realm server).
For all other fields, see Table 45, Client Page, on page 162.
This page also presents client monitoring statistics from the bridge process (see
Client Statistics on page 184).
TIBCO FTL Administration
246
| Chapter 14
Transport Bridge
Bridge Setup Script
The easiest way to define a bridge is by using the realm’s GUI configuration
interface (see Configuring a Bridge Definition on page 242). Alternatively,
administrators can use init_bridge.py (the bridge setup script) to define
transport bridge objects within the realm.
Before running this script, ensure that your execution path environment variable
includes the product’s bin directory (to access the script).
Syntax
init_bridge.py [-u username -pw
[-a]
password]
realm_svr_URL
[bridge_name]
SET transport_name [transport_name]*
SET transport_name [transport_name]*
[SET transport_name [transport_name]* ]*
[DELETE]
Table 71 init_bridge Script (Sheet 1 of 2)
Parameter
Arguments
Description
--user
-u
username
Credentials. Optional. (Required for JAAS authentication.)
--password
-pw
password
When present, the bridge setup script authenticates itself to the
realm server using these credentials.
When present, these credentials must precede all positional
arguments.
When JAAS is enabled, username must be in authorization group
ftl-admin.
-a
Auto-Proceed. Optional.
When present, the script resolves issues during the deploy
transaction by automatically proceeding (despite any
unsuccessful tests). For background information, see The Deploy
Transaction on page 112, and Unsuccessful Test on page 114.
When absent, the script resolves issues by canceling the deploy
transaction.
TIBCO FTL Administration
Bridge Setup Script 247
|
Table 71 init_bridge Script (Sheet 2 of 2)
Parameter
Arguments
Description
realm_svr_URL
Realm server URL. Required.
The script contacts the realm server at this location, and modifies
its realm definition. Supply the location of the primary realm
server (see Connect Port on page 86).
bridge_name
Bridge name. Optional (at most one).
When present, the script defines a bridge object with this name.
When absent, the script defines a bridge named default.
Bridge names must be unique. If a bridge with the same name
already exists, the script deletes its definition and replaces it with
a new definition.
transport_names
SET
Begin a new transport set. Required.
You must define at least two transport sets. Introduce each set with
the parameter keyword SET, then supply its transport names
(separated by space characters).
For each set, supply at least one transport name. The transports
must already be defined in the realm.
DELETE
bridge_name
Delete a bridge. Optional.
When present, the script deletes the definition for bridge_name from
the realm (instead of adding it).
See Also
Configuring Bridges, page 231
TIBCO FTL Administration
248
| Chapter 14
Transport Bridge
TIBCO FTL Administration
| 249
Chapter 15
Persistence (Stores and Durables)
Stores and durables provide persistent message interest and persistent message
streams.
Topics
•
Feature Overview, page 251
•
Stores for Delivery Assurance, page 253
•
Stores for Apportioning Message Streams, page 259
•
Persistence Servers and Cluster, page 260
•
Realm Configuration Structure, page 263
•
Persistence Server Transports, page 265
•
Publisher Mode, page 267
•
Durable Behavior, page 268
Configuration Interface
•
Configuring the Realm Persistence Cluster, page 270
•
Configuring a Persistence Server Definition, page 272
•
Configuring a Store Definition, page 275
•
Configuring a Durable Definition, page 277
•
Configuring Persistence Stores within the Application Definition, page 280
•
Configuring Durable Subscribers within an Application Instance, page 281
Monitoring Interface
•
Persistence Servers Monitoring Summary, page 283
•
Monitoring a Persistence Server, page 286
•
Persistence Stores Monitoring Summary, page 289
TIBCO FTL Administration
250
| Chapter 15
Persistence (Stores and Durables)
•
Monitoring a Store, page 290
•
Monitoring a Shared Durable, page 292
Using and Administering Persistence Servers
•
Starting a Persistence Server, page 294
•
tibstore Command Line, page 295
•
Saving and Loading Persistence State, page 298
•
Purging Durables or Stores, page 301
TIBCO FTL Administration
Feature Overview 251
|
Feature Overview
For an intuitive introduction and terminology, see the Persistence chapter in
TIBCO FTL Concepts.
Purpose
Persistence is the potential to store a message between sending and receiving it.
The persistence infrastructure of stores and durables can serve two purposes—
delivery assurance, and apportioning message streams.
Delivery
Assurance
An ordinary subscriber receives messages from a publisher only when a transport
connects the subscriber with that publisher. That is, an ordinary subscriber cannot
receive a message through a direct path transport unless both of these conditions
hold at the time that the publisher sends the message:
•
The subscriber object exists.
•
The transport is connected.
Persistence lets subscribers receive every message with high assurance, despite
temporary lapses in these conditions. For example, a persistence store can retain
data for subscriber recovery after application exit and restart, temporary network
failure, or application host computer failure.
Stores can retain data indefinitely, until subscribers acknowledge delivery. (In
contrast, even reliable transports retain data only for a finite reliability interval.)
For this purpose, administrators configure stores with non-shared durables.
Apportioning
Message
Streams
A shared durable can apportion a message stream among a set of cooperating
subscribers so that only one subscriber receives and processes each message, but
acting together the subscribers process every message in the stream.
For this purpose, administrators configure stores with shared durables.
Architecture for Delivery Assurance
FTL features high-speed message delivery with low latency; using stores for
delivery assurance is consistent with this overall architectural goal:
TIBCO FTL Administration
252
| Chapter 15
Persistence (Stores and Durables)
•
Delivery assurance using non-shared durables operates alongside regular
direct-path delivery.
Transports carry messages directly from publishers to subscribers—without
an intermediary hop through a persistence server, which would add message
latency. Separate transports carry messages from publishers to a store in the
persistence servers, which stores them for as long as subscribers might need to
recover them.
•
Persistence servers store message data in process memory, avoiding latency
associated with disk I/O.
Replication of data across a cluster of several servers protects against
hardware or network failures on a small scale. (However, this replication
scheme cannot guarantee delivery after catastrophic failures.)
•
FTL persistence architecture flexibly accommodates diverse application
requirements.
Publisher quality of service—for each store, administrators can balance
appropriately between performance requirements and the need to confirm
message replication.
Subscriber acknowledgement—within application programs, subscribers can
acknowledge message delivery automatically or explicitly; administrators can
configure durables to receive individual acknowledgements synchronously,
or in batches (asynchronously).
Architecture for Apportioning Message Streams
Using persistence stores to apportion message streams emphasizes throughput
rather than the lowest latency.
Delivery through shared durables replaces direct-path delivery. The persistence
server that apportions the message stream is an intermediary hop, which adds
message latency.
Coordination
Administrators and application developers must coordinate the details of
durables; see Durable Coordination Form on page 320.
TIBCO FTL Administration
Stores for Delivery Assurance 253
|
Stores for Delivery Assurance
Topology
When using a store for delivery assurance, the store is similar a second transport.
Like the direct path, it enables message communication among a network of
endpoints. It operates in parallel with direct-path transports, as an additional
path from publishers to subscribers.
Because the store offers a redundant path, we say that the store backs the direct
paths. Depending on our focus, we can also say that the store backs the network of
endpoints, or that it backs the message stream that travels among those endpoints.
Figure 25 Store as Redundant Message Path
T
E
App
E
T
App
Direct Path
Bus
Store
Figure 25 depicts a direct path through the transport bus, and another path from
endpoint to endpoint through a store. (Conceptually, communications to and
from the store travel through the endpoint instances; FTL arranges a
communication mechanism for this path.)
Direct Path Requirement for Non-Shared Durables
For delivery assurance, you must configure a direct path. We do not support
configurations in which a store is the only path between a publishing endpoint
and a subscribing endpoint.
(This requirement does not apply when using a store to apportion a message
stream—only for delivery assurance.)
Retention and Delivery
A store adds value by strengthening message delivery assurances. You could
imagine a store as a bus that can retain its message stream for subscribers that are
temporarily unavailable.
TIBCO FTL Administration
| Chapter 15
Persistence (Stores and Durables)
Figure 26 Store for Message Recovery
T
E
App
T
E
App
T
E
Direct Path 3
App
254
Bus
1
2
Store
Store
In the first frame of Figure 26, the durable subscriber is unavailable, so it misses
messages from the publisher; the store collects those messages (1). In the second
frame, the durable subscriber resumes, recovers the missed messages from the
store (2), then continues receiving messages directly from the publisher (3).
Larger Networks of Endpoints
Stores connect endpoints to endpoints.
Earlier diagrams showed the store connecting one publisher endpoint to one
subscriber endpoint. More generally, a store can connect many publisher
endpoints (each with many publishers) to many subscriber endpoints (each with
many subscribers).
The store in Figure 27 collects messages from two publishers on endpoint E1 (left).
Two durable subscribers on endpoint E2 (right) can recover those messages from
the store.
In accord with the direct path requirement, a direct path connects each of the two
E1 publishers to each of the two E2 subscribers (see Direct Path Requirement for
Non-Shared Durables on page 253).
TIBCO FTL Administration
Stores for Delivery Assurance 255
|
Figure 27 Store Serves Several Publishers and Subscribers
Durable Subscribers
T
E1
App
E2
T
Ap
p
Publishers
Direct Path
Bus
T
T
E1
Ap p
Ap
p
E2
Durable 1
Durable 2
Store
Notice that each of the durable subscribers in Figure 27 depends on a unique
non-shared durable within the store.
Combined Message Stream
A store collects messages from all its publishing endpoints, and merges them into
a combined message stream. The store then ensures that all of its subscribers
receive every message of that combined message stream. (If a subscriber has a
content matcher, it receives every matching message.)
In Figure 27 the store merges the message streams from the two publishers, and
feeds the combined stream to both subscribers. Each subscriber then receives the
entire combined message stream.
Multiple Stores
A store can serve as a redundant message path for exactly one combined message
stream. When a suite of application programs communicate using two or more
disjoint message streams, use a separate store to back each of the message
streams.
While stores can potentially contain large quantities of message data, each store is
itself a lightweight object. When the situation requires multiple stores, use as
many as is appropriate. (Using one store inappropriately to back two or more
direct message streams is a configuration error.)
TIBCO FTL Administration
| Chapter 15
Persistence (Stores and Durables)
Two message streams are disjoint when they travel among disjoint networks of
endpoints. For example, Figure 28 depicts a suite of three application programs;
App1 sends a stream of messages from endpoint E1 to endpoint E2 in App2;
App2 in turn sends a (different) stream of messages from endpoint E3 to endpoint
E4 in App3. The two message streams are disjoint (even though E2 and E3 are
both endpoints in App2). Because the message streams are disjoint, each requires
its own store.
T
E3
T
Bus
E4
T
E2
E1
Direct Path
App2
App3
Direct Path
T
App1
Figure 28 Two Stores
Bus
Store1
Store2
Larger Disjoint Networks of Endpoints
Figure 28 depicted only one publisher feeding into each store, and only one
subscriber depending on each store. Figure 29 depicts the same application suite
in a more complex configuration, with two instances of each program.
E3
T
T
T
T
E3
E1
E4
App3
App1
E4
Direct Paths
App3
T
App2
T
Store1
App2
E2
T
Direct Paths
E2
T
E1
Figure 29 Two Stores with Many Publishers and Subscribers
App1
256
Store2
Figure 29 shows that each of the two stores serves a separate network of
endpoints. Store1 serves E1 and E2, while Store2 serves E3 and E4.
TIBCO FTL Administration
Stores for Delivery Assurance 257
|
Notice that Figure 29 satisfies the direct path requirement (see Direct Path
Requirement for Non-Shared Durables on page 253). Each E1 publisher has a
direct path to every E2 subscriber; similarly, every E3 publisher has a direct path
to every E4 subscriber.
Store1 merges the message streams from all the E1 publishers, and guarantees
that all the E2 subscribers receive all the messages in that combined message
stream. Similarly, Store2 merges the message streams from all the E3 publishers,
and guarantees that all the E4 subscribers receive all the messages in that
combined message stream.
Violating the Direct Path Requirement
The preceding examples all satisfy the direct path requirement (see Direct Path
Requirement for Non-Shared Durables on page 253). Violating the direct path
requirement is a configuration error, and causes incorrect results.
Figure 30 illustrates this error by modifying the example of Figure 28 to
erroneously use one store instead of two.
Direct Path 2
T
E3
E1
T
!
E4
Bus
T
E2
App2
App3
Direct Path 1
T
App1
Figure 30 Erroneously Using One Store Instead of Two
Bus
Store
Configuration Error
In this erroneous configuration Store1 collects messages from publishers at E1 in
App1 and E3 in App2, and merges them into a combined message stream. Then
Store1 ensures that all of its subscribers—at E2 in App2 and E4 in App3—receives
every message of the combined message stream. That is, messages that App1
sends to App2 arrive (erroneously) at App3; messages that App2 sends to App3
also arrive (erroneously) at App2.
These results are clearly incorrect. They do not match our intent—compare
Figure 30 with Figure 28 on page 256. Furthermore, this outcome results directly
from violating the direct path requirement:
•
Store1 connects E1 to E4—without any direct path connecting them.
•
Store1 connects E3 to E2—without any direct path connecting them.
TIBCO FTL Administration
258
| Chapter 15
Persistence (Stores and Durables)
Durable Collision
Each non-shared durable can serve at most one durable subscriber object at a
time. The store resolves collisions in favor of the most recent durable subscriber.
For example, if a durable subscriber in process A is using durable D, and a new
durable subscriber in process B subsequently claims D, then B wins the durable
from A. The store forces subscriber A to close.
The assumption behind this behavior is that the older durable subscriber is
malfunctioning, and the newer one has started in order to replace it.
Default Durable
You can use the default durable to let any application benefit from delivery
assurance—even applications that do not explicitly supply a durable subscriber
name in their create subscriber calls.
To use the default durable, administrators may map the default subscriber name
(_default) to a durable in one or more application instance definitions.
Restrictions
See Also
•
Each application instance definition supports at most one default durable per
endpoint. That is, for each application endpoint, each application instance
definition can map the default subscriber name to at most one durable name.
(However, separate application instance definitions can map their respective
default subscribers to different durable names.)
•
At any moment, at most one running process can claim a specific non-shared
durable. (This restriction applies to all non-shared durables—but we
recommend special attention to prevent inadvertent violations by processes
that use default durables.)
Configuring a Default Durable, page 282
TIBCO FTL Administration
Stores for Apportioning Message Streams 259
|
Stores for Apportioning Message Streams
Topology
When using a store to apportion a message stream, the store is an intermediary
hop between publishing and subscribing applications. In Figure 31, notice the
absence of any direct path—the store is the only path from the publishing
endpoint to the subscribing endpoints. (The direct path requirement does not
apply when using a store to apportion a message stream—only for delivery
assurance.)
Figure 31 Store as Apportioning Intermediary
Pub
Sub
Sub
Sub
E
E
E
E
Store
Shared Durable
Apportioning
The shared durable in Figure 31 apportions the message stream among its
subscribers. That is, each subscriber receives a portion of the message stream,
rather than every message. Exactly one subscriber consumes each message in the
message stream.
Acknowledgment and Redelivery
A subscriber acknowledges each message it receives. The shared durable tracks
those acknowledgements. If a subscriber disconnects leaving one or more
messages unacknowledged, the shared durable redelivers those messages to
other subscribers.
TIBCO FTL Administration
260
| Chapter 15
Persistence (Stores and Durables)
Persistence Servers and Cluster
A persistence server (or store server) is a process that implements one or more stores.
Several servers can cooperate as a cluster.
The servers within the cluster communicate among themselves to replicate
message data and acknowledgement data. Replication ensures that the cluster can
continue to deliver messages to subscribers, even when some of the servers are
unavailable.
Administrators define the cluster and its servers within the realm. Each realm can
define at most one cluster. The cluster consists of a set of store servers. Each server
must run on a dedicated host computer.
The cluster (as a whole) maintains a set of stores, replicating their data among its
servers for fault tolerance.
Quorum and Leader
The cluster can interact with clients only when a quorum of servers exists (see
Quorum Conditions—General Rule, below). This requirement ensures correct
replication and fault tolerance (see Fault Tolerance, below).
When a quorum exists, one of the servers takes the role of leader—the server that
interacts with clients. All other servers in the quorum replicate the leader’s data,
but do not interact with clients.
Administrators can set the weight of each server to determine an order of relative
preference in which servers become the leader.
Quorum Conditions—General Rule
A valid quorum ensures correct replication and fault tolerance. As a general rule,
a group of candidate servers must satisfy all three of the following conditions to
form a valid quorum (for special exceptions, see Quorum Behaviors on page 261):
•
Majority The number of candidate servers that satisfy these conditions must
be strictly greater than half of the number of servers in the cluster definition
(that is, a simple majority).
•
Reachable A majority of the defined servers must be running and able to
communicate with one another.
•
TIBCO FTL Administration
Non-Empty A majority of the defined servers must be non-empty. (A server
process is empty when its process starts or restarts without loading saved state.
A server that has successfully joined a quorum is no longer empty.)
Persistence Servers and Cluster 261
|
Cluster Size
For delivery assurance with fault tolerance we recommend a minimum cluster
size of 3 servers, so that a quorum can exist even when one server is unavailable.
A cluster of 2 servers is invalid, because when one server is unavailable, the
remaining server cannot form a quorum on its own; it is an error to configure only
2 servers.
For apportioning messages streams, a cluster of only 1 server is a valid
configuration.
Quorum Behaviors
Cluster Start
When the cluster starts for the first time (that is, all the servers are empty), the
servers wait until all the servers in the cluster have started, and are running
simultaneously. Then they constitute a quorum for the first time, and can begin
interacting with clients to store messages.
Steady State
After forming that initial quorum, client interaction continues while the quorum
exists (that is, a majority of servers continue to satisfy all three conditions of
Quorum Conditions—General Rule on page 260).
Rejoining the Quorum
A server can rejoin an existing quorum—for example, after that server restarts, or
becomes reachable (after recovery from network segmentation). The rejoining
server copies the data state of the quorum leader.
The current leader remains in place, even when the rejoining server has higher
weight. That is, weights are relevant only for leader election (which occurs only
when the quorum does not already have a leader).
Reforming a Quorum
If the servers no longer satisfy the quorum conditions, client interaction stops.
The quorum must reconstitute through any of the scenarios in Table 72.
TIBCO FTL Administration
262
| Chapter 15
Persistence (Stores and Durables)
Table 72 Reforming a Quorum
Scenario
Description
Complete
The cluster can form a quorum of non-empty servers (that is, they satisfy all three
conditions of Quorum Conditions—General Rule on page 260). For example, this
scenario can occur after recovery from network segmentation; or after suspending
the cluster, saving the state of its servers, and finally, restarting the servers.
Force Quorum
A majority of the defined servers are reachable, but the candidates cannot satisfy
the non-empty condition. After verifying preconditions, the administrator may
force a quorum (using the realm server monitoring interface). For more details,
see Forcing a Quorum on page 284.
The servers in the forced quorum copy the most recent message data state.
Fault Tolerance
Replication of data among a quorum of servers ensures that the cluster as whole
remains complete and correct, despite temporary outage of some of its servers.
Note that this level of fault tolerance does not support disaster recovery.
Fault tolerance applies only to stores that contain only non-shared durables.
We recommend that you insulate each server host from the other servers and the
factors that might make them unavailable (for example, ensure that server hosts
rely on separate power circuits and separate network infrastructure).
We do not recommend locating server hosts at geographically distant sites, which
would increase communication latency.
TIBCO FTL Administration
Realm Configuration Structure 263
|
Realm Configuration Structure
The realm definition schematic in Figure 32 indicates five configuration tasks for
stores and durables (numbers correspond to the task list below).
Figure 32 Configuring Durables in an Application
Persistence Cluster
Name: App 2P
Preload Formats:
Endpoints:
Format 1
1
R
Persistence
Servers
RI
Format 2
Endpt 1
S
Format 3
SI
4
Store 1
Instance: default
R
R
RI
RI
S
S
SI
SI
Endpt 1
Tport 1
2
5
Durable Subscribers
Store 1
3
Subscriber Name 1
Durable 1
Durable 1
Subscriber Name 2
Durable 2
Durable 2
...
...
1. Configure the store servers that make up the cluster.
For concepts, see Persistence Servers and Cluster on page 260.
For the configuration interface, see Configuring the Realm Persistence Cluster
on page 270, and Configuring a Persistence Server Definition on page 272.
TIBCO FTL Administration
264
| Chapter 15
Persistence (Stores and Durables)
2. Configure the stores within the cluster.
For concepts, see Publisher Mode on page 267.
For the configuration interface, see Configuring the Realm Persistence Cluster
on page 270, and Configuring a Store Definition on page 275.
3. Configure the durables within each store.
For concepts, see Durable Behavior on page 268.
For the configuration interface, see Configuring a Store Definition on
page 275, and Configuring a Durable Definition on page 277.
4. Associate application endpoints with stores, as appropriate.
For concepts and the configuration interface, see Configuring Persistence
Stores within the Application Definition on page 280.
5. Map durable subscribers to durables.
For concepts and the configuration interface, see Configuring Durable
Subscribers within an Application Instance on page 281.
TIBCO FTL Administration
Persistence Server Transports 265
|
Persistence Server Transports
Each persistence server uses two kinds of special-purpose transport:
•
The cluster transport communicates between the server and other servers in the
cluster.
•
The client transport communicates between the server and its client processes.
Administrators must configure the details of these transports as part of the
persistence server definition (rather than as separate transport definitions).
To configure these transports, see Cluster Transport & Client Transports on
page 273.
Alternate Client Transport
Consider a heterogeneous environment in which the client host computers have
different transport capabilities. For example, some hosts support RDMA
transports, while others do not. For best performance, each client would use the
fastest available transport type (and a single client transport has one type, either
RDMA or static TCP—it cannot combine the two).
In such situations you can define a second client transport—the alternate client
transport—and assign clients on specific hosts to use that alternate transport. All
other clients use the regular client transport.
To configure this transport, see Alternate Client Transport on page 274.
Client Transport and Non-Blocking Send
Administrators can choose whether the client transport uses blocking or
non-blocking send—but this setting affects only the client end of the transport
(the server end always uses non-blocking send).
In general, this choice is relevant only when the publisher mode (see Publisher
Mode on page 267) is Store – Send – No Confirm (because otherwise the
application publishing rate is limited by confirmations from the persistence
server).
Furthermore, this choice has an effect on behavior only during peak message
bursts—if application publishing overwhelms the quorum leader:
•
To favor maximum application publishing speed while accepting potential
message loss in the store, choose non-blocking send.
TIBCO FTL Administration
266
| Chapter 15
Persistence (Stores and Durables)
•
TIBCO FTL Administration
To favor minimum message loss in the store while throttling application
publishing speed, choose blocking send.
Publisher Mode 267
|
Publisher Mode
When an endpoint uses a store, its publisher send calls communicate outbound
messages to the store, as well as to the endpoint’s regular transports. Depending
upon application requirements, the publisher send call can also wait for the store
to confirm that it has received and stored each message. Different sequences of
these subtask elements produce different qualities of service.
Administrators must select the publisher mode that best suits the application’s
needs.
Table 73 Store Publisher Modes
Publisher Mode
Description
Store – Send – No Confirm
Highest throughput. Minimal message latency. More robust
delivery than regular reliability.
1. Send the message to the store. Do not wait for confirmation.
2. Send the message on the endpoint’s transports.
Store – Confirm – Send
Guarantees delivery in exchange for lower throughput and higher
message latency.
If the send call succeeds, then the store guarantees that all durable
subscribers will eventually receive the message. Conversely, if the
store operation fails, the send call also fails, and subscribers do not
receive the message through direct transports, nor from the store.
1. Send the message to the store.
2. Wait for the cluster to confirm storage.
3. Send the message on the endpoint’s transports.
TIBCO FTL Administration
268
| Chapter 15
Persistence (Stores and Durables)
Durable Behavior
Administrators configure the behavior of a durable and its interaction with
durable subscriber. This section presents the behavior choices you can specify. For
the configuration interface, see Configuring a Durable Definition, page 277.
Shared or Non-Shared
A non-shared durable represents exactly one durable subscriber. It supports
delivery assurance for that durable subscriber.
A shared durable represents a set of cooperating durable subscribers. It supports
apportioning the message stream among those durable subscribers.
Acknowledgement Mode
Durable subscribers acknowledge each message as they process it. However, the
client library can transmit acknowledgements to the cluster in either of two
modes—synchronous or asynchronous.
Table 74 Acknowledgement Mode
Mode
Description
Synchronous
Each time the application program acknowledges a message, the client library
immediately communicates the acknowledgement to the cluster, and waits for the
cluster to confirm that it has safely recorded that acknowledgement.
Asynchronous
The client library gathers batches of acknowledgements, and communicates the
batches to the cluster. (The application does not receive confirmation that the
cluster has safely recorded the batch of acknowledgements.)
In some situations, batching can improve throughput and latency performance.
However, after application failover, durable subscribers could receive duplicate
delivery of messages that they have already acknowledged (because the cluster
never received the most recent batch of acknowledgements).
Note that acknowledgement mode as described here is orthogonal to the
developer’s choice between automatic acknowledgement versus an explicit
acknowledge call.
TIBCO FTL Administration
Durable Behavior 269
|
Message Interest
A store collects all the messages from its publishers—but a subscriber might
require only a subset of those messages, and different subscribers might require
different subsets. (Developers and administrators must coordinate to configure
this behavior.)
Table 75 Message Interest
Behavior
Description
Store All
Messages
Durable subscribers require delivery of all messages in the store. Each durable
presents the entire message stream to its durable subscriber.
The subscriber create call must not specify any content matcher.
Store Matching
Messages
Durable subscribers require only a subset of messages in the store—that is, only
those messages that match a content matcher. Each durable presents only that
subset to its durable subscriber.
We recommend that the subscriber create call not specify any content matcher; the
resulting subscriber automatically uses the matcher from the durable definition.
(If the subscriber create call does specify a content matcher, it must be identical to
that of the durable definition.)
See Also
Message Interest, page 279
Durable Coordination Form, page 320
Content Matchers in TIBCO FTL Development
Changing Message Interest or Matcher Fields
From the moment that a subscriber object first interacts with a durable, you may
no longer change a durable’s message interest, nor its matcher fields. If these
configuration values must subsequently change, you can instead map the
subscriber to a new durable with the correct message interest and matcher fields.
See Also
Message Interest, page 279
Matcher Fields, page 279
TIBCO FTL Administration
270
| Chapter 15
Persistence (Stores and Durables)
Configuring the Realm Persistence Cluster
Administrators begin by defining the cluster (at most one per realm). The cluster
definition consists of servers and stores.
For background information, see Persistence Servers and Cluster on page 260.
For consequences of modifying this configuration, see Store and Durable
Modifications on page 118, and Quorum Behaviors on page 261.
TIBCO FTL Administration
Configuring the Realm Persistence Cluster 271
|
Cluster Heartbeat and Timeout Settings
Advanced settings on the cluster page let you adjust the heartbeat and timeout
parameters, which detect persistence server availability. We recommend using the
default values, except to resolve specific issues or as directed by TIBCO
personnel.
Table 76 Persistence Cluster Advanced Parameters
Parameter
Description
Client—Persistence Server
Heartbeat
The leader persistence server sends heartbeats to its
clients at this interval (in seconds).
Client—Persistence Server
Timeout
When the leader’s heartbeat is silent for this interval (in
seconds), its clients seek to connect to a new leader (from
among the other servers in the cluster.
Persistence Server—Persistence Server
Heartbeat
Store servers in the cluster exchange heartbeats at this
interval (in seconds).
Persistence Server—Persistence Server
Timeout
When the heartbeat of any server in the cluster is silent
for this interval (in seconds), the remaining servers
attempt to form a new quorum.
TIBCO FTL Administration
272
| Chapter 15
Persistence (Stores and Durables)
Configuring a Persistence Server Definition
The Persistence Server definition page presents the details of a server definition,
and lets you modify the definition.
For background information, see Persistence Servers and Cluster on page 260.
For consequences of modifying this configuration, see Store and Durable
Modifications on page 118.
TIBCO FTL Administration
Configuring a Persistence Server Definition 273
|
Table 77 Persistence Server Parameters (Sheet 1 of 2)
Parameter
Description
Name
Required.
Name of the server.
Server names must be globally unique within the realm.
All names are limited to a maximum length of 256 characters.
Description
Optional.
You can use this text field as a comment to describe the server and attach
administrative notes.
Weight
Required.
This value must be an integer in the range [1,10]. Larger values indicate greater
preference that the server becomes the leader.
Cluster Transport & Client Transports
For background information, see Persistence Server Transports on page 265.
Transport Type
Select one of the available transport types.
TIBCO FTL Administration
274
| Chapter 15
Persistence (Stores and Durables)
Table 77 Persistence Server Parameters (Sheet 2 of 2)
Parameter
Description
other transport
parameters
Supply the other transport parameters as needed. The set of parameters depends
on the transport type. In general, only a subset of parameters for the transport
type are available—FTL automatically supplies values for the remainder.
For transport parameter details, see Chapter 4, Transports, on page 35.
See also Client Transport and Non-Blocking Send on page 265.
Alternate
Client
Transport
Optional.
To define an alternate client transport, supply its transport type, parameters, and
a set of associated client host names. Clients on those specific host computers
communicate with this persistence server using the alternate transport. All other
clients use the regular client transport.
For background information, see Alternate Client Transport on page 265.
TIBCO FTL Administration
Configuring a Store Definition 275
|
Configuring a Store Definition
The Store definition page presents the details of a store definition, and lets you
modify the definition.
For consequences of modifying this configuration, see Store and Durable
Modifications on page 118.
TIBCO FTL Administration
276
| Chapter 15
Persistence (Stores and Durables)
Table 78 Store Definition—Components
Parameter
Description
Name
Required.
Name of the store.
Store names must be unique within the cluster.
All names are limited to maximum length of 256 characters.
Description
Optional.
You can use this text field as a comment to describe the store and attach
administrative notes.
Publisher Mode
This parameter governs communication among publisher send calls, the
store, and the endpoint’s regular transports—producing different qualities of
service. For complete details, see Publisher Mode on page 267.
Byte Limit
This parameter limits the volume of message data in the store. If publishing
another message would exceed this limit, the store rejects that message.
Zero is a special value, indicating no limit. The store may grow until it
exhausts available memory on any one of its servers.
Replicated
When enabled (default value), tibstore replicates the store across servers in
the cluster.
When disabled, tibstore does not replicate the store—only one server holds
the store’s data.
Durables
Each store defines a set of durables, which track the distribution of messages
to durable subscribers. To configure individual durables, see Configuring a
Durable Definition on page 277.
For background information, see and Durable Behavior on page 268.
TIBCO FTL Administration
Configuring a Durable Definition 277
|
Configuring a Durable Definition
The Durable definition page presents the details of a durable definition, and lets
you modify the definition.
For background information, see Durable Behavior on page 268.
For consequences of modifying this configuration, see Store and Durable
Modifications on page 118.
TIBCO FTL Administration
278
| Chapter 15
Persistence (Stores and Durables)
Table 79 Durable Definition—Components (Sheet 1 of 2)
Parameter
Description
Name
Required.
Name of the durable.
Durable names must be unique within each store.
All names are limited to maximum length of 256 characters.
Description
Optional.
You can use this text field as a comment to describe the durable and attach
administrative notes.
Shared
When disabled (default value), the durable retains a message stream for
exactly one durable subscriber.
When enabled, many subscribers can share this durable, which distributes
each message to only one of those subscribers.
Prefetch
Applies only to shared durables.
When a subscriber is ready, the store delivers a portion of the message
stream. This value (a positive integer) limits the number of messages in a
portion.
You can tune this parameter empirically to improve message throughput. If
some subscribers are idle while others are overloaded, try decreasing this
value. If the durable has a large message backlog, yet subscribers could
process more messages, try increasing this value.
Acknowledgement
Mode
When a subscriber finishes processing a message, the client library sends an
acknowledgement to the durable. This interaction can be either Synchronous
or Asynchronous. For complete details, see Acknowledgement Mode on
page 268.
Batch Time
In asynchronous acknowledgement mode, each client immediately sends
accumulated acknowledgements when the oldest acknowledgement has
waited for this interval (in seconds)—even before exceeding Batch Count.
Batch Count
In asynchronous acknowledgement mode, each client immediately sends
accumulated acknowledgements when the number of waiting
acknowledgements exceeds this number—even if Batch Time has not
elapsed.
TIBCO FTL Administration
Configuring a Durable Definition 279
|
Table 79 Durable Definition—Components (Sheet 2 of 2)
Parameter
Description
Message Interest
Message interest determines a stream of messages:
•
Store All Messages
indicates the full message stream that the store
collects.
•
Store Matching Messages
matcher (see Matcher
indicates a subset determined by a content
below).
Fields,
For complete details, see Message Interest on page 269.
Matcher Fields
Required when Message
Interest
is Store
Matching Messages.
(Developers and administrators coordinate to determine the appropriate
behavior; see Durable Coordination Form on page 320.)
For complete details, see Message Interest on page 269.
TIBCO FTL Administration
280
| Chapter 15
Persistence (Stores and Durables)
Configuring Persistence Stores within the Application Definition
Administrators can associate each application endpoint with at most one store.
That store serves all publisher and subscriber instances of the endpoint, in all
process instances of the application.
One store can serve several endpoints—either within one application program, or
across several application programs. For example, in the sample applications, one
store would serve the endpoints tibsend-endpoint and tibrecv-endpoint,
connecting the publisher in tibsend with the subscriber in and tibrecv.
Separate stores can serve separate endpoints of the same application.
See Also
Configuring an Application Definition, page 123
Stores for Delivery Assurance, page 253
TIBCO FTL Administration
Configuring Durable Subscribers within an Application Instance 281
|
Configuring Durable Subscribers within an Application Instance
When developing new applications that use stores and durables, application
developers and administrators coordinate to determine a list of subscriber names.
•
Each application process supplies a unique subscriber name in each create
subscriber call. This subscriber name represents the application process’ view
of its durable.
•
Administrators map each subscriber name to a durable name—that is, to a
durable as defined within the store. Administrators configure this mapping
on the application instance page.
The subscriber name and the durable name may be either identical strings or
different strings. For administrative simplicity, we recommend using identical
strings if possible. (In the image below, the example illustrates best practice;
administrators may veer from best practice when necessary.)
For consequences of modifying this configuration, see Store and Durable
Modifications on page 118.
See Also
Configuring an Application Instance, page 127
Durable Coordination Form, page 320
Matching Instances for Subscriber Name Mapping
Matching Instances on page 25 describes the matching algorithm that the realm
server uses to determine the instance connections between endpoints (publisher
and subscriber objects) and the transports that implement them.
After a first pass determines those instance connections for transports, a second
pass (using the identical algorithm) determines the mapping from subscriber
names to durables.
TIBCO FTL Administration
282
| Chapter 15
Persistence (Stores and Durables)
Because the two passes are independent, you can configure the subscriber name
mapping independently from instance connections—in separate application
instance definitions. For example, you could key instance connections to the Host,
and key the subscriber name mapping to the Identifier.
We recommend that you use this independence to reduce the number of
application instance definitions.
Configuring a Default Durable
To configure the default durable on an endpoint, supply _default as the
subscriber name. The durable name can be any durable you have defined in the
store.
See Also
For background information, see Default Durable, page 258.
TIBCO FTL Administration
Persistence Servers Monitoring Summary 283
|
Persistence Servers Monitoring Summary
The Persistence Servers summary page lists the servers configured in the cluster.
Table 80 Persistence Servers Summary—Components
Column
Description
Status Icon
Icon representing the status of the persistence server process; see Table 81,
below.
Name
Name of the persistence server process.
Host
The hostname string of the persistence server’s host computer (if available).
ID
Client ID of the persistence server process (as a client of the realm server).
History
History indicates whether servers are up-to-date.
The first value is the server’s quorum number; see Current Quorum Number
on page 287, above.
The second value is the data state of the server. Higher values indicate more
recent data.
A history value of 0,0 indicates an empty server.
When the cluster does not contain enough up-to-date servers to form a
quorum, administrators may force a quorum, using the most up-to-date
server; see Forcing a Quorum on page 284.
TIBCO FTL Administration
284
| Chapter 15
Persistence (Stores and Durables)
Table 81 Persistence Server Status
Icon
Status
Running
Needs Restart
Out of Sync
Timed Out
Offline
Exception
Forming Quorum
Replica
Leader
Manual Intervention
Forcing a Quorum
When the cluster contains enough reachable servers, but not enough non-empty
servers to form a quorum, an administrator may force a quorum.
Before forcing a quorum, first verify that it is safe to do so:
1. Determine the process status of each unreachable server.
2. If none of the unreachable servers are running, it is safe to force a quorum.
TIBCO FTL Administration
Persistence Servers Monitoring Summary 285
|
3. If any server processes are running but unreachable (for example, because of a
network partition problem), then it is not safe to force a quorum. Those servers
could contain more recent message data than the quorum candidates, and
forcing a quorum would forfeit those messages. Instead, restore reachability
by repairing the network problem; then the quorum can reform itself without
administrator intervention.
Do not rely on server history state to determine whether it is safe to force a
quorum. History state information (which appears in the monitoring interface
and in persistence server log output) is not accurate enough for this purpose.
Example 4 Store Servers—Forcing a Quorum
Figure 33 monitors the state of a cluster that defines three servers. Only two
servers are reachable. The third server is unreachable.
Figure 33 Store Servers—Forcing a Quorum
The two reachable servers cannot form a quorum because server-2 is empty (see
Quorum Conditions—General Rule on page 260). If the administrator determines
that server-3 has exited, then it is safe to force a quorum. The administrator can
explicitly force a quorum by clicking the lightning bolt button (see Figure 33).
If, on the other hand, server-3 is still running, it could hold a more recent history
state than server-1 (the candidate with the most recent history state). Instead of
forcing a quorum, the administrator should endeavor to repair the network
problem that partitions server-3 from the other candidates.
See Also
Force Quorum on page 262.
TIBCO FTL Administration
286
| Chapter 15
Persistence (Stores and Durables)
Monitoring a Persistence Server
The Persistence Server monitoring page presents the status and properties of a
specific server. It also presents server monitoring statistics.
Table 82 Persistence Server Status—Components (Sheet 1 of 3)
Item
Description
Client ID
Client ID of the persistence server process (as a client of the realm server).
Administrators could use this client ID in a script to retrieve client
monitoring statistics about the persistence server from the realm server.
TIBCO FTL Administration
Monitoring a Persistence Server 287
|
Table 82 Persistence Server Status—Components (Sheet 2 of 3)
Item
Description
Status
Status of the persistence server process (as a string).
Description
Description string (from the server definition page).
Quorum Status
If the server is running, this string indicates its status with respect to the
quorum.
Current Quorum
Number
Each time the servers form a quorum, they advance the quorum counter and
each participating server caches its value.
A lower value than other servers could indicate missing data.
History
History indicates whether servers are up-to-date.
The first value is the server’s quorum number; see Current
above.
Quorum Number,
The second value is the data state of the server. Higher values indicate more
recent data.
When the cluster does not contain enough up-to-date servers to form a
quorum, administrators may force a quorum, using the most up-to-date
server.
Force Timestamp
Zero indicates that the cluster formed a quorum in the usual way.
A timestamp indicates that the administrator forced a quorum at that time.
Last Contact
Time of the most recent contact between the realm server and this persistence
server.
Time Since Last
Contact
Approximate elapsed time since the most recent contact between the realm
server and this persistence server.
Realm Revision
Revision number of the realm definition received at the persistence server.
If this number is not equal to the realm server’s revision, then the persistence
server is not synchronized with the realm server, and might need to restart.
Startup Time
Timestamp when the persistence server first contacted the realm server.
Host Name
The hostname string of the persistence server’s host computer (if available).
IP Address
IP address of the persistence server’s host computer.
TIBCO FTL Administration
288
| Chapter 15
Persistence (Stores and Durables)
Table 82 Persistence Server Status—Components (Sheet 3 of 3)
Item
Description
Other Info
Additional information about the persistence server; for example, hardware,
operating system, process ID.
Notices
Notes about persistence server status (as a realm server client).
Persistence Server Statistics
This monitoring page includes two kinds of statistics:
•
Statistics about the persistence server’s cluster transports and client
transports.
For details about transport statistics, see Catalog of Client Statistics on
page 184. For background information about cluster and client transports, see
Persistence Server Transports on page 265.
•
Statistics about the stores within this server (see Table 83, below).
(The sample interval for persistence server statistics is separate from the
sample interval for client monitoring. Administrators cannot modify it.)
Table 83 Store Statistics
Statistic Type
Descriptions
Tracking
Message Count
For each store in the server, a counter of this type tracks the
number of messages in the store at the close of the sample
interval.
Per store
For each store in the server, a counter of this type tracks the
storage (in bytes) that messages occupy in the store at the
close of the sample interval.
Per store
Message Size
TIBCO FTL Administration
Instantaneous
Instantaneous
Persistence Stores Monitoring Summary 289
|
Persistence Stores Monitoring Summary
The Persistence Stores summary page lists the stores in the cluster.
Table 84 Stores Summary—Components
Column
Description
Name
Name of the persistence store.
Messages
Number of messages in the store.
Bytes
Size (in bytes) that the messages occupy in the store.
Purge the store. (This action deletes all messages in the store.)
TIBCO FTL Administration
290
| Chapter 15
Persistence (Stores and Durables)
Monitoring a Store
The Persistence Store Status pane presents the status and properties of a specific
store.
Table 85 Persistence Store Status—Components
Item
Description
Name
Name of the store
Leader
Persistence server that is currently the quorum leader for this store.
Message Count
Number of messages in the store.
Message Size
Size (in bytes) that the messages occupy in the store.
Durables
The Durables summary pane lists the durables in the store.
TIBCO FTL Administration
Monitoring a Store 291
|
Table 86 Durable Subscribers Summary—Components
Column
Description
Name
Name of the durable (within the store).
Messages
Number of messages held in this durable.
Bytes
Size (in bytes) that the messages occupy in the store.
Client
For a non-shared durable, this column identifies the client process that
contains the subscriber object currently associated with the durable. To view
the client’s monitoring page, click this link.
For a shared durable, this column displays the number of clients with
subscribers on the durable. To view the shared durable’s monitoring page,
click this link.
Purge the durable. (This action deletes all messages in the durable.)
TIBCO FTL Administration
292
| Chapter 15
Persistence (Stores and Durables)
Monitoring a Shared Durable
The Shared Durable Status pane presents the status of a specific shared durable.
Table 87 Durable Status—Components
Item
Description
Name
Name of the shared durable.
Message Count
Number of unacknowledged messages in the shared durable.
Message Size
Size (in bytes) of unacknowledged messages.
Shared Durable Subscribers
The Shared Durable Subscribers pane displays recent operating details of the
subscribers that share a durable.
TIBCO FTL Administration
Monitoring a Shared Durable 293
|
Table 88 Shared Durable Status—Components
Item
Description
Each row represents one subscriber object sharing the durable.
Client ID
The subscriber object is in this client.
Last
Acknowledged
Approximate elapsed time since the subscriber acknowledged a message.
Last Dispatched
Approximate elapsed time since the client dispatched a message for the
subscriber (from an event queue).
Last Sent
Approximate elapsed time since the store server sent a batch of messages to
the subscriber.
Pending Messages
Number of messages sent to this client subscriber that remain
unacknowledged.
TIBCO FTL Administration
294
| Chapter 15
Persistence (Stores and Durables)
Starting a Persistence Server
1. Configure persistence using the realm server interface.
2. If a state file exists, check that it is current. If it is stale, remove it.
For more information, see Saving and Loading Persistence State on page 298,
and Restarting a Persistence Server with Saved State on page 299.
3. Start the server on its host computer using its command line (see tibstore
Command Line on page 295) or using your own start script.
Stopping a Persistence Server
To stop an individual persistence server, terminate the process.
To confirm the server’s new status, use the realm server interface (see Persistence
Servers Monitoring Summary on page 283 and Monitoring a Persistence Server
on page 286).
See Also
Suspending the Persistence Cluster, page 298
TIBCO FTL Administration
tibstore Command Line 295
|
tibstore Command Line
tibstore is an executable component that implements the persistence store
server. Administrators use the tibstore command line executable to start
tibstore server processes.
Most command line parameters and options have both a short and a long form.
The command line parser accepts either form.
Before starting the tibstore executable, you must ensure that the library path
environment variable includes the FTL product installation bin directory.
Table 89 tibstore Command Line Parameters (Sheet 1 of 3)
Parameter
Arguments
Description
Display a help message describing the command
line parameters and options.
--help
-h
Realm
--name
server_name
Set the name of this tibstore server. The
server_name must match one of the names defined in
the cluster. Each server process must use a distinct
name.
-n
--realmserver
Required.
URL
Required.
URL of the realm server.
-rs
The tibstore server contacts the realm server at
this location to receive its realm definition. Supply
the location of the primary realm server or a
satellite server (see Connect Port on page 86).
--secondary-realm-server
-s
URL
Optional.
URL of the backup realm server.
If the regular realm server is unavailable, the
tibstore server contacts the backup realm server
at this location to receive its realm definition.
Supply the location of the backup realm server (see
Connect Port on page 86).
TIBCO FTL Administration
296
| Chapter 15
Persistence (Stores and Durables)
Table 89 tibstore Command Line Parameters (Sheet 2 of 3)
Parameter
Arguments
Description
path
Optional.
Working Storage
--data
When present, the tibstore server stores its
working data files in this path location. (The
directory at path must exist; the tibstore server
does not create it automatically.)
-d
When absent, the default path is the current
directory.
Ensure that each tibstore server process uses a
unique path location.
(The tibstore server stores quorum data in this
directory. It does not store messages or
acknowledgements here.)
State File
See also, Saving and Loading Persistence State on page 298.
--savedir
path
Optional.
When present, the tibstore server writes its state
file in this path location. (The directory at path must
exist; the tibstore server does not create it
automatically.)
When absent, the default path is the current
directory.
The state file name is always server_name.state.
A server writes it state file only in response to a
Save command from the Persistence Servers
Management page in the realm server GUI. This
parameter specifies the location, but does not
trigger a save operation.
This parameter does not affect loading a state file.
For more information, see Saving the State of a
Persistence Server on page 298.
TIBCO FTL Administration
tibstore Command Line 297
|
Table 89 tibstore Command Line Parameters (Sheet 3 of 3)
Parameter
Arguments
Description
--load
path
Optional.
When present, the tibstore server loads its state
from this state file. (Specify the file pathname, not
only the directory path.)
When absent, the server loads its state from the
default state file, server_name.state.
For more information, see Restarting a Persistence
Server with Saved State on page 299.
Security
--password-file
path
Optional. (Required for JAAS authentication.)
When present, the tibstore server reads a
username and password from the file at path, and
authenticates itself to the realm server using those
credentials. For details, see Password File on
page 83.
-pf
Logging
--trace
-t
level
Optional.
When present, the tibstore server outputs trace
messages to stderr. You may specify any of the
standard log level strings (see Log Levels in the
book TIBCO FTL Development).
When absent, the default trace level is info.
TIBCO FTL Administration
298
| Chapter 15
Persistence (Stores and Durables)
Saving and Loading Persistence State
The persistence GUI includes a facility to save the content of a server’s stores to a
file. When a server starts, it can load its initial state from that file. You can use this
facility to migrate the persistence cluster to a new physical location, or for nightly
backups.
Task K Suspending the Persistence Cluster
Suspending the cluster is a prerequisite subtask to saving its servers’ state. You
can suspend all the servers in the persistence cluster (however, you cannot
suspend a server individually).
1. In the realm server GUI, view the Persistence Servers monitoring summary
page.
2. Click the wrench icon at the top right of the page, to view the Persistence
Servers Management page.
If JAAS is enabled, you must be in the ftl-admin authorization group to do
this step.
3. Click the Suspend Cluster button. Click Yes to confirm this operation.
4. Wait until all the servers are suspended.
To verify suspension, either check the icon in the Status column or check the
server log messages.
A suspended server is still an active process. However, a suspended server does
not communicate with clients, nor with other servers. Its only available operation
is to save its state to a file.
After a server process is suspended, it cannot resume normal communication
with clients nor with other servers. To return to normal operation, you must stop
the server process, and then restart it.
Task L Saving the State of a Persistence Server
Prerequisite: All the servers in the cluster must be suspended.
5. On the Persistence Servers Management page, select the server or servers to
save.
You may save all the servers, or only a subset. The choice depends on
available disk space, network speed and bandwidth. If you save only a subset,
TIBCO FTL Administration
Saving and Loading Persistence State 299
|
we recommend saving the quorum leader or the server with the latest history
numbers.
6. Click the Save Selected button. Click Yes to confirm this operation.
7. Wait for the servers to finish saving.
To verify the save operation, check both the icon in the Save Status column,
and the server log messages.
If a save operation fails (for example, the disk is full), take corrective action
and save again.
.
The save operation includes only replicated state. If replication is not enabled
for a store, then the save operation excludes the content of that store from the
state file.
The state file name is server_name.state.
For more information, see State File on page 296.
If the state file already exists, the save operation renames it to
server_name.state.backup before writing a new state file.
8. Stop the server processes.
Task M Restarting a Persistence Server with Saved State
9. Determine which state file or files to load. If needed, copy state files.
If you saved the state of all the servers, then each one can load its own state
file.
If you saved a subset of the servers, you could select one state file and arrange
for all the servers to load it.
10. Start the servers. If needed, supply the --load parameter.
If the --load parameter specifies a state file, and the server finds that state
file, then it loads its initial state from that file. If it cannot load that state file,
then the server logs an error and starts with empty state.
If the --load parameter is absent, then server automatically searches for the
default state file in the current directory. If the server finds the default state
file, then it loads its initial state from that file; otherwise, the server starts with
empty state.
11. Verify cluster functionality by checking the icons in the Status column, and
checking the server log messages.
TIBCO FTL Administration
300
| Chapter 15
Persistence (Stores and Durables)
Persistence functionality resumes when the servers can form a quorum. For
details, see Quorum Conditions—General Rule on page 260.
TIBCO FTL Administration
Purging Durables or Stores 301
|
Purging Durables or Stores
You can use the monitoring interface to purge all stored messages from an
individual durable, or from an entire persistence store (that is, from all its
durables).
Purging does not require locking the realm definition. It does require
administrative authorization.
Purging a Durable
1. From the home page, navigate to the Persistence Stores Monitoring Summary.
2. Navigate to the individual store by clicking its name (or its view arrow) in the
summary table; see Durables on page 290.
3. Locate the durable to purge within the durables table, and click its purge icon.
4. Confirm.
This action deletes all messages in the durable. You cannot undo a purge
operation.
Purging a Store
1. From the home page, navigate to the Persistence Stores Monitoring Summary.
2. Locate the store to purge within the summary table, and click its purge icon.
3. Confirm.
This action deletes all messages in the store. You cannot undo a purge
operation.
TIBCO FTL Administration
302
| Chapter 15
Persistence (Stores and Durables)
TIBCO FTL Administration
| 303
Chapter 16
Package Contents
This chapter describes the contents of the installed product.
Topics
•
Directory Structure, page 304
•
Sample Programs, page 305
TIBCO FTL Administration
304
| Chapter 16
Package Contents
Directory Structure
The FTL installation directory contains the subdirectories in Table 90.
Table 90 FTL Directories
Directory
Description
bin
FTL library DLL files (for Windows).
Scripts to run the realm server and its administration utility.
Python scripts and library.
Rendezvous adapter executable.
Transport bridge executable.
Store server executable.
Realm server .jar file.
Jetty web server .jar file.
include
C API header files (in subdirectories).
lib
FTL library files (for UNIX) and .jar files.
samples
Sample programs. For more detail, see Sample Programs on page 305.
TIBCO FTL Administration
Sample Programs 305
|
Sample Programs
The samples directory contains the files in Table 91 and the subdirectories in
Table 92.
Table 93 on page 306 describes some of the sample programs, however, the list is
not exhaustive. For descriptions of other sample programs, see the readme files in
each directory.
Table 91 Files in Samples Directory
Directory
Description
readme.txt
Instructions to compile and run sample programs.
setup
Script that defines environment variables (such as PATH, LD_LIBRARY_PATH and
CLASSPATH) for the samples. We recommend that all programmers start with this
script.
Table 92 Samples Directories
Directory
Description
bin
Executable sample programs, precompiled from C sources.
scripts
Sample scripts to start and stop the realm server. You must start the realm server
with this script before running the sample programs.
Sample script to start the Rendezvous adapter.
Sample configuration files for the realm server and Rendezvous adapter.
The file readme.txt contains instructions for using these samples.
src
Sample program source code in C, Java and .NET. You may use these samples as
models for your application programs.
The file readme.txt contains instructions for compiling.
jaas
Files that configure JAAS authentication and authorization for the sample scripts.
To use JAAS with the samples, supply the -jaas flag to the sample scripts.
config
More sample configuration files, for use as instructional models, but not related to
the sample programs.
TIBCO FTL Administration
306
| Chapter 16
Package Contents
Table 93 Sample Programs
Programs
Description
Each sample program prints a usage summary in response to the -h command line option.
One-to-Many Communication
tibrecv
tibrecv
creates a subscriber and outputs the messages it receives.
Start this program first.
tibsend
tibsend
publishes messages for tibrecv.
One-to-One Communication
tibreply
tibreply
creates a subscriber, and replies to request messages it receives.
Start this program first.
tibrequest
tibrequest creates an inbox subscriber, sends request messages to tibreply, and
receives replies at its inbox.
TIBCO FTL Administration
| 307
Appendix A
Coordination Forms
This appendix contains forms that help developers and administrators coordinate
application details.
Topics
•
Application Coordination Form, page 308
•
Endpoint Coordination Form, page 311
•
Format Coordination Form, page 315
•
Durable Coordination Form, page 320
TIBCO FTL Administration
308
| Appendix A
Coordination Forms
Application Coordination Form
Developers and administrators can use the form in this section to coordinate the
details of an application and its requirements.
Table 94 Application Coordination Form
Identification
Application Name
(Project Title)
Version and Date
Executable File
Names
Developer
Name(s)
Administrator
Name(s)
General
Application
Description
Communicates
with these Other
Applications
Requires Dynamic
Formats?
(Explain)
Requires Low
Latency? (Explain)
Inline Event Queues (List Endpoints and Explain Requirement)
TIBCO FTL Administration
Application Coordination Form 309
|
Number of dispatch threads in application program code
Requires stores and durables?
(If so, complete the Store and Durable Coordination Form.)
Expected Deployment
Realm Name
Realm Server Locations (Define the runtime mechanism that the application uses to obtain the
location of its regular and backup realm servers; for example: command line parameters,
configuration file parameters, environment variables.)
Number of Process Instances (approximate):
Do these processes use the group facility?
Group name:
Hardware
Network
Part of an Application Suite with other Applications?
Specific Start Order within the Suite?
Differential Treatment of Processes (based on hostname or identifier)
Application Instance Identifier (for example: command line parameter, configuration file parameter,
environment variable)
TIBCO FTL Administration
310
| Appendix A
Coordination Forms
TIBCO FTL Administration
Endpoint Coordination Form 311
|
Endpoint Coordination Form
Developers and administrators can use the form in this section to coordinate the
details that enable effective and efficient data transmission among application
programs. It captures specific details about each endpoint ability, including a brief
description of the messages that each ability carries, the expected volume of data
in each ability, and the priority of the data (relative to other messages).
Administrators use these details to select appropriate host computers and
transports.
Table 95 Endpoint Coordination Form
Description of Messages
Urgent
Volume
Endpoint Name:
Related Endpoints:
Subscriber
Inbox Subscriber
Send
Send to Inbox
Process (PROC) transport needed: Yes | No (choose one).
Largest outbound message size (in bytes): Send ____. Send to Inbox ____.
For send abilities, configure either Backlog Buffer Size _____ or Blocking Send (choose one).
TIBCO FTL Administration
312
| Appendix A
Coordination Forms
Description of Messages
Urgent
Volume
Endpoint Name:
Related Endpoints:
Subscriber
Inbox Subscriber
Send
Send to Inbox
Process (PROC) transport needed: Yes | No (choose one).
Largest outbound message size (in bytes): Send ____. Send to Inbox ____.
For send abilities, configure either Backlog Buffer Size _____ or Blocking Send (choose one).
Endpoint Name:
Related Endpoints:
Subscriber
Inbox Subscriber
Send
Send to Inbox
Process (PROC) transport needed: Yes | No (choose one).
Largest outbound message size (in bytes): Send ____. Send to Inbox ____.
For send abilities, configure either Backlog Buffer Size _____ or Blocking Send (choose one).
TIBCO FTL Administration
Endpoint Coordination Form 313
|
Description of Messages
Urgent
Volume
Endpoint Name:
Related Endpoints:
Subscriber
Inbox Subscriber
Send
Send to Inbox
Process (PROC) transport needed: Yes | No (choose one).
Largest outbound message size (in bytes): Send ____. Send to Inbox ____.
For send abilities, configure either Backlog Buffer Size _____ or Blocking Send (choose one).
Endpoint Name:
Related Endpoints:
Subscriber
Inbox Subscriber
Send
Send to Inbox
Process (PROC) transport needed: Yes | No (choose one).
Largest outbound message size (in bytes): Send ____. Send to Inbox ____.
For send abilities, configure either Backlog Buffer Size _____ or Blocking Send (choose one).
TIBCO FTL Administration
314
| Appendix A
Coordination Forms
Description of Messages
Urgent
Volume
Endpoint Name:
Related Endpoints:
Subscriber
Inbox Subscriber
Send
Send to Inbox
Process (PROC) transport needed: Yes | No (choose one).
Largest outbound message size (in bytes): Send ____. Send to Inbox ____.
For send abilities, configure either Backlog Buffer Size _____ or Blocking Send (choose one).
TIBCO FTL Administration
Format Coordination Form 315
|
Format Coordination Form
Table 96 Format Coordination Form
Developers and administrators can use the form in this section to coordinate the
details of message formats for an application. It captures specific details about
each format.
Field Name
Datatype
Format Name:
Field 1
Field 2
Field 3
Field 4
Field 5
Field 6
Field 7
Field 8
Field 9
Field 10
TIBCO FTL Administration
316
| Appendix A
Coordination Forms
Field Name
Format Name:
Field 1
Field 2
Field 3
Field 4
Field 5
Field 6
Field 7
Field 8
Field 9
Field 10
Format Name:
Field 1
Field 2
Field 3
Field 4
Field 5
Field 6
Field 7
Field 8
Field 9
Field 10
TIBCO FTL Administration
Datatype
Format Coordination Form 317
|
Field Name
Datatype
Format Name:
Field 1
Field 2
Field 3
Field 4
Field 5
Field 6
Field 7
Field 8
Field 9
Field 10
Format Name:
Field 1
Field 2
Field 3
Field 4
Field 5
Field 6
Field 7
Field 8
Field 9
Field 10
TIBCO FTL Administration
318
| Appendix A
Coordination Forms
Field Name
Format Name:
Field 1
Field 2
Field 3
Field 4
Field 5
Field 6
Field 7
Field 8
Field 9
Field 10
Format Name:
Field 1
Field 2
Field 3
Field 4
Field 5
Field 6
Field 7
Field 8
Field 9
Field 10
TIBCO FTL Administration
Datatype
Format Coordination Form 319
|
Field Name
Datatype
Format Name:
Field 1
Field 2
Field 3
Field 4
Field 5
Field 6
Field 7
Field 8
Field 9
Field 10
TIBCO FTL Administration
320
| Appendix A
Coordination Forms
Durable Coordination Form
Table 97 Durable Coordination Form
Developers and administrators can use the form in this section to coordinate the
details of durables.
Durable Subscribers
Subscriber
Endpoint
Goal of Durable
Delivery Assurance _______ or Apportioning Message Stream _______
Publisher
Related Endpoints
List the publisher endpoints from which these durable subscribers
require messages.
Durable
Subscriber Names
List the durable subscriber names on this endpoint.
Content Matcher
If these durable subscribers use a content matcher, specify it here.
Otherwise, indicate None.
TIBCO FTL Administration
Durable Coordination Form 321
|
Subscriber
Endpoint
Goal of Durable
Delivery Assurance _______ or Apportioning Message Stream _______
Publisher
Related Endpoints
List the publish endpoints from which these durable subscribers require
messages.
Durable
Subscriber Names
List the durable subscriber names on this endpoint.
Content Matcher
If these durable subscribers use a content matcher, specify it here.
Otherwise, indicate None.
Subscriber
Endpoint
Goal of Durable
Delivery Assurance _______ or Apportioning Message Stream _______
Publisher
Related Endpoints
List the publish endpoints from which these durable subscribers require
messages.
Durable
Subscriber Names
List the durable subscriber names on this endpoint.
Content Matcher
If these durable subscribers use a content matcher, specify it here.
Otherwise, indicate None.
TIBCO FTL Administration
322
| Appendix A
Coordination Forms
Subscriber
Endpoint
Goal of Durable
Delivery Assurance _______ or Apportioning Message Stream _______
Publisher
Related Endpoints
List the publish endpoints from which these durable subscribers require
messages.
Durable
Subscriber Names
List the durable subscriber names on this endpoint.
Content Matcher
If these durable subscribers use a content matcher, specify it here.
Otherwise, indicate None.
TIBCO FTL Administration
Upgrade Migration to a New Release 323
|
Appendix B
Upgrade Migration to a New Release
To upgrade from an earlier release of TIBCO FTL, read this appendix first.
Topics
•
Upgrading Realm Servers, page 324
•
Upgrading tibstore Servers, page 325
TIBCO FTL Administration
324
| Appendix B
Upgrade Migration to a New Release
Upgrading Realm Servers
The realm server maintains its database state on the file system. This stored
database enables straightforward migration to new releases.
Old and new realm servers can coexist during upgrade migration, which enables
continuous service.
Task N Upgrading a Set of Affiliated Realm Servers
Upgrade each individual realm server. We recommend this order:
1. Primary
2. Primary’s backup
3. Each satellite and then its backup
Task O Upgrading Each Individual Realm Server Process
1. Backup the realm server database.
See --backup_database on page 95 (or use your own custom script that calls
the tibrealmadmin utility with this command).
2. Stop the old realm server process.
See --shutdown on page 95 (or use your own custom script that calls the
utility with this command).
tibrealmadmin
3. Install the new realm server on the host computer—including executable files,
plus library and script support files. Install the full FTL product. See
instructions in TIBCO FTL Installation.
4. Start the new realm server process using the same command or script that you
had used for the old realm server.
The new realm server loads the existing realm database files, and is ready to
serve clients.
5. If the new realm server has satellites or a backup, wait sufficient time for those
processes to reestablish contact with the new realm server process.
6. If the new realm server has a backup, wait sufficient time for clients to migrate
from the backup to the new realm server. Then upgrade the backup realm
server.
See Also
Using the tibrealmserver Executable, page 85.
Using the tibrealmadmin Utility, page 94.
TIBCO FTL Administration
Upgrading tibstore Servers 325
|
Upgrading tibstore Servers
After upgrading the realm server and the tibstore cluster to release 4.1,
administrators may configure replication of stores that contain shared durables.
Task P Rolling Upgrade of tibstore from Release 4.0 to 4.1
The tibstore server executables of release 4.0 and 4.1 can cooperate in the same
cluster, so you can upgrade tibstore without a complete shutdown of the store
feature.
1. Upgrade Realm Servers Upgrade all realm servers to the new release; see
Upgrading Realm Servers on page 324.
2. Determine tibstore Server Upgrade Order Choose the order in which you will
upgrade the tibstore servers. First upgrade servers that are not the quorum
leader; you must upgrade the quorum leader process last.
3. Ensure the Cluster is Up-to-Date Use the monitoring GUI to verify that all the
servers in the cluster are running and up-to-date; see Persistence Servers
Monitoring Summary on page 283.
4. Stop one Server Process Stop one tibstore server processes. No special
utility commands are needed.
5. Clean Up Uninstall the old FTL installation package from that server’s host
computer. See instructions in TIBCO FTL Installation.
6. Install New Install the new release (the full FTL product) on that host
computer. See instructions in TIBCO FTL Installation.
7. Start the New Server Restart the upgraded tibstore server process on that
host computer.
8. Synchronize Data Wait for the new server to synchronize and join the quorum.
9. Repeat Repeat from step 3 until you have upgraded all the tibstore servers.
10. Upgrade Clients Ensure that all persistence clients use the latest client library.
11. Configure Replication Administrators may now configure replication of stores
that contain shared durables.
TIBCO FTL Administration
326
| Appendix B
Upgrade Migration to a New Release
TIBCO FTL Administration
FTL Processes as Windows Services 327
|
Appendix C
FTL Processes as Windows Services
You can arrange for realm servers, persistence servers and transport bridges to
run as Windows services.
Topics
•
Overview, page 328
•
Installing a Persistence Server as a Windows Service, page 329
•
Installing a Transport Bridge as a Windows Service, page 330
•
Installing the Realm Server as a Windows Service, page 331
•
Uninstalling a Windows Service, page 333
TIBCO FTL Administration
328
| Appendix C
FTL Processes as Windows Services
Overview
To arrange Windows services, we recommend using the prunsrv tool, which is
part of the Apache Procrun package. The FTL installer includes this package on
Windows platforms. For documentation, see
http://commons.apache.org/proper/commons-daemon/procrun.html.
Prerequisite
Before arranging FTL processes as Windows services, ensure that both Java and
the FTL Windows package are installed on a local disk of the host computer (not
on a mapped network drive).
TIBCO FTL Administration
Installing a Persistence Server as a Windows Service 329
|
Installing a Persistence Server as a Windows Service
Model your command line on this template:
prunsrv.exe //IS/tibstore
--DisplayName="TIBCO FTL tibstore (pserver) Persistence Server"
--StartImage=TIBCO_HOME\ftl\version\bin\tibstore.exe
--LibraryPath=TIBCO_HOME\ftl\version\bin
--StartParams=-rs;realm_server_URL;--name;pserver_name
--DependsOn tibrealmserver
Notice these aspects of this command line template:
•
--StartImage
•
--LibraryPath
•
--StartParams contains the command line parameters for the tibstore
executable. Semicolon (;) is the separator character, as prunsrv does not allow
spaces.
•
--DependsOn
is the file path of the persistence server executable.
is the directory containing FTL DLL files.
indicates the realm server, specified by its name as a Windows
service.
TIBCO FTL Administration
330
| Appendix C
FTL Processes as Windows Services
Installing a Transport Bridge as a Windows Service
Model your command line on this template:
prunsrv.exe //IS/tibbridge
--DisplayName="TIBCO FTL tibbridge Transport Bridge"
--StartImage=TIBCO_HOME\ftl\version\bin\tibbridge.exe
--LibraryPath=TIBCO_HOME\ftl\version\bin
--StartParams=-rs;realm_server_URL;-n;bridge_name
--DependsOn tibrealmserver
Notice these aspects of this command line template:
•
--StartImage
•
--LibraryPath
•
contains the command line parameters for the tibbridge
executable. Semicolon (;) is the separator character, as prunsrv does not allow
spaces.
•
--DependsOn
is the directory containing FTL DLL files.
--StartParams
service.
TIBCO FTL Administration
is the file path of the transport bridge executable.
indicates the realm server, specified by its name as a Windows
Installing the Realm Server as a Windows Service 331
|
Installing the Realm Server as a Windows Service
Model your command line on this template:
prunsrv.exe //IS/tibrealmserver
--DisplayName="TIBCO FTL Realm Server"
--Install=TIBCO_HOME\ftl\version\bin\prunsrv.exe
--StartMode=java
--StopMode=java
--StartClass=com.tibco.ftl.realmserver.RealmServer
--StopClass=com.tibco.ftl.admin.RSAdmin
--StartParams=--http;localhost:port;
--StopParams=-rs;http://localhost:port;-x
--JavaHome=Java_folder
--LibraryPath=TIBCO_HOME\ftl\version\bin
--Classpath=TIBCO_HOME\ftl\version\bin\realmserver.jar;TIBCO_HOME\
ftl\version\bin\jetty9-all.jar;TIBCO_HOME\ftl\version\bin\h2-1.3.159.
jar;TIBCO_HOME\ftl\version\lib\json_simple-1.1.jar;TIBCO_HOME\ftl\
version\lib\tibftl.jar
Notice these aspects of this command line template:
•
--Install
•
Specify --StartMode, --StopMode, --StartClass and --StopClass exactly
as shown in this template.
•
--StartParams contains the command line parameters for the realm server
executable (tibrealmserver). This template illustrates only the minimum
required parameter set. Semicolon (;) is the separator character, as prunsrv
does not allow spaces.
•
--StopParams contains the command line parameters for the realm server
administration utility (tibrealmadmin). This template illustrates the
command to shut down the realm server. Semicolon (;) is the separator
character, as prunsrv does not allow spaces.
is the file path of the prunsrv executable.
If you use JAAS for realm server security, then we do not recommend using
--StopParams.
Instead, stop the realm server using the tibrealmadmin utility.
Including credentials in the --StopParams would expose that sensitive
information, posing a security risk.
is the directory containing JDK 1.7.
•
--JavaHome
•
--LibraryPath
is the directory containing FTL JAR files.
TIBCO FTL Administration
332
| Appendix C
FTL Processes as Windows Services
•
TIBCO FTL Administration
lists the JAR files that the realm server requires. You must
specify all of these files.
--Classpath
Uninstalling a Windows Service 333
|
Uninstalling a Windows Service
Model your command line on this template:
prunsrv.exe //DS/service_name
TIBCO FTL Administration
334
| Appendix C
FTL Processes as Windows Services
TIBCO FTL Administration
| 335
Index
A
ability 4, 18, 19
connector 20
cover 21
grid 19
in diagrams 19
active deployment request panel, realm server
interface 170
adapter, see Rendezvous adapter
affiliated realm server 75
application 5
definition 6, 23
configuring 123
diagram 23
definitions, summary 122
instance 5
definition 6, 24
as solution 16
configuring 127
process instance 23
apportioning message streams 259
architecture 252
asymmetric multicast topology 42
authentication & authorization
realm server 82
Rendezvous adapter 197
transport bridge 83, 233
auto-save, realm server interface 99
B
backlog
send 47
transport configuration 133
backup realm server 75
blocking send 47
restriction with inline mode 48
bridge
definition page 242
status, monitoring 245
summary of definitions 241
summary, monitoring 244
transport 221
browsers, support for 98
built-in format 10, 13
bus, transports establish bus 36
C
client
disable 164
status, monitoring 161
summary, monitoring 160
client monitoring 181
sample interval 140
cluster, persistence 260
configuring 270
collision, durable subscriber 258
communication abilities 18
connect end, pair connection 44
connection
connection-oriented protocol 44
instance 26
graph 145
connector 20, 129
as abilities 16
example 30, 32
in diagrams 20
content matcher 3
contents of installed package 304
coordination forms 307
cover 21
TIBCO FTL Administration
336
| Index
customer support xxv
D
datatype, table of field types 137
default durable 258
configuring 282
default instance 25
delivery assurance 253
architecture 251
deploy
last request, realm server interface 173
realm server command 101
transaction 112
deployments, realm server interface 168
direct path requirement for non-shared durables 253,
257
direction, ability 18
directory tree structure 304
disable 164
realm server command 103
Rendezvous adapter 197
durable
acknowledgement mode, durable subscriber 268
configuring 277
default 258
monitoring 290
durable subscriber
application configuration 263
collision 258
configuring 281
dynamic format 10
restricting 141
per application 125
per realm 140
dynamic TCP 60
dynamic update of realm definition 115
E
edit
realm server command 101
transport, edit configuration manually 134
eFTL
configuring 121
monitoring 155
empty persistence server 260, 283
endpoint 4, 17
abilities 18
as requirement 16
implementing 17
in diagrams 19
endpoint connector 129
F
fault tolerance
configuring realm server and clients 80
group facility 215
persistence cluster 262
field 3
table of datatypes 137
filter, realm server interface 106
force quorum 261, 284
format 3
built-in 13
definition 6
definition, configuring 136
designing and defining 12
managed, dynamic and built-in 10
restricting 141
show historic versions 135
summary 135
forms, coordination 307
fragmentary transport 38
G
general rule, quorum formation conditions 260
TIBCO FTL Administration
Index 337
|
global scope 56
graph
instance connections 145
transport relationships 152
group facility 215
J
JAAS 82
Rendezvous adapter 197
samples 305
transport bridge 83, 233
H
L
historic format versions 135
hub and spoke topology 41
I
icons
persistence server status 284
realm server browser interface 101
implement endpoint 17
inbound
direction 4
inbox 3
ability 19
init_bridge.py 238, 246
init_groups.py 218
inline mode 49
and blocking send, restriction 48
and receive spin limit 52
installed directories 304
instance 5
application instance definition 24
default vs. named 25
connections 26
graph 145
process 23
interest, subscriber 46
inter-thread (PROC) transport 72
last deployment request, realm server interface 173
leader, quorum 260, 260
length, maximum for names 108
listen end, pair connection 44
location of components 304
lock
lock & edit, realm server command 101
realm modification 111
loopback, multicast 67
M
manage all formats 141
application parameter 125
modification requires restart 115, 118
realm parameter 140
managed format 10
manual transport configuration 134
matching algorithm for application instances 25
persistence 281
maximum length 108
Mcast, see multicast transport
mesh
pair connection 41
topology 40
message 3
field types 137
message interest, store 269
model, realm configuration 16
modify realm definition 115
TIBCO FTL Administration
338
| Index
multicast
asymmetric topology 42
transport 64
multiple transports 28
N
name
reserved 108
named instance definition 25
non-blocking send 47
non-shared durables 253, 268
O
one-to-many and one-to-one communication 3
one-to-many and one-to-one, reach 18
opaque, built-in message format 13
options, realm server command line 84
outbound
direction 4
transports 265
server monitoring 286
shared durable, monitoring 292
store, monitoring status 290
stores, monitoring summary 289
preload formats 10, 126
priority 28
PROC transport (inter-thread) 72
process
instance, application 23
start order 44
properties
realm server command line options 84
realm, configuring 139
publisher 3
publisher mode, store 267
purge
client or satellite 103
durable 103, 291
durable or store 301
store 103, 289
Python scripts, realm configuration using 177
Q
P
package contents 303
pair connection 44
larger topologies 40
password file
Rendezvous adapter 197
transport bridge 83, 233
persistence 251
configuring servers and stores 270
empty server 260, 283
fault tolerance 262
server
command line 295
purge 301
status and icons 284
summary 283
TIBCO FTL Administration
quorum 260
conditions to form, general rule 260
R
RDMA 57
reach, ability 18
realm 5
browsing using GUI tools 143
configuration model 16
configuring using GUI 121
configuring using Python scripts 177
deploy
restart client 115
Index 339
|
transaction 112
lock 111
monitoring 155
object 5
properties, configuring 139
Python scripts 177
requirements 27
server 5
administrative utility 94
affiliated, backup & satellite 75
authentication and authorization 82
browser URL 98
command line 85
disabling clients 164
icons 101
process 74
security 82
storage 110
terminology 6
receive
ability 19
direction 18
receive spin limit 133, 50
receive_inbox ability 19
redeploy, realm server command 174
refresh, realm server command 101
relationships, transport 38
graph 152
reliable multicast transport 64
reliable UDP transport 70
remote direct memory access (RDMA) 57
Rendezvous adapter 192
configuration 198
field datatype mapping 206
JAAS 197
message subject 205
request/reply interactions 209
subject
collision and validation 212
translation 205
tibrvadapter 196
XML configuration 198
request/reply interactions, Rendezvous adapter 209
require subscriber interest, multicast transport 65
requirements
direct path for non-shared durables 253, 257
realm 27
transports, unique 37
reserved names 108
restricting formats 141
restrictions
names 108
Rendezvous adapter 214
revert, realm server command 102
rs_script.py 179
RUDP transport 70
S
sample programs 305
satellite 75
configuring realm server and clients 81
monitoring summary 165
save, realm server command 102
security, realm server 82
send
ability 19
blocking vs. non-blocking 47
direction 18
send_inbox ability 19
serial communications 28
server, persistence 260
command line 295
configuring 272
server, realm, monitoring 157
setup script
group facility 218
transport bridge 238, 246
shared durables 259, 268
configuring 278
shared memory transport 55
non-blocking send 47
shm, see shared memory transport
show historic formats 135
size units 109
start order, process 44
static TCP 62
TIBCO FTL Administration
340
| Index
statistics
client monitoring 181
persistence server 288
status, persistence server 284
store, persistence 253
associating with an application endpoint 280
configuring 275
message interest 269
publisher mode 267
subscriber 3
interest 46
subscriber name (durable), configuring 281
summary pages, realm server interface 106
support, contacting xxv
T
TCP
dynamic 60
static 62
technical support xxv
tibbridge (executable) 232
TIBCO_HOME xxii
tibrealmadmin, command line 94
tibrealmserver, command line 85
tibrvadapter, command line 196
tibstore command line 295
topology
bus 40
transport bridge 228
transport 4
abilities 18
as communications interface 36
definition 6
configuring 131
unitary and fragmentary 38
dynamic TCP 60
establish a bus 36
example 30, 32
implements endpoint 17
in diagrams 20
multicast 64
overview 36
persistence server 265
PROC 72
relationships 38
graph 152
remote direct memory access (RDMA) 57
roles 36
RUDP 70
shared memory 55
static TCP 62
summary of definitions 130
types 28
transport bridge 221
types, field 137
U
underscore character 108
unitary
mesh topology 40
transport definition 38
units 109
URL, realm server browser interface 98
V
validation results, realm server interface 144
volume 28
W
weight, persistence server 260
TIBCO FTL Administration
Index 341
|
X
XML, Rendezvous adapter configuration 198
TIBCO FTL Administration