使用 Tomcats(在 apache-tomcat 集群中)作为后面 apache 服务器的反向代理

发布于 2024-08-07 22:30:19 字数 585 浏览 9 评论 0 原文

我正在编写一个小型网络服务(如内容服务器)来搜索和提供内容。基本上它有两部分 - 一个动态部分执行客户端身份验证并提供内容搜索功能。第二部分涉及向经过身份验证的客户端提供静态内容。

就性能和可扩展性而言,对于上述服务来说,什么是一个好的架构?

  1. 仅使用应用程序服务器(tomcat)来完成这两个任务?
  2. 但后来我听说 apache 更擅长提供静态内容,具有简单的可配置选项,例如压缩内容。那么如何使用 Tomcat 作为反向代理(使用 j2ep、noodle..)到后面的 apache Web 服务器。 Tomcat 可以进行身份​​验证和搜索,而后面的 apache 服务器可以提供内容。
  3. 但 Tomcat 作为单点接触点,可能会成为性能瓶颈。那么为什么不再次使用 apache tomcat 集群来平衡整个设置的负载呢?

基本上我正在研究一个 apache-tomcat 集群,其中每个 tomcat 充当后面一组 apache 服务器的反向代理。这样设置可以吗?以前有人这样做过吗?我确实对此进行了搜索,但找不到任何指示。如果可能的话,这种架构有什么潜在的缺点吗?

如果这是一个糟糕的选择,那么使用此网络服务的正确方法是什么?

I'm writing a small web service(like a content server) to search and serve content. Basically it has 2 parts - one dynamic part performing client authentication and providing search functionality over the content. The second part involves serving static content to the authenticated client.

What can be a good architecture for the above service in terms of performance and scalability?

  1. Just using an application server(tomcat) to do both?
  2. But then I hear apache is better at serving static content having easy configurable options like compressing content. So how about using Tomcat as reverse proxy(using j2ep, noodle..) to apache web servers behind. Tomcat can authenticate and search while the apache servers behind can serve the content.
  3. But Tomcat being the single point of contact, can become a performance bottle neck. So why not use the apache tomcat clustering again to balance load on the entire set up?

Basically I'm looking at a apache-tomcat cluster where each tomcat acts as reverse proxy to a set of apache servers behind. Is this set up possible? Has anyone done this before? I did search on this but unable to find any pointers. If it is possible, are there any potential disadvantages in this architecture?

In case if it is a bad option, what would be the right way to go for this web service?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

余生再见 2024-08-14 22:30:19

首先,我将使用 tomcat 来处理静态和非静态内容。
tomcat(据我所知,从版本 5 开始)在静态内容服务方面也做得很好。
但如果这对您来说效果不佳,那么我建议您使用 Apache httpd 作为前端服务器,并在其后面使用 tomcat。
我已经使用了 mod_jk 并且 JKMount 指令可以告诉 apache 什么是转发到 tomcat 的调用。因此,与 JKMount 指令不匹配的内容由 Apache httpd 本身处理。因此,您的静态内容可以由 httpd 提供服务,而非静态请求将定向到 tomcat。根据负载情况,您可以拥有多个 tomcat。

但您需要注意如何对静态内容请求进行身份验证。

为了能够扩展,在实际内容及其访问之间引入一定程度的间接性。就像可以从任何地方获取内容的句柄一样。因此,您可以在地理分布的许多位置复制静态内容(或使用 CDN)

希望这会有所帮助。

To start with I would use tomcat for both static and non static content.
tomcat ( from version 5 AFAIK ) has done well in static content serving as well.
But if this is not performing well for you then I suggest that you have Apache httpd as the frontending server and tomcat behind it.
I have used mod_jk and the JKMount directive can tells apache what are calls to be forwarded to tomcat. So the stuff that doesnt match the JKMount directive are handled by Apache httpd itself. So your static content can be served by httpd and the non-static requests are directed to tomcat. You can have multiple tomcats depending on the load.

But you need to be careful as to how the static content request will be authenticated.

To be able to scale, introduce a level of indirection between the actual content and its access. Like a handle to a content which could be obtained from anywhere. So you could replicate your static content in many locations distributed geographically ( or use CDN )

Hope this helps a bit.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文