Correct Settings for RFA 8 app using Horizontal Scaling
We have a newly developed application that been implemented in the "Horizontal Scaling" model described in the Threading section of chapter 17 of the RFA 8 C++ Developers Guide. EG: Separate Event Queues, Separate Sessions, and Separate Connections.
The question is twofold:
One: In the Threading section of the documentation, there is no description of how to configure RFA to support this threading model. We believe that it may be un-necessary to configure it explicitly because each event queue is registered against is respective session, and each session has it own connection, but want to be sure. We see that the "Dual-Threaded with Event Queue" (Client Model), 17.4.3, is enabled with threadModel=Dual and by specicifying an EventQueue in registerClient, so are somewhat surprised that we do not have instructions to configure the threadModel parameter.
Two: In section 16 of the RFA Dev guide, there is guidance provided that indicates if implementating Horizontal Scaling, we should set \Adapters\RSSL_Cons_Adapter\singleton = false. The RFA config used by the developer did not scope the \Adapters section, so this parameter is defaulting to true. It states in the footnote, that this will cause a single shared instance of the RSSL_Cons_Adapter to be used, but as we have two seperates sessions, each with its own connection, we are not sure if this is correct, or if we are impacted.
Best Answer
-
With regards the singleton parameter, setting to false ensures that each connection uses its own instance of the RSSL Consumer Adaptor.
The default value of true means that both your connections will share a single instance of the RSSL Adaptor - and thereby share resources.So, to take full advantage of your separate queues, connections etc you need to set it to false. Otherwise you introduce a bottleneck in the single adaptor instance.
The threadModel parameter is used to favour Latency or Throughput.
- The default value of Dual means RFA will optimize for higher throughput.
- The value of Single will optimize for lower latency.
Please refer to the threadModel section 6.5.3.1 of the Developer guide for a more detailed description.
0
Answers
-
The purpose of the horizontal scaling is to distribute the processing of response
message to different threads while running a single process on the machine, so
the threads can be utilized by multiple CPU cores environment.The
basic concept is to create multiple instances of Consumer connections to subscribe
a subset of items, so that each of the applications, sessions, and adapters are
required to process only a subset of the data. This means that application
needs to create multiple OMMConsumer instances with separated Sessions.However,
even there are multiple Sessions and RSSL Connections configured, there is
still only one RFA Adapter instance used. You needs to configure \Adapters\RSSL_Cons_Adapter\singleton
= false to allow each instance of the Session/RSSL_Cons_Adapter pair is
independent of the others.There
is no solid configuration/implementation. Please see the following diagram
which is high-level overview of an application using the Horizontal Scaling
feature and the flexibility of the configuration. For this implementation in
detailed, please see the 16.3 Horizontal Scaling section of the RFA Developers
Guide.0 -
The answers below have been verified as correctly answering the questions asked above and therefore accepted.
0
Categories
- All Categories
- 6 AHS
- 39 Alpha
- 161 App Studio
- 4 Block Chain
- 4 Bot Platform
- 16 Connected Risk APIs
- 47 Data Fusion
- 30 Data Model Discovery
- 608 Datastream
- 1.3K DSS
- 577 Eikon COM
- 4.9K Eikon Data APIs
- 7 Electronic Trading
- Generic FIX
- 7 Local Bank Node API
- Trading API
- 2.7K Elektron
- 1.3K EMA
- 236 ETA
- 519 WebSocket API
- 33 FX Venues
- 10 FX Market Data
- 1 FX Post Trade
- 1 FX Trading - Matching
- 12 FX Trading – RFQ Maker
- 5 Intelligent Tagging
- 2 Legal One
- 20 Messenger Bot
- 2 Messenger Side by Side
- 9 ONESOURCE
- 7 Indirect Tax
- 59 Open Calais
- 264 Open PermID
- 39 Entity Search
- 2 Org ID
- PAM
- PAM - Logging
- 8.4K Private Comments
- 6 Product Insight
- Project Tracking
- ProView
- ProView Internal
- 20 RDMS
- 1.4K Refinitiv Data Platform
- 367 Refinitiv Data Platform Libraries
- 3 Refinitiv Due Diligence
- LSEG Due Diligence Portal API
- 3 Refinitiv Due Dilligence Centre
- Rose's Space
- 1.1K Screening
- 18 Qual-ID API
- 13 Screening Deployed
- 23 Screening Online
- 10 World-Check Customer Risk Screener
- 990 World-Check One
- 44 World-Check One Zero Footprint
- 45 Side by Side Integration API
- Test Space
- 3 Thomson One Smart
- 1.2K TR Internal
- Global Hackathon 2015
- 2 Specialists Who Code
- 10 TR Knowledge Graph
- 150 Transactions
- 142 REDI API
- 1.7K TREP APIs
- 4 CAT
- 21 DACS Station
- 117 Open DACS
- 1.1K RFA
- 103 UPA
- 172 TREP Infrastructure
- 224 TRKD
- 886 TRTH
- 5 Velocity Analytics
- 5 Wealth Management Web Services
- 60 Workspace SDK
- 9 Element Framework
- 5 Grid
- 13 World-Check Data File
- Yield Book Analytics
- 46 中文论坛