【问题标题】:How do you architect an application like Firebase?您如何构建像 Firebase 这样的应用程序?
【发布时间】:2023-03-18 02:18:01
【问题描述】:

假设您正在创建一个网站(例如 Facebook)。您编写代码,将其部署在服务器上,并随着负载的增加而增加服务器。这些服务器位于负载平衡器后面,请求几乎可以随机发送到任何服务器。

但是假设您正在制作像 Firebase 这样的东西。现在在 firebase 上,您可以创建一个 application,并获得一个子域 <app_name>.firebase.com。虽然所有应用程序的服务器代码仍然相同,但对app1.firebase.com 的请求将转到专用服务器集,与app2.firebase.com 不同。因此,从一个应用程序加载,不能影响另一个应用程序,因为它应该是。


像 Firebase 这样的东西是如何设计的,更具体地说,为了限制问题的范围,如何将请求路由到每个 application 的特定主机集?

【问题讨论】:

  • 非常有趣的问题,但不幸的是也非常广泛(因此可能超出了 Stack Overflow 的范围)。如果您对某个特定部分感兴趣(例如如何将连接直接连接到正确的服务器),您可能最好编辑您的问题以将范围限制在该部分。
  • @FrankvanPuffelen 我已将问题范围缩小到请求路由。
  • @FrankvanPuffelen 我已经开始在这个问题上悬赏!考虑到你的工作,你或许可以在这里提供一个权威的答案。谢谢!
  • 您在寻找反向代理吗? stackoverflow.com/questions/10273291/…

标签: web-applications architecture firebase load-balancing


【解决方案1】:

通常,您所称的“应用程序”实际上是子域或虚拟主机。这是通过一些技术栈完成的。

首先,您需要子域的 DNS 记录。所以 app.somedomain.com 必须有一个可在 Internet 上解析的 IP 地址,并创建一个指向该子域的别名记录(或 A 记录)。完成后,您可以配置 Web 服务器,通常是 apache 或 nginx,以通过所谓的虚拟主机处理子域。您应该查阅每种技术的特定文档,但对于 apache 服务器,其最基本的配置如下所示:

<VirtualHost *:80>
   ServerName app.somedomain.com
   ServerAdmin webmaster@app.somedomain.com
   DocumentRoot /var/www/app.somedomain.com/
</VirtualHost>

【讨论】:

  • 我认为在 Firebase 之类的情况下不会涉及任何基于文件的手动配置。
  • 我不使用 Firebase,但这就是其他互联网的工作方式,
猜你喜欢
  • 1970-01-01
  • 2014-05-23
  • 2013-12-29
  • 1970-01-01
  • 2014-08-11
  • 2012-07-03
  • 2018-04-06
  • 2018-12-18
  • 2012-07-21
相关资源
最近更新 更多