【问题标题】:Request per second and performance limit of Spring rest backend [closed]Spring rest后端的每秒请求和性能限制[关闭]
【发布时间】:2017-08-13 04:11:49
【问题描述】:

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

  • 如何计算每秒请求数限制?
  • 如何估算性能限制?
  • 我应该使用微服务架构还是单体架构?

谢谢

【问题讨论】:

    标签: spring performance rest microservices


    【解决方案1】:

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

    @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));
            }
        }
    }
    

    微服务或单体设计可根据您的要求进行。如果您有一个大型应用程序和许多模块,并且您希望这些模块独立工作并且可能有不同的数据库,那么您选择微服务。微服务有很多优点,但前提是你需要它们。对于基本操作,正常的单体是好的(一个休息项目,一个静态资产项目和/或任何其他常见项目,如果需要)。

    【讨论】:

    • 在这个例子中使用执行器是个好主意,您将能够使用端点指标获取每秒的请求。当然,您需要以编程方式增加和减少计数器。
    【解决方案2】:

    了解用户数量很有用,但还不够。
    至少您应该能够估计在 peek time 中每秒的预期请求数和所需的响应时间。

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

    一般来说,Spring REST 不会增加太多性能损失,而且您还可以拥有一个 tomcat 实例集群,因此瓶颈可能在其他地方,例如在数据库中。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-18
      • 2013-12-13
      • 2012-02-02
      • 1970-01-01
      相关资源
      最近更新 更多