0.0.3 ā¢ Published 6 years ago
micro-discovery v0.0.3
š° Lightweight service discovery
š§ Work in progress
The place where old-school Service Registry
meets crypto.
Installation
Install from NPM:
$ npm i micro-discovery -S
For yarn
fans:
$ yarn add micro-discovery
Examples
The following examples are designed as simple Micro
handlers. If you aren't familar with Micro
- you definitely must try this goodness.
This basic service registry includes node config, secret keys, and an access control list.
const registry = require('micro-discovery/registry')
module.exports = registry({
// Services list
services: [
{
name: 'weather',
secret: 'weather-secret-token',
endpoint: 'https://weather.now.sh',
acl: ['ghost'],
config: {
weather_apikey: 'ywZOe238yXc4URp'
}
},
{
name: 'media',
secret: 'media-secret-token',
endpoint: 'https://media.now.sh',
acl: ['ghost', 'weather']
},
{
name: 'ghost',
secret: 'ghost-secret-token',
config: {
db_connection_string: 'redis://212.2.32.2:1234',
stripe_apikey: 'sk_test_dfe7v6gfJvad23rfggfdE345'
}
}
],
// Shared config
config: {
statsd_port: 8125,
statsd_host: 'statsd.example.com',
statsd_prefix: '88b9e226-aaea-49cf-ab8034b05552.777'
}
})
Basic weather microservice
const discovery = require('micro-discovery')
const { authorize, config, locate } = discovery('https://your-registry.now.sh', 'weather-secret-token')
module.exports = async (req, res) => {
// Authorize service call.
// Fully synchronous, you even don't need to interact with a registry.
authorize(req)
// Retrieve service configuration
const configuration = await config()
console.log('Config', configuration)
// Service info will contains service endpoint, and temporary token.
const serviceInfo = await locate('media')
console.log('media-service info', serviceInfo)
// fetch(serviceInfo.endpoint, {
// headers: { Authorization: `Bearer ${serviceInfo.token}`}
// })
return {
weather: 'āļø'
}
}