每秒请求和Spring休息后端的性能限制

时间:2017-03-21 13:06:03

标签: spring performance rest microservices

我想用tomcat开发一个Spring REST后端应用程序。 我期待1000-5000活跃用户。用户将创建从客户端(Android,Web,Ios)到后端的请求。大多数请求都会创建一个简单的数据库选择。

  • 如何计算每秒请求数限制?
  • 如何估算性能限制?
  • 我应该使用Microservice architecure还是单片?

由于

2 个答案:

答案 0 :(得分:1)

了解用户数量很有用,但这还不够。
至少你应该能够估计在窥视时间内每秒的预期请求数和所需的响应时间。

一旦你知道这一点,了解限制的最安全的方法是对它进行性能测试,无论是从简单的Java程序还是从JMeter这样的程序。
对于典型的tomcat性能,请查看例如对此:how to handle 2000+ requests/sec on tomcat?

通常,Spring REST不会增加很多性能损失,并且您也可以拥有一组tomcat实例,因此瓶颈可能在其他地方,例如:在DB中。

关于微服务问题,从最简单的方法(整体)开始,只要确保你遵循标准的软件开发实践,即有模块和类等。稍后可以转移到微服务,但你应该有这是一个真正的原因,因为它更复杂。

答案 1 :(得分:0)

使用适当的拦截器,你可以做任何你想做的事情。您可以计算线程数(使用静态变量)并每秒重置一次或使用线程来执行此操作。

@Component
public class RequestLoggingInterceptor extends OncePerRequestFilter
{

@Override
protected void doFilterInternal(final HttpServletRequest request, final HttpServletResponse response, final FilterChain filterChain) throws ServletException, IOException {
    final long start = System.nanoTime();
    try {
        filterChain.doFilter(request, response);
    } finally {
        if( _logger.isInfoEnabled() ) {
            final long end = System.nanoTime();
            logger.info(buildMessage(request, end - start));
        }
    }
}

微服务或单点设计符合您的要求。如果您有一个大型应用程序和许多模块,并且您希望这些模块独立工作并且可能具有不同的数据库,那么您可以选择微服务。微服务有很多优点,但只有在需要时才有。对于基本操作,正常单片是好的(如果需要,一个静止项目一个静态资产项目和/或任何其他常见项目。)