我们有一个在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.com 上问了同样的问题。那里的答案主要是建议替代 nginx (有帮助,但间接)。