Description
Based on the the design doc in the parent pom, we need a Service Catalog endpoint in the SCM.
public interface ServiceRegistry { void register(ServiceEndpoint endpoint) throws IOException; ServiceEndpoint findEndpoint(String serviceName, int instanceId); Collection<ServiceEndpoint> getAllServices(); }
Where the ServiceEndpoint is something like this:
public class ServiceEndpoint { private String host; private String ip; private ServicePort port; private String serviceName; private int instanceId; ... } public class ServicePort { private ServiceProtocol protocol; private String name; private int port; ... } public enum ServiceProtocol { RPC, HTTP, GRPC }
The ServiceRegistry may have multiple implementation, but as a first step we need a simple implementation which calls a new endpoint on SCM via REST.
The endpoint should persist the data to a local Rocksdb with the help of DBStore.
This task is about to create the server and client implementation. In a follow-up Jira we can start to use the client on the om/datanode/client side to mix the service discovery data with the existing configuration.