Provisioning Clustered Services
So far we have learned how to define and implement a service, actually it was nothing more then implementing a java component. at this section we will learn how to provision our components as clustered micro services.
// Create microservice provider Microservices provider = Microservices.builder() .port(4002) // base port .seeds(...) .services(new GreetingServiceImpl(),...) .build();
The line above introduces the service component to the cluster
.port(4002), it reads the information from the service interface.
and registers the instance in the cluster using the
its possible to introduce many service instances to the cluster or clusters for example by running several jvm instances
each containing a service instance or having many services in the same JVM instance.
.port(4002) port is the base port the Microservices member to listen on, by default it might increment +n if
the base port is taken. once a port is allocated the requested services will register the service on the newly allocated port.
if not specified the default base port is 4000.
It is also possible to register services with service tags. the service
is a user defined property as that describes a service instance.
tag helps to distinguish instances and a single instance my
..add() several tags.
Possible reasons for Tags:
- we wish route an select a specific service instance 30% of the times.
- give specific instance some special role in the cluster.
- always choose the most latest version of a service.
Microservices provider = Microservices.builder() .seeds(...) .services().service(new GreetingServiceImpl()) .tag("Weight", "0.3").add() .tag("Version", "1.0.3").add() .tag("Role", "Master").add() .build() .build();