tricorder-observability / Starship

Starship: next-generation Observability platform built with eBPF+WASM
GNU Affero General Public License v3.0
163 stars 23 forks source link

Need to build a structured communication channel between API Server's HTTP and gRPC components #150

Open nascentcore-eng opened 1 year ago

nascentcore-eng commented 1 year ago

Is your feature request related to a problem? Please describe. Right now API Server's HTTP component and metadata service broadcast a signal over conditional variable to inform the gRPC side to take actions.

Because the conditional variable does not have context, gRPC side need to blindly examine all three tables in SQLite, which 1) forces unnecessary complexity, also 2) makes the code harder to read, constantly increases the difficulty of making new changes.

Describe the solution you'd like Create a channel with a common data structure, but having different types of operations. With a type information, and a union of actual data needed for perform the action.

Are you on Kubernetes, if so, what version N/A

Kernel version N/A

Describe alternatives you've considered Use Golang data structured with locks and share the locked data structure between different components.

Additional context N/A

feuyeux commented 1 year ago

Considering discoupling the process and code design, between the http serving and grpc request in tricorder api server, it's better to leverage a task queue.