CatgirlIntelligenceAgency/code/services-core/control-service
Viktor e8de468b0b
Make executor API talk GRPC (#75)
* (executor-api) Make executor API talk GRPC

The executor's REST API was very fragile and annoying to work with, lacking even basic type safety.  Migrate to use GRPC instead.  GRPC is a bit of a pain with how verbose it is, but that is probably a lesser evil.  This is a fairly straightforward change, but it's also large so a solid round of testing is needed...

The change set breaks out the GrpcStubPool previously residing in the QueryService, and makes it available to all clients.

ServiceId.name was also renamed to avoid the very dangerous clash with Enum.name().

The boilerplate needed for grpc was also extracted into a common gradle file for inclusion into the appropriate build.gradle-files.
2024-02-08 13:01:12 +01:00
..
src Make executor API talk GRPC (#75) 2024-02-08 13:01:12 +01:00
build.gradle (test) Clean up test usage of migrations 2024-01-12 15:55:50 +01:00
readme.md (*) Get multi-node routing working. 2023-10-15 18:38:30 +02:00

Control Service

The control service provides an operator's user interface. By default this interface is exposed on port 8081. It does not offer any sort of access control or authentication.

The control service will itself execute tasks that affect the entire system, but delegate node-specific tasks to the corresponding executor-service via the executor-api.

Conceptually the application is broken into three parts:

  • Application specific tasks relate to the high level abstractions such as blacklisting and API keys
  • System tasks relate to low level abstractions such as the message queue and event log.
  • Node tasks relate to index node specific tasks, such as crawling and indexing.

Central Classes

See Also