作为我们不断努力改善 Squarespace 平台用户
Posted: Wed Dec 11, 2024 7:23 am
体验的一部分,我们添加了一项功能,可在帐户选择器中显示您帐户的所有网站的缩略图预览。
由于我们没有任何现有的屏幕截图生成功能,因此我们必须从头开始构建。在这篇文章中,我们将讨论我们提出的屏幕截图微服务解决方案。
查看完整尺寸
为什么是微服务?
我们很早就决定将此功能作为微服务来实现,而不是核心 CMS 应用程序内的附加组件。随着我们向面向服务的架构迈进,产品中的新功能通常被视为独立服务的潜在候选者。对于屏幕截图生成,有两个明显的驱动因素:
独立扩展系统这一部分的能力非常重要,因为需 萨尔瓦多 whatsapp 电话号码列表 求和负载可能会随着时间而改变。
此功能与系统的其余部分很好地分离,并且不依赖于任何内部模型。
设计
硒
一开始做出的另一个决定是使用 Selenium + Firefox 作为捕获屏幕截图的工具。经过一些 这方面的工作,我们得出结论,要可靠地生成准确的屏幕截图(如在真实浏览器中所见),唯一的方法是使用真实浏览器来呈现它们。我们还得出结论,Selenium 框架是浏览器自动化的可靠解决方案,可以使用 docker-selenium 环境轻松部署。
消息传递
到目前为止,我们已经确定该服务将使用 Selenium 按照 Squarespace CMS 应用程序的指示生成屏幕截图。下一个设计决策是关于与系统其余部分的接口。
我们生态系统中现有的所有服务都是 RESTful,可以同步处理 HTTP 请求,并且延迟低。但是,处理屏幕截图请求需要整个浏览器会话。这意味着 CPU 和内存负载会大得多,延迟也会高出几个数量级。
由于我们没有任何现有的屏幕截图生成功能,因此我们必须从头开始构建。在这篇文章中,我们将讨论我们提出的屏幕截图微服务解决方案。
查看完整尺寸
为什么是微服务?
我们很早就决定将此功能作为微服务来实现,而不是核心 CMS 应用程序内的附加组件。随着我们向面向服务的架构迈进,产品中的新功能通常被视为独立服务的潜在候选者。对于屏幕截图生成,有两个明显的驱动因素:
独立扩展系统这一部分的能力非常重要,因为需 萨尔瓦多 whatsapp 电话号码列表 求和负载可能会随着时间而改变。
此功能与系统的其余部分很好地分离,并且不依赖于任何内部模型。
设计
硒
一开始做出的另一个决定是使用 Selenium + Firefox 作为捕获屏幕截图的工具。经过一些 这方面的工作,我们得出结论,要可靠地生成准确的屏幕截图(如在真实浏览器中所见),唯一的方法是使用真实浏览器来呈现它们。我们还得出结论,Selenium 框架是浏览器自动化的可靠解决方案,可以使用 docker-selenium 环境轻松部署。
消息传递
到目前为止,我们已经确定该服务将使用 Selenium 按照 Squarespace CMS 应用程序的指示生成屏幕截图。下一个设计决策是关于与系统其余部分的接口。
我们生态系统中现有的所有服务都是 RESTful,可以同步处理 HTTP 请求,并且延迟低。但是,处理屏幕截图请求需要整个浏览器会话。这意味着 CPU 和内存负载会大得多,延迟也会高出几个数量级。