consistent-hash | Consistent Hashing tracer bullets
kandi X-RAY | consistent-hash Summary
kandi X-RAY | consistent-hash Summary
Karger et al. introduced the concept of consistent hashing and gave an algorithm to implement it. Consistent hashing specifies a distribution of data among servers in such a way that servers can be added or removed without having to totally reorganize the data. It was originally proposed for web caching on the Internet, in order to address the problem that clients may not be aware of the entire set of cache servers.
Support
Quality
Security
License
Reuse
Top functions reviewed by kandi - BETA
- Inserts a new physical node into the ring ring
- Returns the total number of virtual nodes within the ring
- This method removes the specified physical node from the ring
- Checks if the given physical node is associated with this virtual node
- Returns a string representation of this instance
- Returns the key property
- Returns the total number of physical nodes in the ring ring
- Get the physical node associated with this virtual node
- Returns the MD5 hash of the given string
- Finds a node in the ring
- Returns a String representation of this PhysicalNode
- Returns the total number of virtual nodes in the ring
- Hashes a string
- Returns the key
- Generate a random key
consistent-hash Key Features
consistent-hash Examples and Code Snippets
Community Discussions
Trending Discussions on consistent-hash
QUESTION
I've installed kong-ingress-controller using yaml file on a 3-nodes k8s cluster( bare metal ) (you can see the file at the bottom of question) and every thing is up and runnig:
...ANSWER
Answered 2021-Sep-14 at 12:40Had the same issue, after days of looking for a solution, I came across metallb, from nginx ingress installation on bare metal
MetalLB provides a network load-balancer implementation for Kubernetes clusters that do not run on a supported cloud provider, effectively allowing the usage of LoadBalancer Services within any cluster
, from their documentation I got this
Kubernetes does not offer an implementation of network load balancers (Services of type LoadBalancer) for bare-metal clusters. The implementations of network load balancers that Kubernetes does ship with are all glue code that calls out to various IaaS platforms (GCP, AWS, Azure…). If you’re not running on a supported IaaS platform (GCP, AWS, Azure…), LoadBalancers will remain in the “pending” state indefinitely when created.
I didn't finalize the installation but I hope the explanation above answers your question on pending status on external ip
QUESTION
I make some performance testing of my PoC. What I saw is my actor is not receiving all messages that are sent to him and the performance is very low. I sent around 150k messages to my app, and it causes a peak on my processor to reach 100% utilization. But when I stop sending requests 2/3 of messages are not delivered to the actor. Here is a simple metrics from app insights:
To prove I have almost the same number of event persistent in mongo that my actor received messages.
Secondly, performance of processing messages is very disappointing. I get around 300 messages per second.
I know Akka.NET message delivery is at most once by default but I don't get any error saying that message were dropped.
Here is code: Cluster shard registration:
...ANSWER
Answered 2021-Jan-28 at 17:29So there are two issues going on here: actor performance and missing messages.
It's not clear from your writeup, but I'm going to make an assumption: 100% of these messages are going to a single actor.
Actor PerformanceThe end-to-end throughput of a single actor depends on:
- The amount of work it takes to route the message to the actor (i.e. through the sharding system, hierarchy, over the network, etc)
- The amount of time it takes the actor to process a single message, as this determines the rate at which a mailbox can be emptied; and
- Any flow control that affects which messages can be processed when - i.e. if an actor uses stashing and behavior switching, the amount of time an actor spends stashing messages while waiting for its state to change will have a cumulative impact on the end-to-end processing time for all stashed messages.
You will have poor performance due to item 3 on this list. The design that you are implementing calls Persist
and blocks the actor from doing any additional processing until the message is successfully persisted. All other messages sent to the actor are stashed internally until the previous one is successfully persisted.
Akka.Persistence offers four options for persisting messages from the point of view of a single actor:
Persist
- highest consistency (no other messages can be processed until persistence is confirmed), lowest performance;PersistAsync
- lower consistency, much higher performance. Doesn't wait for the message to be persisted before processing the next message in the mailbox. Allows multiple messages from a single persistent actor to be processed concurrently in-flight - the order in which those events are persisted will be preserved (because they're sent to the internal Akka.Persistence journalIActorRef
in that order) but the actor will continue to process additional messages before the persisted ones are confirmed. This means you probably have to modify your actor's in-memory state before you callPersistAsync
and not after the fact.PersistAll
- high consistency, but batches multiple persistent events at once. Same ordering and control flow semantics asPersist
- but you're just persisting an array of messages together.PersistAllAsync
- highest performance. Same semantics asPersistAsync
but it's an atomic batch of messages in an array being persisted together.
To get an idea as to how the performance characteristics of Akka.Persistence changes with each of these methods, take a look at the detailed benchmark data the Akka.NET organization has put together around Akka.Persistence.Linq2Db, the new high performance RDBMS Akka.Persistence library: https://github.com/akkadotnet/Akka.Persistence.Linq2Db#performance - it's a difference between 15,000 per second and 250 per second on SQL; the write performance is likely even higher in a system like MongoDB.
One of the key properties of Akka.Persistence is that it intentionally routes all of the persistence commands through a set of centralized "journal" and "snapshot" actors on each node in a cluster - so messages from multiple persistent actors can be batched together across a small number of concurrent database connections. There are many users running hundreds of thousands of persistent actors simultaneously - if each actor had their own unique connection to the database it would melt even the most robustly vertically scaled database instances on Earth. This connection pooling / sharing is why the individual persistent actors rely on flow control.
You'll see similar performance using any persistent actor framework (i.e. Orleans, Service Fabric) because they all employ a similar design for the same reasons Akka.NET does.
To improve your performance, you will need to either batch received messages together and persist them in a group with PersistAll
(think of this as de-bouncing) or use asynchronous persistence semantics using PersistAsync
.
You'll also see better aggregate performance if you spread your workload out across many concurrent actors with different entity ids - that way you can benefit from actor concurrency and parallelism.
Missing MessagesThere could be any number of reasons why this might occur - most often it's going to be the result of:
- Actors being terminated (not the same as restarting) and dumping all of their messages into the
DeadLetter
collection; - Network disruptions resulting in dropped connections - this can happen when nodes are sitting at 100% CPU - messages that are queued for delivery at the time can be dropped; and
- The Akka.Persistence journal receiving timeouts back from the database will result in persistent actors terminating themselves due to loss of consistency.
You should look for the following in your logs:
DeadLetter
warnings / countsOpenCircuitBreakerException
s coming from Akka.Persistence
You'll usually see both of those appear together - I suspect that's what is happening to your system. The other possibility could be Akka.Remote throwing DisassociationException
s, which I would also look for.
You can fix the Akka.Remote issues by changing the heartbeat values for the Akka.Cluster failure-detector
in configuration https://getakka.net/articles/configuration/akka.cluster.html:
QUESTION
The examples mentioned to create a Consistent hashing exchange in the RabbitMQ Consistent Hasing Github uses Channel to create exchanges :
...ANSWER
Answered 2020-Jul-27 at 14:36Spring AMQP has no mechanism to declare custom exchanges as @Bean
definitions, but you can use a RabbitTemplate
to get a channel to declare it yourself.
QUESTION
I understand that the exchange type x-modulus-hash
has given its place to x-consistent-hash
. I am trying to deploy an app, the source code for which uses x-modulus-hash
and I can't change it.
Which version of RabbitMQ
should I revert back to? I am deploying the app using the stolon/rabbitmq-ha helm chart. It would be more useful to know the suitable version for this chart.
ANSWER
Answered 2020-Jan-28 at 13:50Alright, my bad! x-modulus-hash
has not been discontinued. It is an exchange type that will be add when the sharding plugin is enabled using the following command:
Community Discussions, Code Snippets contain sources that include Stack Exchange Network
Vulnerabilities
No vulnerabilities reported
Install consistent-hash
You can use consistent-hash like any standard Java library. Please include the the jar files in your classpath. You can also use any IDE and you can run and debug the consistent-hash component as you would do with any other Java program. Best practice is to use a build tool that supports dependency management such as Maven or Gradle. For Maven installation, please refer maven.apache.org. For Gradle installation, please refer gradle.org .
Support
Reuse Trending Solutions
Find, review, and download reusable Libraries, Code Snippets, Cloud APIs from over 650 million Knowledge Items
Find more librariesStay Updated
Subscribe to our newsletter for trending solutions and developer bootcamps
Share this Page