采访问题:你如何扩展或优化接收数百万请求的微服务



在一次面试中,有人问我一个问题:如何优化接收数百万请求的微服务?您如何优化多次访问的服务响应的延迟/频率?

我的回答是:我会检查导致响应缓慢的DB查询,然后配置缓存。

有人能告诉我除了这些之外,还有什么方法可以优化服务吗?如果有什么云的一面?

这是一个庞大而复杂的问题,根据环境的上下文和结构,可能会有很多不同的(非常长的(答案。

有很多模式和概念适合不同的场景和体系结构。

我建议你从这里开始:https://microservices.io/patterns/index.html

该网站背后的人(Chris Richardson(长期以来一直倡导微服务。你可以在Youtube上找到很多关于这个家伙的话题。这是开启微服务世界之旅的好方法。

当然:https://martinfowler.com/articles/microservices.html

以下是我对这个问题的看法:

  • 正如您所提到的,在数据访问层周围,缓存是一个很好的优化点。我会检查一下是否有机会在不破坏一致性或应用程序的其他硬性要求的情况下添加缓存
  • 我会分析CPU和内存的使用情况,并在密切监控延迟的同时逐步调整它们。这里的目标是找到更多资源不会显著降低延迟的点
  • 以上这一点必须考虑应用程序中线程数量的调整,并确保优化同步方案
  • 如果微服务是用基于JVM的语言构建的,GC是一个可能引入延迟的组件,主要是在它启动时,所以如果延迟峰值与GC周期相关,那么我会在那里搜索优化
  • 确保应用程序有效地重用与外部服务的连接是另一个可以考虑的优化点

最新更新