我们有一个在Glassfish应用服务器集群上运行的基于 Java EE 的 Web 应用程序。传入的流量主要是对我们应用程序资源的基于 XML 的表示的 RESTful 请求,但可能有 5% 的流量可能是基于 JSON 或 XHTML/CSS 的表示。
我们现在正在研究负载平衡解决方案,以在集群中的 Glassfish 实例之间分配传入流量。我们还在研究如何使用 memcached 卸载集群,memcached 是一种内存分布式哈希映射,其键是 REST 资源名称(例如,“/user/bob”、“/group/jazzlovers”),其值为相应的 XML 表示。
一种听起来很有希望的方法是用一块石头杀死两只鸟,并使用轻量级、快速的nginx HTTP 服务器/反向代理。Nginx 将通过首先在 memcached 中查找其 URI 来处理每个传入请求,以查看是否已经存在未过期的 XML 表示。如果没有,nginx 会将请求发送到 Glassfish 实例之一。这篇简短的文章中描述了 nginx memcached 模块。
你对 nginx 和 memcached 这样使用的总体印象如何,你对它们有多满意?您发现哪些资源对了解它们最有帮助?如果您尝试了它们并且它们不适合您的目的,为什么不呢?您改用了什么?
注意:这是一个相关的问题。在我知道 ServerFault 之前,我在StackOverflow上问过这个问题。
编辑:到目前为止,这里的所有答案都非常有帮助,尽管没有直接的经验。这个答案最终确实出现在 StackOverflow 上,并且非常看好 nginx/memcached 设置。