我已经阅读了an article about Distributed Hash Tables
,似乎可以用APC实现像memcache这样的东西。如您所知,如果我们从单个服务器获取密钥,APC比memcache快得多。因此,如果我们分发APC,我们既有性能又有分布。我需要一些想法来启动它。熟悉哈希表的人可以解释一下如何做到这一点吗?如何让APC像memcache一样?
如果您对keyspace partitioning
和Overlay network
有所了解,那会更好。
答案 0 :(得分:1)
尽管表面上两个软件都提供了类似的服务,但它们的基础完全不同,这解释了性能的巨大差异。
APC基本上是一个允许您在共享内存中存储对象(无论是用户对象还是已解析的操作码块)的系统。在我所知道的所有系统中,共享内存在获得指向它的指针后,与本地RAM一样快。
因此,简而言之,APC编写或读取对象所需要做的是:
简单,并考虑到现在的内存带宽是每秒10千兆字节,快速。
由于其在memcache场景中的分布式特性,还需要做更多的工作:
现在,如果我们要分发APC,客户端和服务器将需要相互通信。突然之间,我们发现自己处于一个场景中,除了一些不太重要的细节外,它与memcache使用的场景相同。并且所有昂贵的操作将再次成为必要,即所有复制,包括通过网络堆栈发送。
这也解释了为什么即使在localhost上运行memcache实例,节点之间没有非常缓慢的千兆以太网,也需要做大量的开销才能使分布式系统工作。
这就是为什么我说服你在这里查看错误的嫌疑人,让APC分发并且它将处于相同的性能/吞吐量类别。