我想从网站收集一些用户操作,该网站会在大多数页面访问时向跟踪服务器发送AJAX请求,然后提取相关数据结构并将其写入某些数据库表。 由于网站运行负载很重(特别是圣诞节前),因此有很多相关页面的视图,这会导致向跟踪服务器发出许多请求。
如果请求进来并且我立即将数据写入数据库,我肯定会遇到麻烦,例如。
然而,优点是我不需要关心同步。
因此,我想收集一批数据(例如100个对象)并将它们发送到数据库以取消一些负载。这解决了上述问题,因为
问题是我现在需要正确地同步底层缓冲机制。由于跟踪服务器和数据库在同一台服务器上运行,因此这将大大提高整体性能。
我正在寻找Java 8的一些类或库,它可以以FIFO方式缓冲对象,并在达到某个最小大小时自动将它们写入数据库。 该库应该能够尽可能快地处理并发,因为可能会发生两个项目同时存储到缓存中。
你知道这样一个库我可以自己连接我的持久层还是只使用JDBC?
我最好的猜测是我可以使用它的味道
java.util.concurrent.BlockingQueue
,例如LinkedBlockingQueue.drainTo(Collection, maxElements)
与计时器结合使用,该计时器定期轮询队列的长度。有人有更好的建议吗?