[译]Introduction to Concurrency in Spring Boot
当我们使用 spring boot 并发基础当我们考虑
接下来我们会一个一个地解释它们,看看他们是从哪些方面影响我们使用 springboot应用中的最大线程数第一个需要引起注意的就是你正在使用的是有限的线程数量。 如果你使用的是 知道这一点很重要,因为你可能需要增加这个数字以更有效地处理服务提供的资源。在处理外部资源时也会出现问题...... 关于共享外部资源的问题调用数据库和其他REST接口会导致可观的时间开销。 刚刚对于线程数的限制意味着你真的希望避免运行太久的、太慢的、同步的请求。如果你正在等待一些很慢的处理完成而持有线程,那么你很可能没有充分利用服务器。 如果存在很多长时间运行的线程在等待返回,你可能最终会遇到这样一种情况:真正快速、简单的请求等待很长时间,“永远等待”直到被终止。 那么怎么优化这种情况呢? 异步方法调用来拯救一个通常很有用的方法是在一次请求中请求多个数据。理想情况下,如果你需要调用三个服务:A、B和C;你不会希望用以下方式:
如果每个服务需要花费3秒钟返回,那么整个处理过程需要9秒。更好的处理方式应该是这样:
这种方式中,请求三个服务的过程中不需要等待某个服务完成。如果假设A、B、C三个服务没有互相依赖的话,等待返回只需要3秒。 异步和响应式微服务的概念本身就十分有趣。我推荐阅读以下文章:
这些话题都非常引人入胜,但是现在我们继续关注Spring Boot...... 在springboot中使用异步调用你是怎么在 应用该注解之后,就可以在返回 如果利用好了异步执行,在性能上将可以避免很多不必要的坑,让你的服务更快、更好的响应。 对于这方面在springboot中的详细实现我非常推荐这篇文章the example from the official Spring website 共享内部资源虽然前面的部分讨论的是我们通常无法控制的外部资源,但是系统的内部资源却是我们能够完全控制的。 知道这一点后,避免共享资源所导致的问题的最佳建议就是——不要共享他们。 Spring的 其他潜在的共享资源有缓存、自定义的服务器范围组件(通常是监控和安全组件)。 如果你不可避免的需要共享一些状态,我提供如下建议:
总结spring中的并发和多线程是非常重要的话题。在这篇文章中,我想强调一些当你编写springboot应用需要注意的关键领域。如果你想成功地构建高质量、高需求的服务,你需要围绕这个话题做出仔细地考量和权衡。我希望这篇文章能够成为一个很好的入门。 PS:本文翻译自https://www.e4developer.com/2018/03/30/introduction-to-concurrency-in-spring-boot/ (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |