SSE 或 Websockets 或 AJAX - 服务器负载
Posted
技术标签:
【中文标题】SSE 或 Websockets 或 AJAX - 服务器负载【英文标题】:SSE or Websockets or AJAX - Server Load 【发布时间】:2021-05-29 10:03:10 【问题描述】:我是初学者/中级程序员,这是我的第一篇文章。
我已经开始了一项正在蓬勃发展的业务。 在构建这个业务时,我几乎学习了 php、javascript 和 mysql,而现在,一年后,由于代码混乱/糟糕,我正处于重做这一切的地步。
我遇到的问题(如果它甚至是一个问题)是我们发送的 AJAX 请求的数量,以及它对服务器施加的潜在负载。 我有 80 台平板电脑和 20-40 部手机每 30-60 秒发送一次 AJAX 请求,这还不包括我们正在使用站点/webapp 的实际客户。
我们的平板电脑/手机每 60 秒发送一次请求以检索所有激活订单。 (无论变化如何,它都会回显数据 --- 而目前我实际上是在回显完整的 div 和标记,显然我会对其进行更改,以便客户端处理)。
我一直在研究服务器端事件,因为我们希望有更多类似 LIVE 的更新,但我不太明白如何触发发送事件,它实际上更有效。
根据我的研究,我必须每隔几秒检查一次数据库以查看数据是否更改(如果数据未更改,则必须将当前数据保存在内存中以与新数据进行比较在下一个循环中)。
或者我只是每 10 秒发送一次 ajax 请求?什么更有效/可扩展?我需要切换到服务器端的 node.js 吗? (我确实喜欢 PHP 的简单性)
或者也许是 websocket?我不太了解它。
我们有一个四核 Xeon VPS CPU 的使用率似乎主要在 10-20%,在繁忙时间偶尔会达到 80% 的使用率。 我们的 CPU 负载在 15 分钟内平均约为 2.5 - 3.5,但我偶尔会看到 7-8。
老实说,我对做出任何决定的理解还不够,所以我希望得到一些意见/建议。
向我传道……然后走吧!
【问题讨论】:
您好,欢迎来到 Stack Overflow!这是一个致力于编程相关主题的社区。请阅读:***.com/help/on-topic。有关技术或架构的建议,请访问softwarerecs.stackexchange.com。祝你有美好的一天! 【参考方案1】:使用 websockets 进行广播,使用 REDIS 缓存数据。最好使用 Laravel - 一切都已经存在。
【讨论】:
以上是关于SSE 或 Websockets 或 AJAX - 服务器负载的主要内容,如果未能解决你的问题,请参考以下文章
在没有ajax的情况下更新数据或在网络选项卡中记录请求 - Websockets
Long-Polling, Websockets, SSE(Server-Sent Event) 之间有什么区别?
How Javascript works (Javascript工作原理) 深入理解 WebSockets 和带有 SSE 机制的HTTP/2 以及正确的使用姿势