考虑到这一点,控制负载的最佳方法是

Collaborative Data Solutions at Canada Data Forum
Post Reply
rumiseoexpate5
Posts: 56
Joined: Wed Dec 11, 2024 3:56 am

考虑到这一点,控制负载的最佳方法是

Post by rumiseoexpate5 »

分配固定数量的处理节点(Selenium Node 实例),并让每个节点通过从队列中提取新请求来管理自己的工作负载。

因此,这将成为我们的第一个异步、基于消息的微服务。

更新逻辑
另一个未解答的问题是我们应该如何更新屏幕截图——什么应该触发请求以及请求的频率应该是多少。我们希望屏幕截图尽可能是最新的,但更新频率太高会导致请求队列失控。

理想的系统会在合理的时间内处理请求,并在高峰时段充分利用队列作为缓冲区。

这最终变成了一种平衡行为。我们必须选择一种 萨尔瓦多 whatsapp 电话号码列表 更新策略,让屏幕截图保持最新,并在服务中配置足够的硬件来处理平均请求率。

在对用户事件数据进行分析后,我们决定采用以下策略:根据帐户选择器前端的要求,按需安排屏幕截图更新。这还结合了一些节流逻辑,以限制给定时间段内的更新次数。

Image

执行
截图流程如下:

用户请求由 Site Server(Squarespace Web 服务器)应用程序处理。如果 Site Server 决定某个网站需要刷新其屏幕截图,它会更新 MongoDB 应用程序数据库中相应的 ScreenshotData 文档。

辅助服务器(我们用于运行批处理作业的系统)会定期从数据库中提取所有标记为更新的网站,并通过一些控制节流的调度程序逻辑来提供这些网站。这会导致屏幕截图请求进入 Kafka 请求队列。

请求队列的另一端是服务节点。每个节点运行一个 Selenium Hub实例,以及多个 Selenium Node 实例(每个实例运行一个浏览器会话)。

查看完整尺寸

截图服务架构

在服务节点中,截图请求的处理方式如下:

验证请求参数:网站 URL、图像和浏览器尺寸。

向 Selenium 发送浏览器调整大小、加载页面和保存屏幕截图命令。

根据要求的图像尺寸调整截图图像的大小。

使用请求的storageId将图像数据写入NFS。

当前端请求截图时,Site Server会根据websiteId获取ScreenshotData文档,并使用storageId从NFS中读取文件。
Post Reply