blob: 8e7ce7adceccff139927d52ea6a2939b797e7c83 [file] [log] [blame]
Filip Krzywka4bb79b72018-09-25 10:57:17 +02001.. This work is licensed under a Creative Commons Attribution 4.0 International License.
2.. http://creativecommons.org/licenses/by/4.0
3
4Design
5======
6
7
8Compatibility aspects (VES-JSON)
9--------------------------------
10
11HV-VES Collector has been designed as a high-volume variant of the existing VES(JSON) collector, and not a completely new collector.
12HV-VES follows the VES-JSON schema - as much as possible
13
14- It uses a Google Protocol Buffers ( GPB/PROTO ) representation of the VES Common Header
15- The PROTO files tend to use most encoding effective types defined by GPB to cover Common Header fields.
16- It makes routing decisions based mostly on the content of the "Domain" parameter
17- It allows to embed Payload of different types (by default PERF3GPP domain is included)
18
19Analytics applications impacts
20
21- An analytics application operating on high-volume data needs to be prepared to read directly from Kafka
22- An analytics application need to operate on GPB encoded data in order to benefit from GPB encoding efficiencies
23- It is assumed, that due to the nature of high volume data, there would have to be dedicated applications provided,
24able to operate on such volumes of data.
25
26Extendability
27-------------
28
29HV-VES was designed to allow for extendability - by adding new domain-specific PROTO files.
30
31The PROTO file, which contains the VES CommonHeader, comes with a binary-type Payload parameter, where domain-specific data shall be placed.
32Domain-specific data are encoded as well with GPB, and they do require a domain-specific PROTO file to decode the data.
33This domain-specific PROTO needs to be shared with analytics applications - HV-VES is not analyzing domain-specific data.
34
35In order to support the RT-PM use-case, HV-VES includes a "PERF3GPP" domain PROTO file, as within this domain,
36the high volume data is expected to be reported to HV-VES collector.
37Still, there are no limitations to define additional domains, based on existing VES domains (like Fault, Heartbeat)
38or completely new domains. New domains can be added "when needed".
39
40GPB PROTO files are backwards compatible, and such a new domain could be added without affecting existing systems.
41
42Analytics applications will have to be as well equipped with this new domain-specific PROTO file.
43Currently, these additional, domain specific proto files could be simply added to respective repos of HV-VES collector.
44
45Implementation details
46----------------------
47
48- Project Reactor is used as a backbone of the internal architecture.
49- Netty is used by means of reactor-netty library.
50- We are using Kotlin so we can write very concise code with great interoperability with existing Java libraries.
51- Types defined in Λrrow library are also used when it improves readability or general cleanness of the code.