如何扩展 Spring 网络服务?
How to scale up Spring webservices?
有哪些不同的方法可用于扩展部署在功能强大的 h/w 节点上的 tomcat 容器中的单个 Web 服务?
克隆 WS 并在容器中部署该 WS 的多个实例并以某种方式平衡它是否有意义(不太可能,因为 Web 服务是一个独特的端点)?或者,应该 tomcat 运行 多个进程在不同的端口上(即使在这里,WS 客户端只有一个 url 可以命中)?
为什么需要扩展?因为单个实例无法完成工作。
有哪些限制因素? CPU、内存、其他资源。
如果您遇到每个进程的限制,例如假设单个 JVM 有最大内存大小,那么在同一台机器上启动另一个 Tomcat 实例可能是有意义的。在那种情况下,正如您所说,您将需要使用不同的端口。根据您的评论,我认为您将此模式称为缩放-up.
您更有可能达到每台机器的限制,只是不够 CPU。在这种情况下,您需要在另一台机器上启动一个新实例。这具有提供额外弹性的额外可能好处。你丢了一台机器,你在别处还有服务运行。你称之为缩放-out.
在任何一种情况下,您都需要在实例前面使用某种形式的 IP sprayer 或负载平衡器,这样您的客户端就不需要 "know" 关于各个集群成员。
我真的看不出这两种情况有什么区别。从客户的角度来看,只需打喷雾器即可。从服务器的角度来看,当向上扩展时,您需要确保资源不会发生冲突。端口是一个明显的例子,但您还需要考虑诸如日志文件之类的东西。通常值得提出一套命名约定和资源结构,这样就很容易识别什么属于什么。
由于正确设置所有这些配置可能容易出错,因此还值得投资编写一些脚本,以便设置实例是一项简单、可重现的任务。
有哪些不同的方法可用于扩展部署在功能强大的 h/w 节点上的 tomcat 容器中的单个 Web 服务?
克隆 WS 并在容器中部署该 WS 的多个实例并以某种方式平衡它是否有意义(不太可能,因为 Web 服务是一个独特的端点)?或者,应该 tomcat 运行 多个进程在不同的端口上(即使在这里,WS 客户端只有一个 url 可以命中)?
为什么需要扩展?因为单个实例无法完成工作。
有哪些限制因素? CPU、内存、其他资源。
如果您遇到每个进程的限制,例如假设单个 JVM 有最大内存大小,那么在同一台机器上启动另一个 Tomcat 实例可能是有意义的。在那种情况下,正如您所说,您将需要使用不同的端口。根据您的评论,我认为您将此模式称为缩放-up.
您更有可能达到每台机器的限制,只是不够 CPU。在这种情况下,您需要在另一台机器上启动一个新实例。这具有提供额外弹性的额外可能好处。你丢了一台机器,你在别处还有服务运行。你称之为缩放-out.
在任何一种情况下,您都需要在实例前面使用某种形式的 IP sprayer 或负载平衡器,这样您的客户端就不需要 "know" 关于各个集群成员。
我真的看不出这两种情况有什么区别。从客户的角度来看,只需打喷雾器即可。从服务器的角度来看,当向上扩展时,您需要确保资源不会发生冲突。端口是一个明显的例子,但您还需要考虑诸如日志文件之类的东西。通常值得提出一套命名约定和资源结构,这样就很容易识别什么属于什么。
由于正确设置所有这些配置可能容易出错,因此还值得投资编写一些脚本,以便设置实例是一项简单、可重现的任务。