
Security News
Deno 2.2 Improves Dependency Management and Expands Node.js Compatibility
Deno 2.2 enhances Node.js compatibility, improves dependency management, adds OpenTelemetry support, and expands linting and task automation for developers.
Sync your request to the same node with frodo.
Frodo.io uses etcd and hashring to provide you with a server by some key.
Simple use case: clustered database that accessed by a clustered layer that wraps it. The changes on an entity should go through the same server to prevent inconsistency.
Start with npm i frodoio --save
Simple test app that register servers and then uses them to get id would be:
var Frodo = require('frodoio');
var frodo = new Frodo({ context: 'appname', etcdServers: [ { host: '127.0.0.1', port: 4001 } ]});
Q.all(frodo.addServer('dataacess1:3030'),
frodo.addServer('dataacess2:3030'),
frodo.addServer('dataacess3:3030')).then(function () {
frodo.serverById(id).then(function (server) {
request.put('http://' + server + '/entity');
});
});
But this application does not make any sense, because you probably want to addServer from the server and run serverById from the client.
Server:
var Frodo = require('frodoio');
var frodo = new Frodo({ context: 'appname', etcdServers: [ { host: '127.0.0.1', port: 4001 } ]});
// http://stackoverflow.com/questions/3653065/get-local-ip-address-in-node-js
var ip = _.chain(require('os').networkInterfaces()).flatten().filter(function(val){ return (val.family == 'IPv4' && val.internal == false) }).pluck('address').first().value();
var me = ip + ':3030';
function start(done) {
frodo.addServer(me).then(done);
}
function stop(done) {
frodo.removeServer(me).then(function () {
frodo.close().then(done);
});
}
Client:
var Frodo = require('frodoio');
var frodo = new Frodo({ context: 'appname', etcdServers: [ { host: '127.0.0.1', port: 4001 } ]});
frodo.serverById(function (server) {
request.put('http://' + server + '/entity');
});
frodo
{ host: <host>, port: <port> }
. The default port if not set is 4001, the default host if not set is localhost.true
if you wish to init later (manually)Initialze the library, this function need to be called manually only if lazy is set to true.
Adding a server to frodo. Available options are:
server
key, if not set, the default is the process id.Removing a server from frodo. Available options are:
addServer
), if not set, the default is the process id.server
key.Getting the servers that are in frodo cache.
Retrieving the server for the id, the return value is always the same if there is no change in servers list.
Closing the connection to etcd.
Apache
FAQs
Node.js library for distributing requests in a ring of servers
The npm package frodoio receives a total of 3 weekly downloads. As such, frodoio popularity was classified as not popular.
We found that frodoio demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 2 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Deno 2.2 enhances Node.js compatibility, improves dependency management, adds OpenTelemetry support, and expands linting and task automation for developers.
Security News
React's CRA deprecation announcement sparked community criticism over framework recommendations, leading to quick updates acknowledging build tools like Vite as valid alternatives.
Security News
Ransomware payment rates hit an all-time low in 2024 as law enforcement crackdowns, stronger defenses, and shifting policies make attacks riskier and less profitable.