理解高负荷应用的概念

理解高负荷应用的概念

因此,我有一个使用 Ruby on Rails 创建高负载应用程序的想法。但是,关于该项目的概念还有一些问题。

主要思想是

Client->Load Balancer -> Server_1 ->Database_1 (Master)
                      -> Server_2 ->Database_2 (Slave)

我知道负载均衡器会分析流量并将其发送到其中一台服务器。它们会调用数据库来检索数据,但我想在这里添加

  1. 查看多层数据的统计服务器。
  2. 允许开发人员与服务器通信的 API 服务器。
  3. 缓存服务器

关于第一项,我认为我也应该将其放在负载均衡器后面,并通过应用程序将重要数据发送给它。我是对的吗?但我不知道应该将 API 服务器放在哪里,因为它应该单独运行。负载均衡器中是否有一些功能允许将请求重新发送到另一台服务器,例如,如果询问了查询api.example.com/get/data/id/1,则将其发送到server_3执行此查询的方法所在的位置?

最后一个问题是关于缓存服务器的。我不太明白例如 azure web-balancer 是如何工作的?它可以解决这个问题吗?还是我应该添加自己的缓存服务器?它应该放在哪里?

PS 我刚刚读了它并尝试构建我的项目的近似图像。

答案1

  1. 正确,您的统计信息收集服务器应完全位于负载均衡器后面。让它直接从服务器使用数据,无论是tail访问日志,还是您专门向其推送数据,或其他任何数据。它与负载均衡器无关。

  2. API 可以与主应用程序共存吗?如果可以,只需在和上安装 API server_1server_2使用不同的绑定,然后让它与其他所有内容进行负载平衡。

    server_1如果 API 不能在或上共存server_2,则将其放在与其他服务器相同的级别(例如,server-3),并在负载均衡器中放置一条规则,以api.example.com仅发送匹配的请求server_3

  3. 我不确定你所说的缓存服务器是什么意思。缓存服务器可能是memcached或 之类的东西redis,在这种情况下它位于你的应用服务器后面。但它也可能是 ,varnish在这种情况下它位于正面负载均衡器。或者,它可能是 Cloudflare 或 Fast.ly 之类的东西,它们位于您的网络之外,位于客户端和负载均衡器之间。

相关内容