Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.


Warning
titleWIP


Introduction

  • CPS Temporal is a dedicated service, distinct and decoupled from CPS Core (separated option #4 from CPS-78: Deployment View).
  • Integration between Core and Temporal is event notification based, asynchronous, send and forget. By doing this, we are avoiding the dependency from CPS Core on CPS Temporal and its API. Actually, it reverses the dependency, which makes more sense from a conceptual point of view.
  • For each data modification handled by CPS Core,
    • CPS Core is publishing, to a dedicated topic, an event representing the data configuration or state.
    • CPS Temporal is listening to the same topic for the event and is responsible to keep track of all data over time.
    • In the future, some other services can be created to listen to the same topic in order to implement additional functionalities or storage forms.
  • The event messaging system for this integration is either DMAAP or Kafka (to be deployed independently of CPS). The choice between one of the two is made by configuration when deploying CPS services.
  • Events published by CPS Core contains following information:
    • Timestamp
    • Dataspace
    • Schema set
    • Anchor
    • Data (complete json data payload)
  • A contract is defined to make the expected information explicit for the publisher and all subscribers. This contract can be provided by a structured event schema format using Protobuf, Avro or JSON.

Architecture Diagrams

Following diagrams are C4 model diagrams (context, containers and components) for CPS Temporal.

...

Drawio
bordertrue
diagramDisplayName
lboxtrue
revision4
diagramNamecps-temporal-c4
aspectjxYHlsEtXCZLFlEAqQWN
simpleViewerfalse
width1000
aspectHash08e6a9f73512401a812aeec1ce66eabfe85c0f87
linksauto
tbstyletop
diagramWidth481

Data Updated Event Schema

The structure to represent a Data Updated Event for CPS point of view need to to be defined without any ambiguity. This the interface contract to be rely on for:

...

Code Block
titlecps-data-updated-event.json
linenumberstrue
{
  "schema": "urn:cps:org.onap.cps:data-updated-event-schema:1.0.0-SNAPSHOT",
  "id": "38aa6cc6-264d-4ede-b534-18f5c1f403ea",
  "source": "urn:cps:org.onap.cps",
  "type": "org.onap.cps.data-updated-event",
  "content": {
    "timestamp": "2020-12-01T00:00:00.000+0000",
    "coreReferences": {
      "dataspace": {
        "id": "123",
        "name": "my-dataspace"
      },
      "schemaSet": {
        "id": "456",
        "name": "my-schema-set"
      },
      "anchor": {
        "id": "789",
        "name": "my-anchor"
      }
    },
    "data": {
      "interface": {
        "name": "itf-1",
        "status": "up"
      }
    }
  }
}



To Do

  • (warning) Remove ids from event schema Core references. They should not be exposed. Names should be used for Core external references.

...