Fast, simple Service registry for Client-side service discovery in microservices system.
The project using Nodejs and Hapi framework with Redis for storing info.
$ [sudo] npm install node-registrify -g
There are two ways to use node-registrify: through the command line or by using in your code.
You can use node-registrify to run scripts continuously.
Example
node-registry --server-host localhost --server-port 8000
Options
$ node-registrify --help
Usage: node-registrify [options]
options:
-h, --help output usage information
-V, --version output the version number
--server-host [value] Host on which to listen to (defaults to localhost)
--server-port [value] Port on which to listen to (defaults to 8000)
--redis-host [value] Redis host (defaults to localhost)
--redis-port [value] Redis port (defaults to 6379)
--redis-db [value] Redis db (defaults to 0)
--log-level [value] Log level (defaults to "info")
--log-max-entries [value] Log max entries for a service (defaults to 10)
const NodeRegistrify = require('node-registrify');
NodeRegistrify.init({
api_host: 'localhost',
api_port: '8000',
redis_host: 'localhost',
redis_port: '6379',
redis_db: 0,
log_level: 'info',
log_max_entries: 10
});
NodeRegistrify.run();
curl -XGET /ping
curl -XPUT -F "<meta_key>=<meta_value>"... /services/<service_name>/<host_name>
- Example Client PHP codes (with guzzlehttp/guzzle):
$client = new HttpClient([
'base_uri' => self::$serviceUrl,
'timeout' => self::REQUEST_TIMEOUT_SECONDS
]);
$client->put(sprintf('/services/%s/%s', $service, gethostname()), [
'form_params' => [
'id' => 'redis',
'pid' => getmypid(),
'ip' => '192.168.1.2',
'port' => 6379
]
]);
curl -XDELETE /services/<service_name>/<host_name>
- Example Client PHP codes (with guzzlehttp/guzzle):
$client = new HttpClient([
'base_uri' => self::$serviceUrl,
'timeout' => self::REQUEST_TIMEOUT_SECONDS
]);
$client->delete(sprintf('/services/%s/%s', $service, gethostname()));
curl -XPOST -H "Content-Type: text/html" -d "this is a log" /services/<service_name>/<host_name>/log
- Example Client PHP codes (with guzzlehttp/guzzle):
$client = new HttpClient([
'base_uri' => self::$serviceUrl,
'timeout' => self::REQUEST_TIMEOUT_SECONDS
]);
$client->post(sprintf('/services/%s/%s/log', $service, gethostname()), [
'headers' => [
'Content-type' => 'text/html; charset=utf-8',
],
'body' => $message
]);
curl -XGET /services
curl -XGET /hosts
curl -XGET /services/<host_name>/services
curl -XGET /services/<service_name>/<host_name>
curl -XGET /services/<service_name>
curl -XGET /services/<service_name>/hosts
curl -XGET /services/<service_name>/<host_name>/logs