带哈希的elixir简单nosql数据库

带哈希的elixir简单nosql数据库,elixir,Elixir,我正在用elixir编写一个非常简单的分布式缓存(只是一个PoC,没有什么真正重要的)。 想法很简单,我有n个节点(每个节点包含一个区域或缓存分区)和1个orchestrator节点。 每个请求都会发送到orchestrator,orchestrator会选择一个节点(基于键)并将其写入。 也就是说:若req是一个PUT,orchestrator计算一个节点并写入它; 若req是GET,则orchestrator计算该键应该在哪里,并从该节点读取。 总体而言,该系统正在运行。我还为orchest

我正在用elixir编写一个非常简单的分布式缓存(只是一个PoC,没有什么真正重要的)。 想法很简单,我有n个节点(每个节点包含一个区域或缓存分区)和1个orchestrator节点。 每个请求都会发送到orchestrator,orchestrator会选择一个节点(基于键)并将其写入。 也就是说:若req是一个PUT,orchestrator计算一个节点并写入它; 若req是GET,则orchestrator计算该键应该在哪里,并从该节点读取。 总体而言,该系统正在运行。我还为orchestrator层实现了一个故障切换/接管方案

我的问题是: 选择节点的函数是完全无状态的(不需要以前的状态,因为我使用的是基于[hash mod n]的算法,显然给定了相同的键,总是返回相同的节点)。 也就是说,每个请求都是完全独立的。 在iex中,我可以生成1000个进程并并行执行put/get请求,正如我在节点选择完全无状态之前所说的(例如,asume 500将执行“get”请求,500将执行“put”请求)

然而,我不是100%肯定这个计划

我是否需要通过一个中间进程来序列化req,该中间进程接收req,从给定节点获取/放入req,并回复客户机

如果我这样做,我会把这个过程变成一个瓶颈,但另一方面,我会确保“正确”的顺序访问

在我的实际方案中,每个请求都是相互独立的(可能是),因此访问不是顺序的