From 2ccb7cb0cf038086955c46eebea767fddb331d16 Mon Sep 17 00:00:00 2001 From: Tigran Najaryan <4194920+tigrannajaryan@users.noreply.github.com> Date: Tue, 23 Jul 2019 17:23:38 -0400 Subject: [PATCH] Capture Wire Protocol design goals (#21) This is a follow up from Spec SIG meeting on Jul 18, 2019, recapping the topics that I mentioned in the meeting. The document will help us design the right wire protocol. --- specification/proto-design-goals.md | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 specification/proto-design-goals.md diff --git a/specification/proto-design-goals.md b/specification/proto-design-goals.md new file mode 100644 index 000000000..e51a4d70e --- /dev/null +++ b/specification/proto-design-goals.md @@ -0,0 +1,19 @@ +# Design Goals for OpenTelemetry Wire Protocol + +We want to design a telemetry data exchange protocol that has the following characteristics: + +- Be suitable for use between all of the following node types: instrumented applications, telemetry backends, local agents, stand-alone collectors/forwarders. + +- Have high reliability of data delivery and clear visibility when the data cannot be delivered. + +- Have low CPU usage for serialization and deserialization. + +- Impose minimal pressure on memory manager, including pass-through scenarios, where deserialized data is short-lived and must be serialized as-is shortly after and where such short-lived data is created and discarded at high frequency (think telemetry data forwarders). + +- Support ability to efficiently modify deserialized data and serialize again to pass further. This is related but slightly different from the previous requirement. + +- Ensure high throughput (within the available bandwidth) in high latency networks (e.g. scenarios where telemetry source and the backend are separated by high latency network). + +- Allow backpressure signalling. + +- Be load-balancer friendly (do not hinder re-balancing).