Piotr Jaszczyk | 19736a9 | 2018-09-24 11:27:58 +0200 | [diff] [blame] | 1 | .. This work is licensed under a Creative Commons Attribution 4.0 International License. |
| 2 | .. http://creativecommons.org/licenses/by/4.0 |
| 3 | |
| 4 | ======================== |
| 5 | HV-VES (High Volume VES) |
| 6 | ======================== |
| 7 | |
Piotr Jaszczyk | 2df4b8c | 2018-10-05 10:56:38 +0200 | [diff] [blame] | 8 | :Date: 2018-10-05 |
Piotr Jaszczyk | 19736a9 | 2018-09-24 11:27:58 +0200 | [diff] [blame] | 9 | |
| 10 | .. contents:: |
| 11 | :depth: 3 |
| 12 | .. |
| 13 | |
| 14 | Overview |
| 15 | ======== |
| 16 | |
Filip Krzywka | cbd2ded | 2018-09-25 14:43:18 +0200 | [diff] [blame] | 17 | Component description can be found under `HV-VES Collector`_. |
| 18 | |
Piotr Jaszczyk | 2df4b8c | 2018-10-05 10:56:38 +0200 | [diff] [blame] | 19 | .. _HV-VES Collector: ../../services/ves-hv/index.html |
Filip Krzywka | cbd2ded | 2018-09-25 14:43:18 +0200 | [diff] [blame] | 20 | |
| 21 | |
| 22 | TCP Endpoint |
| 23 | ============ |
| 24 | |
| 25 | HV-VES is exposed as NodePort service on Kubernetes cluster on port 30222/tcp. |
| 26 | It uses plain TCP connections tunneled in SSL/TLS or can be run in insecure manner without data encryption on the socket. |
| 27 | Without TLS client authentication/authorization is not possible. |
| 28 | Connections are stream-based (as opposed to request-based) and long running. |
| 29 | |
Piotr Jaszczyk | 2df4b8c | 2018-10-05 10:56:38 +0200 | [diff] [blame] | 30 | Communication is wrapped with thin Wire Transfer Protocol, which mainly provides delimitation. |
| 31 | |
| 32 | .. literalinclude:: WTP.asn |
| 33 | :language: asn |
| 34 | |
Filip Krzywka | cbd2ded | 2018-09-25 14:43:18 +0200 | [diff] [blame] | 35 | Payload is binary-encoded, currently using Google Protocol Buffers representation of the VES Common Header. |
| 36 | |
| 37 | .. literalinclude:: VesEvent.proto |
| 38 | :language: protobuf |
| 39 | |
| 40 | The PROTO file, which contains the VES CommonHeader, comes with a binary-type Payload parameter, where domain-specific |
| 41 | data shall be placed. Domain-specific data are encoded as well with GPB, and they do require a domain-specific |
| 42 | PROTO file to decode the data. |
| 43 | |
| 44 | HV-VES makes routing decisions based mostly on the content of the **Domain** parameter in VES Common Header. |
| 45 | |
| 46 | |
| 47 | Healthcheck |
| 48 | =========== |
| 49 | |
| 50 | Inside HV-VES docker container runs small http service for healthcheck - exact port for this service can be configured |
| 51 | at deployment using `--health-check-api-port` command line option. |
| 52 | |
| 53 | This service exposes single endpoint **GET /health/ready** which returns **HTTP 200 OK** in case HV-VES is healthy |
| 54 | and ready for connections. Otherwise it returns **HTTP 503 Service Unavailable** with short reason of unhealthiness. |
| 55 | |
| 56 | |
| 57 | |
| 58 | |
Piotr Jaszczyk | 19736a9 | 2018-09-24 11:27:58 +0200 | [diff] [blame] | 59 | |