Skip to Content
🚧 This page is still under construction 🚧
DocumentationπŸ‘· WorkerQuerying the Worker

Querying the Worker

Selecting an Interface

Orter provides several interfaces for querying data in collections assigned to a worker instance. To help you choose the most suitable interface, consider the following recommendations:

For ease of use, flexibility, or web applications, we recommend:

  • REST Interface
    The REST interface is easy to integrate. However, if you require high throughput or low latency, consider another interface. Each request to the worker agent incurs overhead, resulting in higher latency and lower maximum throughput.
  • WebSocket Interface
    The WebSocket interface requires slightly more integration effort, but offers significantly better performance than REST. A single WebSocket connection can be used to submit multiple queries with minimal overhead.

For high performance and network access, we recommend:

  • TCP Interface
    TCP offers low overhead, resulting in low latency and high throughput. Using the TCP interface requires more integration work, especially if you are less familiar with TCP sockets.
  • UDP Interface
    UDP provides extremely low overhead, resulting in very low latency and very high throughput. Integration effort is higher for UDP sockets. Note: UDP does not guarantee delivery of queries and responses between client and worker. If reliability is important, use the TCP Interface.

For high performance and local access:

  • UNIX Socket Interface
    This is the best performing interface in terms of throughput and latency, but requires significant integration effort. It is best used as a sidecar container.
InterfaceProsConsBest Suited
RESTEase of useHigh overheadLow latency and throughput requirements
WebSocketEase of use, StreamingMedium overheadWeb applications
TCPHigh performance πŸš€Integration complexityHigh performance requirements
UDPVery high performance πŸš€Integration complexity, can be unreliableVery high performance requirements
UNIX SocketVery high performance πŸš€No network accessWorker agent on the same machine as the client

Authentication

⚠️

Currently, worker agent endpoints are unauthenticated. Restrict network access accordingly.
Support for worker agent client API keys is coming soon.

Interfaces

REST

The worker exposes a REST interface on port 8082. Assuming you have a collection loaded on the worker agent, you can query the worker as follows:

export COLLECTION_ID=93a278aa-87c4-4ee0-8dc3-c7a7fce77806 export LATITUDE=43 export LONGITUDE=11 export SEARCH_RADIUS_M=300 curl localhost:8082/collection/$COLLECTION_ID?lat=$LATITUDE&long=$LONGITUDE&radius=$SEARCH_RADIUS_M

WebSocket

⚠️

This interface is still under construction.

TCP

The worker client provides a TCP interface on port 6969. Refer to the Query schema and Response schema for request and response formats. All queries must be newline separated; append a \n at the end of your query.

echo "{\"lat\": 43, \"lon\": 11, \"radius\": 300}\n" | nc 127.0.0.1 6969

UDP

The worker client provides a UDP interface on port 6666. Refer to the Query schema and Response schema for request and response formats. All queries must be newline separated; append a \n at the end of your query.

echo "{\"lat\": 43, \"lon\": 11, \"radius\": 300}\n" | nc -u 127.0.0.1 6666

UNIX Socket

⚠️

This interface is still under construction.

gRPC

⚠️

This interface is still under construction.

Schemas

Query

pub struct Query { pub lon: f64, pub lat: f64, /// Radius in meters pub radius: f64, /// If None, query all collections pub collections: Option<Vec<Uuid>>, }

Response

pub struct Response { pub response: Vec<serde_json::Value>, }