春天内存冷启动

时间:2016-04-24 05:42:18

标签: java spring spring-mvc

我有一个使用Spring Framework构建的REST API,为了提高我的一个端点的性能,我考虑使用内存数据库来加快检索速度。

我需要处理2个案例

  1. 在启动时加载内存数据库(冷启动)

  2. 更新数据

  3. 对于第二个,我考虑使用Spring的调度程序定期更新数据。

    但是对于冷启动,我不知道什么是最好的解决方案,因为加载所有初始数据可能是一个漫长的过程。

1 个答案:

答案 0 :(得分:0)

选择取决于您的SLA。如果您选择在API可用之前完成填充,则您选择牺牲可用性以防止延迟响应。如果您在异步填充数据库时选择使API可用,则在填充数据库时,您将牺牲前几个请求的响应时间。您的SLA中最重要的是哪个?正常运行时间或响应时间?

如果您有一组服务器来表示请求,那么优化正常运行时间没有任何优势,因为运行服务器将处理请求,而服务器会花时间同步填充数据库,如果您异步填充它,您的客户端将会如果刚启动的服务器开始接受请求,则会遇到不必要的延迟。

还要考虑一个数据库是否足够小以适应内存(我知道这只是为了讨论的假设),可能需要很长时间才能加载以产生很大的差异。