12
RDA3 HIGH-LEVEL – API & ARCHITECTURE 26TH JUNE 2013 Ilia Yastrebov BE-CO-IN

RDA3 high- level – API & architecture 2 6th JUNE 201 3

  • Upload
    velma

  • View
    31

  • Download
    0

Embed Size (px)

DESCRIPTION

RDA3 high- level – API & architecture 2 6th JUNE 201 3. Ilia Yastrebov BE-CO-IN. RDA3 Design Principles. Functional aspects Controls Middleware based on Device / Property model Operations: GET, SET (sync and async ), SUBSCRIBE Enhanced runtime diagnostics & statistics - PowerPoint PPT Presentation

Citation preview

Page 1: RDA3  high- level  – API &  architecture 2 6th JUNE  201 3

RDA3 HIGH-LEVEL – API & ARCHITECTURE

26TH JUNE 2013

Ilia Yastrebov BE-CO-IN

Page 2: RDA3  high- level  – API &  architecture 2 6th JUNE  201 3

RDA3 High-Level - API & Architecture 2

RDA3 Design Principles

Functional aspects Controls Middleware based on Device/Property model Operations: GET, SET (sync and async), SUBSCRIBE Enhanced runtime diagnostics & statistics

Technical aspects C++ & Java support Lightweight (minimum dependencies, small footprint) Non-blocking communication QoS guarantees (priorities for clients & subscriptions) Scalable Half-Sync/Half-Async threading pattern

○ Sync: Event demultiplexer (Reactor)○ Async: Message priority queue + Threadpool (Scheduler)

API based on interfaces and Dependency Injection

26th June 2013

Page 3: RDA3  high- level  – API &  architecture 2 6th JUNE  201 3

RDA3 High-Level - API & Architecture 3

RDA3 Architecture Transport Layer

Implements P2P non-blocking request-reply communication Wraps ZeroMQ behind the interface Detects disconnections / Provides reconnection facilities

High Layer Client and Server API Maintains connection state & client sessions Extensible protocol independent of TL Serialization Subscriptions (with notifications ordering) Processing engine (scheduler) Integrates with Directory Service and RBAC (authorization) Implements QoS (client & subscription priorities)

26th June 2013

Application

High Layer

Transport

ZeroMQ

RD

A3

Page 4: RDA3  high- level  – API &  architecture 2 6th JUNE  201 3

RDA3 High-Level - API & Architecture 4

Client API: Request-Reply (GET & SET)

26th June 2013

Page 5: RDA3  high- level  – API &  architecture 2 6th JUNE  201 3

RDA3 High-Level - API & Architecture 5

Client API: Subscriptions

26th June 2013

Page 6: RDA3  high- level  – API &  architecture 2 6th JUNE  201 3

RDA3 High-Level - API & Architecture 6

Client Flow Diagram

26th June 2013

Page 7: RDA3  high- level  – API &  architecture 2 6th JUNE  201 3

RDA3 High-Level - API & Architecture 7

Subscription States

26th June 2013

Page 8: RDA3  high- level  – API &  architecture 2 6th JUNE  201 3

RDA3 High-Level - API & Architecture 8

Server API: Request-Reply

26th June 2013

Page 9: RDA3  high- level  – API &  architecture 2 6th JUNE  201 3

RDA3 High-Level - API & Architecture 9

Server API: Subscriptions

26th June 2013

Page 10: RDA3  high- level  – API &  architecture 2 6th JUNE  201 3

RDA3 High-Level - API & Architecture 10

Server Flow Diagram

26th June 2013

Page 11: RDA3  high- level  – API &  architecture 2 6th JUNE  201 3

RDA3 High-Level - API & Architecture 11

Serialization

Evaluated several 3rd party solutionsGoogle Protobuf (IDL based, huge project)MessagePack (no IDL, many deps, slow for double arrays)

Ended up with home-made serializationSmall project, easy to implementNo dependenciesPerformance gain

○ Data object with 3 arrays (int[], double[], String[]) of 40 elements each.Results for 100000 serialization+deserialization iterations

26th June 2013

Page 12: RDA3  high- level  – API &  architecture 2 6th JUNE  201 3

RDA3 High-Level - API & Architecture 12

Conclusions

Alpha version of RDA3 Client & Server is done for Java Work on RDA3 C++ Server is in progress

Plan to release alpha version in July 2013 Work in close collaboration with users

Regular meetings with most important usersPresented all components of RDA3, approved by clientsAPI was reviewed and approved by all major users

Questions?

26th June 2013