Comments (2)
initialize the _lastNodeIndex of the EtcdClient with a random selected node from the node list.
This sounds like a better idea.
from dotnet-etcd.
The changes made will now always use random to pick a new node but I was expecting that we would only use random for the initial start node and use the increase by one method after selecting the first node.
Given a 3 node cluster.
For this cluster we start 5 clients. The clients will create a number of streams over their lifetime:
- Will start 21 streams
- Will start 10 streams
- Will start 19 streams
- Will start 1 stream
- Will start 3 streams
The solution before this change would have the following behaviour:
- 1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3
- 1,2,3,1,2,3,1,2,3,1
- 1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3
- 1
- 1,2,3
with the disadvantage that it would always start on node 1 given this more load but after the initial selection of node 1 it would spread the load even over the rest of the nodes
The solution as it is implemented now only checks if the selected node differs from the node it was currently using, given the following hypothetical behaviour since random is used:
- 2,1,2,3,1,2,1,2,1,2,1,2,3,2,1,3,1,2,3,2,3,1
- 1,2,1,3,2,3,1,2,1,3
- 2,3,1,3,2,3,2,1,3,1,3,1,2,1,3,2,3,1
- 3
- 1,3,1
Not giving a disadvantage to node 1, but not guaranteeing an even spread of the load since the random function in combination with the rule that the node must change could render series like: 1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1 not selecting node 2 for a long time. We can expect each node to be selected about the same number of times over a long period but in short selections of the series this not guaranteed.
The solution that I wanted to describe is only selecting the first node using the random function and using +1 after the initial selection would give the following series:
- 1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3
- 3,1,2,3,1,2,3,1,2,3
- 2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1
- 2
- 3,1,2
This prevents node 1 from being over represented in the selection but will guarantee an even spread over the nodes after selecting the first node.
from dotnet-etcd.
Related Issues (20)
- Support IConfiguration and DI
- Exception type when cancelling async operations HOT 4
- Prefix request with Limit HOT 2
- How to read past version of keys HOT 2
- add separated community contrib project or repo HOT 1
- GrpcChannelOptions parameter configuration HOT 2
- Lock permission denied HOT 5
- Possible NullReference HOT 3
- Add optional ExceptionHandler in LeaseKeepAlive HOT 1
- Invalid port specified HOT 1
- method name is misspelled HOT 1
- Cannot use constructor EtcdClient(string) anymore HOT 1
- Exception while opening a watch on etcd grpc-proxy
- Watch stops listening to changes after server restart HOT 3
- IClusterProvider I need to implement this interface. HOT 2
- Failing to initiate with ambiguous and crashing with this exception 6.0.2-beta
- lock error HOT 2
- missing Election request HOT 1
- Switch to license expression
- new EtcdClient Expected,Please give more Example to new player HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from dotnet-etcd.