我目前正在研究 memcached 作为协调一组服务器的方式,但在此过程中遇到了Apache 的 ZooKeeper。它看起来很有趣,雅虎使用它,所以应该不错,但我以前从未听说过它,所以我有点怀疑。有其他人尝试过吗?有什么意见或想法吗?
3 回答
ZooKeeper 和 Memcached 有不同的用途。您可以使用 memcached 进行服务器协调,但您必须自己完成大部分工作。Memcached 仅允许协调,因为它缓存了供多个客户端使用的公共数据查找。通过阅读 ZooKeeper 的文档,它的关注点比这要广泛得多。ZooKeeper 似乎提供了对服务器集群的支持,这与 memcached 提供的缓存集群不同。
看看 Brad Fitzpatrick 的关于 memcached 的 Linux Journal文章,可以更好地理解我的意思。
要了解 Zookeper 的功能,请观看其创建者的以下演示。它有更多的功能(创建队列、在一组对等节点中选举主进程、分布式高性能运行时配置、分离进程的集合点、确定进程是否仍在运行等)。
http://zookeeper.sourceforge.net/index.sf.shtml
要回答您的问题,如果您正在寻找“协调”,Zookeeper 比 memcached 更有针对性。
Zookeeper 非常适合跨服务器协调数据。它可以很好地对每笔交易进行排序并保证交易按顺序进行。但是,当第一次闯入它时,文档很烂;这是非常“高级”的,没有足够的具体示例或解释来说明如何正确处理某些事件。包含的示例之一(从 3.3.3 版开始)有它自己的错误。
您的代码还需要了解事件驱动的交互和轮询交互。使用大规模分布式架构,在对“事件”采取行动时,您可能会无意中造成环境不合需要的踩踏事件(羊群效应)。